ВУЗ:
Составители:
есть после очистки сдвигового и буферного регистров передатчика. При выклю-
ченном передатчике вывод TXD может использоваться как контакт ввода/вывода
общего назначения.
Ниже приведен пример подпрограммы передачи по интерфейсу UART. Эта
подпрограмма ждет очистки буфера передатчика, а затем загружает в него новое
значение.
UART_Transmit:
Sbis USR,UDRE ; ждем очистки буфера передатчика (регистр данных
пуст)
Rjmp UART_Transmit
; скопировать 9-й разряд данных из r17 в TXB8
Cbi UCR,TXB8 ; очистить TXB8 регистра UCR
Sbrc r17,0 ; проверяет 0-й бит рег. R17 и пропускает следую-
щую команду, если бит установлен
Sbi UCR,TXB8 ; установить в 1 бит TXB8
; загрузить младший байт данных в буфер, начать передачу
Out UDR,r16
Ret
3.4.4.
Прием данных
Работа приемника разрешается установкой разряда RXEN регистра UCR. При
установке разряда вывод RXD подключается к приемнику UART и начинает
функционировать как вход независимо от установок регистров управления пор-
том.
Прием данных начинается сразу же после обнаружения приемником коррект-
ного старт-бита. Каждый разряд содержимого кадра затем считывается с часто-
той, определяемой установками контроллера скорости передачи. Считанные раз-
ряды данных последовательно помещаются в сдвиговый регистр приемника до
обнаружения первого стоп-бита. После этого содержимое сдвигового регистра
пересылается в буфер приемника, из которого принятое значение может быть по-
лучено путем чтения регистра данных модуля. Блок приемника имеет два флага,
показывающий состояние обмена: флаг ошибки кадрирования FE и флаг перепол-
нения OR. Флаг FE устанавливается в 1, если значение первого стоп-бита приня-
того кадра не соответствует требуемому, т.е. равно 0.
Флаг OR индицирует потерю данных из-за переполнения буфера приемника.
Установленный флаг OR означает, что между прошлым байтом, считанным из
регистра UDR, и байтом, считанным в данных момент, произошла потеря одного
или нескольких кадров.
Для индикации состояния приемника в модуле UART используется флаг пре-
рывания «прием завершен» RXC регистра USR. Этот флаг устанавливается в 1
при наличии в буфере приемника непрочитанных данных. После прочтения флаг
сбрасывается в 0.
101
Страницы
- « первая
- ‹ предыдущая
- …
- 99
- 100
- 101
- 102
- 103
- …
- следующая ›
- последняя »