Страница на этапе разработки
В данном уроке мы с Вами настроим UART как на прием так и на передачу. Для начала мы с Вами настроим связь без использования прерывания. Дальше научимся использовать прерывания, а так же сможем передавать символы и получать их. Назначение всех регистров для работы UART можно посмотреть в моих уроках по AVR. Там же Вы найдете расчет значения BAUD.
.device Atmega8
.include «m8def.inc»
.def temp = r16 ; рабочий регистр
.org 0
rjmp Reset
out_com: ; посылка байта
sbis UCSRA, UDRE ; ждем готовности буфера передатчика
rjmp out_com
out UDR, temp ; отсылаем
ret
in_com: ;прием байта
sbis UCSRA, RXC ; ждем готовности буфера приемника
rjmp in_com
in temp, UDR ; принимаем
ret
Reset:
ldi temp, Low(RAMEND) ;
out SPL, temp ;
ldi temp, High(RAMEND) ;
out SPH, temp ;
;==UART==
; асинхронный режим, F = 4MГц
ldi temp, 25 ; скорость передачи 9600 при 4МГц BAUD = 25
out UBRRL, temp
ldi temp, (1<<RXEN)|(1<<TXEN); разрешение приема/передачи
out UCSRB, temp
Gcykle:
rcall in_com ; ждем любого байта
rcall out_com ; отсылаем обратно
rjmp Gcykle