В состав..ВЕ51 входит дуплексный последовательный канал связи с буферизацией, который может быть запрограммирован для работы в одном из четырех режимов:
· режим "0" - синхронный ввод/вывод с частотой OSC/12;
· режим "1" - асинхронный с 8-бит. кадром, частота k´f;
· режим "2" - асинхронный с 9-бит. кадром, частота k´OSC/32;
· режим "3" - асинхронный с 9-бит. кадром, частота k´f;
где k {1, 1/2}, f - частота переполнения T1 (fov), деленная на 16.
Входные и выходные данные хранятся в регистре SBUF(99), управление работой приемопередатчиков осуществляется словом состояния и управления SCON (98), формат которого представлен в Табл. 11.1.
Рис. 11.17. Разряд порта Р3
В режиме "0" (синхронный) данные передаются или принимаются по линии RxD со скоростью OSC/12 младшими битами вперед по 8 бит за операцию. Для синхронизации внешних средств используется линия TxD (Рис. 11.18)
Табл. 11.1
№ бита | Имя | Назначение | |
RI | Флаг прерывания приемника | ||
TI | Флаг прерывания передатчика | ||
RB8 | 8 бит приемника (реж. 2 и 3) | ||
TB8 | 8 бит передатчика (реж. 2 и 3) | ||
REN | Разрешение приема | ||
SM2 | Запрещение приема кодов с b8 = 0 | ||
SM1 | 00 - "0" | 10 - "2" | |
SM0 | 01 - "1" | 11 - "3" |
Передача инициируется всякий раз, когда в новые данные записываются в буфер SBUF. Признаком окончания передачи служит установка флага TI.
|
|
Операция ввода активизируется при разрешенном приеме (REN = 1) по сбросу RI. Установка RI свидетельствует о готовности введенных данных для считывания из буфера SBUF.
В режиме 1..3 реализуется асинхронный обмен данными. Кадр для передачи в режиме 1 показан на Рис. 11.19. Кадры для режимов 2 и 3 отличаются наличием девятого бита D8, следующего за D7 перед стоповым битом.
Рис. 11.18. Прием/передача в синхронном режиме
Для повышения помехоустойчивости приема в режимах 1..3 каждый бит данных опрашивается трижды. Для этого период передачи бита делится на 16 интервалов и опросы осуществляются в 7, 8, 9 интервалах; значение бита определяется мажорированием. До прихода стартового бита приемник RxD проверяется 16 раз за период. При обнаружении перехода "H" ® "L" начинается отсчет. Если стартовый бит не подтверждается (опрос 3 раза), то переход принимается за помеху. При обнаружении стартового бита осуществляется прием следующих 8 или 9 битов (в зависимости от режима) и размещение их в SBUF и флажке RB8. При приеме стопового бита устанавливается флаг RI, свидетельствующий об окончании приема очередного кадра.
Рис. 11.19. Кадр передачи в режиме 1
Передача данных на выход TxD начинается после записи их в SBUF независимо от флага TI. Передача стартового бита начинается в фазе S1P1 МЦ, следующего за сигналом переполнения того счетчика, который служит генератором скорости. Кадр завершается выдачей стопового бита. Перед началом передачи стоп-бита устанавливается флаг TI - окончание передачи данных.
|
|
Флажки RI и TI способны осуществлять запросы на прерывания, причем в режимах 1..3 при SM2 = 1 установка флага RI (и генерация запроса) возможна только при приеме кадра с D8 = 1. Для режима 1 это соответствует приему стопового бита. Таким образом имеется возможность (в режимах 2 и 3) разделять принимаемые кадры на два класса (по D8 ® RB8). Кадры, принимаемые с RB8 = 0 теряются. Это дает возможность эффективно управлять межмашинной связью в сетях с единой последовательной магистралью. Кадры с RB8 = 1 - широковещательные и содержат адрес приемника, информация которому будет передаваться кадрами с RB8 = 0. Для вызова другого абонента следует передать новый кадр с RB8 = 1.
Скорость передачи зависит от состояния флага SMOD в регистре PCON (87), режима работы канала и длительности периода пересчета таймера-генератора скорости.
Для режима 2: при SMOD = 1 - скорость OSC/32;
SMOD = 0 - скорость OSC/64.
В режимах 1 и 3 скорость передачи определяется частотой переполнения таймера T1(fov) следующим образом:
f = (2SMOD/32) ´ fov.
При использовании таймера T1 в режиме автозагрузки скорость последовательного обмена определяется по следующей формуле:
f = (2SMOD ´ fOSC)/(32 ´ 12 ´[256 - (тн)]).
В случае SMOD = 1 скорость совпадает с частотой переполнения таймера, при SMOD = 0 - скорость в два раза ниже.