ВУЗ:
Составители:
следующем такте возвращается значение регистра 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
Страницы
- « первая
- ‹ предыдущая
- …
- 59
- 60
- 61
- 62
- 63
- …
- следующая ›
- последняя »