Witam
Programowałem trochę w bascomie swego czasu i tam opóźnienie wprowadzało się bardzo prosto - wait x i już..
O co mi chodzi. Mam zrobić pragramik [na symulatorze], który stan wciśnięty przyciskami na porcie D wyświetla na LED na porcie B. Wszystko by było fajnie gdyby nie to, że to świecenie ma trwać 2 sekundy i dioda ma zgasnąc [a jeśli przycisk w ciągu tych 2 sek był ponownie wciśnięty to znów dolicza 2 sek itd]. No i tutaj jest mój problem. Dużo się już o tym naczytałem. Raz robiono to za pomocą pętli delay, ale jakoś się te rozwiązanie nie sprawdza bo nie umiem kontrolować czasu. Gdzieś piszą o wykorzystaniu timerów i przerwaniach... Da się to jakoś po ludzku zrobić?
Programik:
Programowałem trochę w bascomie swego czasu i tam opóźnienie wprowadzało się bardzo prosto - wait x i już..
O co mi chodzi. Mam zrobić pragramik [na symulatorze], który stan wciśnięty przyciskami na porcie D wyświetla na LED na porcie B. Wszystko by było fajnie gdyby nie to, że to świecenie ma trwać 2 sekundy i dioda ma zgasnąc [a jeśli przycisk w ciągu tych 2 sek był ponownie wciśnięty to znów dolicza 2 sek itd]. No i tutaj jest mój problem. Dużo się już o tym naczytałem. Raz robiono to za pomocą pętli delay, ale jakoś się te rozwiązanie nie sprawdza bo nie umiem kontrolować czasu. Gdzieś piszą o wykorzystaniu timerów i przerwaniach... Da się to jakoś po ludzku zrobić?
Programik:
.include "m2561def.inc"
rjmp START
;--------------------------------
START:
.def rej1 = r16
.equ KeyPort = PORTD
.equ KeyPins = KeyPort - 2
.equ LedPort = PORTB
ldi rej1,low(RAMEND)
out SPL,rej1
ldi rej1,high(RAMEND)
out SPH,rej1
ser rej1
out DDRB,rej1
PETLA:
in rej1, KeyPins
out LedPort, rej1
rjmp PETLA