6.1 Структура и принципы использования последовательного порта МК
Последовательный порт МК часто называют универсальным асинхронным приемником-передатчиком (УАПП – UART).
Через УАПП осуществляется прием и передача информации, представленной последовательным кодом. Последовательный порт ввода-вывода используют в асинхронном режиме для связи со стандартными периферийными устройствами (дисплеем, модемом, другими контроллерами). В синхронном режиме УАПП применяют совместно с внешними сдвигающими регистрами для расширения количества линий ввода-вывода МК-системы минимальной конфигурации.
УАПП аппаратно реализует побитовый способ передачи данных. Но на уровне программы минимальный объем передаваемой информации – один байт.
Структура УАПП показана на рис. 6.1.
Рисунок 6.1 – Структура последовательного порта UART МК MCS-51
Функционирование УАПП при передаче байта
Для начала передачи байта нужно с помощью любой команды пересылки направить данные в регистр SBUF. Например, это можно сделать командой
MOV SBUF, A
После этого УАПП автоматически начинает побитовую передачу информации через выход TxD со скоростью, заданной программистом при настройке УАПП. Когда будет передан последний бит посылки, флаг завершения передачи TI будет установлен в “1”. После этого можно пересылать следующий байт.
Функционирование УАПП при приеме байта
Для запуска приема нужно установить в “1” бит разрешения приема REN. Например, это можно сделать командой
SETB REN
Фактический прием байта начнется тогда, когда внешнее устройство, подключенное к входу RxD, начнет передачу данных. Побитовое тактирование приема происходит со скоростью, заданной программистом при настройке УАПП. При получении всей посылки флаг завершения приема RI будет установлен в “1”. После этого можно прочитать принятый байт из регистра SBUF, например, командой:
MOV A, SBUF
Чтение должно быть выполнено до завершения приема следующего байта.
Физически реализованы два отдельных регистра SBUF – для приема и передачи.
Настройка УАПП и управление его работой
Для задания режимов работы УАПП служит регистр SCON. Имена битов регистра SCON можно использовать в командах программы.
Имя бита
|
Назначение
|
SM0
SM1
|
Выбор режима работы УАПП
Биты нужно устанавливать и сбрасывать программно.
SM0
|
SM1
|
Режим работы УАПП
|
0
|
0
|
Режим 0. Посылка – 8 бит. Максимальная скорость передачи. Режим синхронной передачи
|
0
|
1
|
Режим 1. Посылка – 10 бит. Скорость передачи задается программно. Режим асинхронной передачи
|
1
|
0
|
Режим 2. Посылка – 11 бит. Фиксированная скорость передачи. Режим асинхронной передачи
|
1
|
1
|
Режим 3. Посылка – 11 бит. Скорость передачи задается программно. Режим асинхронной передачи
|
_
|
SM2
|
Управление приемом посылок. Бит изменяется программно. При SM2 = 1 запрещается прием посылок, в которых девятый бит равен 0 (для режимов 2 и 3). При SM2 = 0 разрешен прием любых посылок
|
REN
|
Разрешение приема. Бит изменяют программно. При REN = 1 прием разрешен. При REN = 0 прием запрещен
|
TB8
|
Значение передаваемого 8-го бита в посылке (не считая старт-бита). Бит нужно изменять программно. Используется в режимах 2 и 3
|
RB8
|
Значение 8-го бита в принятой посылке (не считая старт-бита). Бит изменяется аппаратно и фиксирует восьмой принятый бит в режимах 2 и 3
|
TI
|
Флаг завершения передачи посылки. Устанавливается аппаратно при окончании передачи байта. Должен быть сброшен программно
|
RI
|
Флаг завершения приема посылки. Устанавливается аппаратно при окончании приема байта. Должен быть сброшен программно
|
|