95
º
Бит 5 – UDRIE (UART Data Register Empty Interrupt Enable) - Разрешение
прерывания по пустому регистру данных. При установленном в состояние 1
бите UDRIE и установленном разрешении глобального прерывания
установка бита UDRE в регистре USR приведет к выполнению прерывания
по пустому регистру данных UART.
º
Бит 4 – RXEN (Receiver Enable) - разрешение приемника. Установленный в
состояние 1 бит RXEN разрешает приемник UART. Если приемник запрещен,
то флаги статуса TXC, DOR и FE установить невозможно. Если эти флаги
установлены, то очистка бита RXEN не приведет к очистке этих флагов.
º
Бит 3 – TXEN (Transmitter Enable) - разрешение передатчика. Установленный
в состояние 1 бит TXEN разрешает передатчик UART. При запрещении
передатчика во время передачи символа, передатчик не будет заблокирован
прежде, чем будут полностью переданы символ в сдвиговом регистре плюс
любой находящийся в UDR следующий символ.
º
Бит 2 - CHR9 (9 Bit Characters) - режим 9-разрядных символов. При
установленном в состояние 1 бите CHR9 передаются и принимаются 9 -
разрядные символы плюс стартовый и стоповый биты. Девятые биты
читаются и записываются с использованием битов RXB8 и TXB8
(соответственно)
регистра UCSRA. Девятый бит данных может
использоваться как дополнительный стоповый бит или бит контроля
четности.
º
Бит 1 - RXB8 (Receive Data Bit 8) - прием 8-разрядных данных. При
установленном в состояние 1 бите CHR9 бит RXB8 является девятым битом
данных принятого символа.
º
Бит 0 - TXB8 (Transmit Data Bit 8) - передача 8-разрядных данных. При
установленном в состояние 1 бите CHR9 бит TXB8 является девятым битом
данных передаваемого символа.
П
Р О Г Р А М М И Р О В А Н И Е
U A R T
При программировании UART в простейшем случае решаются три задачи:
инициализация UART(задание режимов работы), организация приема данных и
организация передачи данных.
Примером
инициализирующей
подпрограммы
может
быть
следующая
последовательность команд:
.def tmp =r20
Init_uart: ldi
tmp,0b00011101 ;Инициализация UART
out
UCR,tmp
;TXEN=1,RXEN=1,СРH9=1,TXB8=1
ldi
tmp,25
;9600
бит/c при fclk=4МГц
out
UBRR,tmp
ret
Если микропроцессор использует последовательный канал для коротких
однобайтных сообщений, то передавать и принимать данные можно, просто опрашивая
флаги готовности передатчика и приемника UART. При передаче байта в
последовательный канал все, что должен сделать процессор – дождаться установки флага
готовности передатчика UDRE и записать затем передаваемый символ в регистр данных
передатчика:
trans: sbis USR, UDRE
;Если бит UDRE в USR установлен, то пропустить
;cледующую ;команду