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
Poprawiłem treść wiadomości, dodałem znaczniki [code]
[zumek]
i nie wiem co jest nie tak, w tej linijce
.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]
