Описание последовательного порта

В состав..ВЕ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 - скорость в два раза ниже.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: