Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

tinny 26 asembler początkujący problem z programem

12 Lut 2009 15:53 798 1
  • Poziom 11  
    Chodzi mi o linijkę zaznaczoną gwiazdkami. Kompilator wyrzuca mi błąd takiej treści error: Undefined symbol: SPL
    i nie wiem co jest nie tak, w tej linijce
    Code:

    .include "2313def.inc"
    .def acc = r16 ; nadanie rejestrowi r16 nazwy symbolicznej
    .cseg
    .org 0x00

    ldi acc, 0b11111111 ; załaduj do acc liczbę 255 (0xff)
    out DDRB, acc ; wpisanie do DDRB samych jedynek
    ; powoduje ustawienie pinów jako wyjście
    out PORTB, acc

    ldi acc, 0b1111100 ;
    out DDRD, acc ; piny D0 i D1 są ustawione jako wejścia
    ; pozostałe jako wyjścia
    ldi r16, 0b1110111
    out PORTD, acc

    ldi acc, 127 ;
    out SPL, acc ; ustawienie wskaˇnika stosu na 127 *****************

    sprawdz_klawisze:
    sbis PIND, 0 ; jeśli przycisk S1 nie jest wciśnięty
    ; to pomiń następną instrukcję
    rcall led ; w przeciwnym wypadku wywołaj procedurę
    ; zapalającą diodę
    rjmp sprawdz_klawisze ; powróć na początek sprawdzania klawiszy

    led:
    cbi PORTB, 7 ; zapal kropkę wyświetlacza
    ldi acc, 250 ; załaduj do acc czas opóˇnienia
    rcall waitms ; i wywołaj procedurę opóˇniającą
    rcall waitms ; czterokrotne wywołanie opóˇnienia
    rcall waitms ; 250ms da w sumie opóˇnienie ok 1s
    rcall waitms ;
    sbi PORTB, 7
    ret

    ; Przybliżone czasy opóźnień są podane dla
    ; rezonatora 4MHz
    .def licz1 = r20
    .def licz2 = r21
    .def licz3 = r22
    waitms:
    mov licz3, acc ; ustaw czas opóĽnienia
    ; powtórz n razy pętlę L,
    ; co da opóˇnienie ok. n * 1 ms
    L:
    ; powtórz 10 razy pętlę L0,
    ; co da opóĽnienie ok 1ms
    ldi licz2, 10
    L0:
    ; powtórz 100 razy pętlę L1,
    ; co da opóĽnienie ok. 100 us
    ldi licz1, 100
    L1:
    nop ; 1 cykl
    dec licz1 ; 1 cykl
    brne l1 ; 2 cykle
    ; koniec pętli L1
    dec licz2
    brne l0
    ; koniec pętli L0
    dec licz3
    brne L
    ; koniec pętli L
    ret


    Poprawiłem treść wiadomości, dodałem znaczniki [code]
    [zumek]
  • Poziom 39  
    W temacie ATTiny26, a inkludujesz ATTiny2313. Poza tym, ATTiny26 nie posiada rejestru SPL, więc skąd on się wziął w kodzie :?:
    Sprawdź w dokumentacji ATTiny26 i po kłopocie.

    PS
    Portu "D" w ATTiny26, też nie uświadczysz ;)