Микроконтроллеры семейства AVR. Воробьева Г.С. - 61 стр.

UptoLike

Составители: 

следующем такте возвращается значение регистра UCSRC, как показано в
приведенном ниже примере. Прерывания при выполнении этой
последовательности команд должны быть запрещены.
Пример на ассемблере
USART_ReadUCSRC:
; Прочитать регистр UCSRC
in r16,UBRRH
in r16,UCSRC
ret ; Значение регистра UCSRC возвращается
; в регистре г16
При работе в асинхронном режиме скорость обмена определяется не
только содержимым регистра UBRR, но и состоянием бита U2X регистра
UCSRA.
Если этот бит установлен в 1, коэффициент деления предделителя
уменьшается в два раза, а скорость обмена соответственно удваивается. При
работе в синхронном режиме этот бит должен быть сброшен.
Итак, скорость обмена определяется следующим образом:
асинхронный режим (обычный, U2X = 0)
BAUD= f
CK
/(16(UBRR+1))
асинхронный режим (ускоренный, U2X = 1)
BAUD= f
CK
/(8(UBRR+1))
синхронный режим ведущего
BAUD= f
CK
/(2(UBRR+1))
где BAUDскорость передачи, бит/с;
f
CK
тактовая частота микроконтроллера;
UBRR — содержимое регистра контроллера скорости передачи
(0...4095).
Ниже приведен простейший пример подпрограммы передачи по ин-
терфейсу USART. Эта подпрограмма ждет очистки буфера передатчика, а
затем загружает в него новое значение.
Пример на ассемблере
USART_Transmit:
; Ждать очистки буфера передатчика
sbis UCSRA,UDRE
rjmp USARTJTransmit
; Скопировать 9-й бит данных из г 17 в TJCB8
cbi UCSRB.TXB8
sbrc rl7,0
sbi UCSRB,TXB8
61