Код
.include "2313def.inc"
.def data = r16
.def baudrate = r17
ldi r18, 0b00010000
out UCR, r18 ;выставляю бит RXEN (Reciever enable)
ldi r18, 0b01000000 ;
ldi r19, 0b01000000 ;два одинаковых регистра, будут нужны для вывода
out DDRD, r18 ;говорю седьмой ноге порта D что она будет выходом
ldi baudrate, 32 ;9600 at 5 MHz посчитал по формуле из даташита...
out UBRR, baudrate ;...и записываю в Baud Rate Register
recieve:
in data, UDR ;считываю значение регистра данных UARTа
ser r20 ;далее проверяю, получил ли чего-нить
ser r21 ;r20 = r21
eor r21, data ;если в data что-то было, r21 изменится...
and r20, data ;...и станет не равно r20...
brne troggle ;...и произойдет прыжок на переключение ноги
rjmp recieve ;а если останется равно, значит data = 0, повторяем считывание
troggle: ;дрыгалка для ноги
eor r18, r19 ;переключаю состояние r18
out PORTD, r18 ;и сбрасываю на выход
rjmp recieve ;и все поновой...
.exit
.def data = r16
.def baudrate = r17
ldi r18, 0b00010000
out UCR, r18 ;выставляю бит RXEN (Reciever enable)
ldi r18, 0b01000000 ;
ldi r19, 0b01000000 ;два одинаковых регистра, будут нужны для вывода
out DDRD, r18 ;говорю седьмой ноге порта D что она будет выходом
ldi baudrate, 32 ;9600 at 5 MHz посчитал по формуле из даташита...
out UBRR, baudrate ;...и записываю в Baud Rate Register
recieve:
in data, UDR ;считываю значение регистра данных UARTа
ser r20 ;далее проверяю, получил ли чего-нить
ser r21 ;r20 = r21
eor r21, data ;если в data что-то было, r21 изменится...
and r20, data ;...и станет не равно r20...
brne troggle ;...и произойдет прыжок на переключение ноги
rjmp recieve ;а если останется равно, значит data = 0, повторяем считывание
troggle: ;дрыгалка для ноги
eor r18, r19 ;переключаю состояние r18
out PORTD, r18 ;и сбрасываю на выход
rjmp recieve ;и все поновой...
.exit