Witam, zaczynam przygodę z assemblerem wcześniej pisałem programy w języku C i szło mi 100x sprawniej...Chciałem na początek napisać programik który migałby diodę LED. Jednak nie działa procedura opóźnienia. Zapętla się w nieskończoność w miejscu
cały program wygląda tak:
Zapętlenie widać podczas śledzenia pracy debugger'a. Z góry dzięki za pomoc i pozdrawiam
DELAY_LOOP3:
NOP
NOP
NOP
DEC R18
BRNE DELAY_LOOP3
cały program wygląda tak:
.include "m32def.inc"
.list
.cseg
.org 0
.equ OPOZNIENIE = 0x20
reset:
cli ; zablokowanie przerwań
ldi r16,LOW(RAMEND) ; inicjacja stosu
out SPL,r16 ; programowego
ldi r16, 0xFF
petla:
ldi r16, 0b00000001
out PORTA, r16
call DELAY
ldi r16, 0x00
out PORTA, r16
call DELAY
rjmp petla
DELAY:
ldi R20, OPOZNIENIE
DELAY_LOOP1:
ldi R19, $FF
DELAY_LOOP2:
ldi R18, $FF
DELAY_LOOP3:
NOP
NOP
NOP
DEC R18
BRNE DELAY_LOOP3
DEC R19
BRNE DELAY_LOOP2
DEC R20
BRNE DELAY_LOOP1
RET
.exit
Zapętlenie widać podczas śledzenia pracy debugger'a. Z góry dzięki za pomoc i pozdrawiam
