Jestem początkujący jeśli chodzi o mikrokontrolery AVR. Znam dobrze natomiast '51. Chcę napisać program naprzemiennie gaszący i zapalający diodę LED. Dioda jest podpięta katodą do linii portu, anoda przez rezystor do +5V. W związku z tym dioda jest sterowana zerem. Poniżej przedstawiam mój kod. Częstotliwość zegara wynosi 16MHz.
Mam pytanie jak duże w tym programie jest opóźnienie wnoszone przez podprogram delay2 ? Czy wystarczające do zauważenia migotania diody ?
.nolist
.include "m8def.inc"
.list
.cseg
.org 0
rjmp begin
delay1:
ldi R16, 0
del1:
inc R16
brne del1
ret
delay2:
ldi R17, 0
del2:
rcall delay1
inc R17
brne del2
ret
delay3:
ldi R18, 0
del3:
rcall delay2
inc R18
brne del3
ret
begin:
ldi R17, high(RAMEND) ;inicjalizacja stosu
ldi R16, low(RAMEND)
out SPH, R17
out SPL, R16
ldi R20,0xFF
out DDRB,R20
out PORTB,R20 ;dioda zgaszona i port ustawiony jako wyjście
petla_glowna:
rcall delay3
in R20, PORTB
com R20
out PORTB, R20
rjmp petla_glowna
Mam pytanie jak duże w tym programie jest opóźnienie wnoszone przez podprogram delay2 ? Czy wystarczające do zauważenia migotania diody ?