Witam
Od niedawna uczę sie assemblera i napisałem taki programik:
Lecz niestety nie chce on działać poprawnie. Wszystkie diody migają z ogromną prędkością. Może ktoś wie gdzie robię błąd?
Diody podpięte są katodami do końcówek portu B. Na PIND.6 podpięty jest rezystor podciągający do plusa.
proszę o pomoc
Pozdrawiam
Od niedawna uczę sie assemblera i napisałem taki programik:
.list
.include "tn2313def.inc"
.def acc = r16 ;przypisanie nazw rejestrów
.def status = r17
.cseg
.org 0
Main:
ldi acc,0b11111111
out DDRB, acc ;Ustawienie wszystkich koncówek portu B jako wyjść
ldi acc,0b00111111
out DDRD, acc ;oraz dwóch ostatnich koncówek portu D jako wejść
ldi status, 0xFE
ldi acc,0xFF
out PORTB, acc ;zgaszenie wszystkich diod
ldi acc, 0x00
out PIND, acc ;bez pull-up na wejściach
Main_0:
in acc, PIND ;przepisz zawartość rejestru wejść do rejestru acc
sbrs acc, 0x06 ;jeżeli ACC.6 = 1 to pomińnastęną instrukcję
rjmp Main_1
rjmp main_0 ;jesli jest równy 0 to powtórz sprawdzanie
Main_1:
out PORTB, status ;zapal odpowiednią diodę
rol status ; przesun zawartość rejestru w lewo
rjmp Main_0 ;sprawdzaj stan ponownie
Lecz niestety nie chce on działać poprawnie. Wszystkie diody migają z ogromną prędkością. Może ktoś wie gdzie robię błąd?
Diody podpięte są katodami do końcówek portu B. Na PIND.6 podpięty jest rezystor podciągający do plusa.
proszę o pomoc
Pozdrawiam