Описание последовательного порта.
В состав ..ВЕ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 - скорость в два раза ниже.
Таймеры-счетчики
В состав ..ВЕ51 входят два 16-разрядных таймера/счетчика T0, T1. Состояние таймеров/ счетчиков (далее для краткости - таймеров) отображается регистровыми парами TiH-TiL в пространстве DSEG.
В режиме таймеров осуществляется пересчет тактовых сигналов с частотой OSC/12, а в режиме счетчиков подсчитываются переходы с H-уровня в L-уровень на соответствующих входах T0, T1. Вход тестируется в течение S5P2 каждого машинного цикла. При обнаружении состояния "1" в одном цикле и "0" - в следующем к соответствующему счетчику добавляется 1. В фазе S3P1 следующего цикла модифицированное значение счетчика отображается в регистровой паре. Т.к. процедура обнаружения перехода длится 2 машинных цикла, максимальная частота счета не должна превышать OSC/24 и каждый уровень должен удерживаться неизменным min в течение одного машинного цикла.
Функционирование таймера T2 несколько отличается от работы T0, T1.
Управление режимом работы T0, T1 осуществляет регистр TMOD (89), формат которого приведен на Рис. 11.20.
| Регистр управления режимом | T1 MOD | T0 MOD | TMOD (89) | ||||||
| GTE | C/T | M1 | M0 | GTE | C/T | M1 | M0 | ||
| Регистр управления таймерами | TF1 8F | TR1 8E | TF0 8D | TR0 8C | IE1 8B | IT1 8A | IE0 | IT0 | TCON (88) |
Рис. 11.20. Форматы регистров TCON и TMOD.
Регистр разбит на два 4-разрядных подрегистра одинакового формата :
T0MOD = TMOD[3:0], T1MOD = TMOD[7:4].
Поля регистра TiMOD:
· M[1:0] - код режима работы таймеров;
· C/T - выбор функции: 0 - таймер, 1 - счетчик;
· GATE - флаг управления работой, при GATE = 1 работа разрешена, если (INT=1)&(TR=1) (см. TCON), иначе работа зависит только от TR.
Управление работой T0, T1 обеспечивается регистром TCON (88) (аналогично TMOD разбитому на два одинаковых подрегистра).
|
Поля регистра TiCON:
· IT - управление типом входа внешнего прерывания, 0 - динамический по срезу, 1 - статический;
· IE - флаг запроса внешнего прерывания при динамическом входе, при подтверждении прерывания сбрасывается;
· TR - флаг программного запуска/останова таймера/счетчика;
· TF - флаг переполнения, вызывающий запрос прерывания, при подтверждении прерывания сбрасывается.
Рис. 11.21. Работа таймеров/счетчиков в режимах “0” и “1”
Таймеры T0, T1 могут работать в одном из четырех режимов, схемы работы в которых показаны на Рис. 11.21, Рис. 11.22, Рис. 11.23.
Режим "0" отличается от режима "1" длиной счетчика (13 бит для "0" и 16 - для "1"). Три старших разряда TjL в режиме "0" игнорируются. Установка GATE = 1 дает возможность таймеру измерить ширину импульса INTj.
|
В режиме "2" в восьмиразрядный счетчик TjL производится автозагрузка из TjH. Сигнал переполнения устанавливает флаг TFj и перезагружает TjH ® TjL. Следует иметь в виду, что программная установка флага TFj не вызывает перезагрузки. Перезагрузка TjH ® TjL не меняет содержимого TjH.
Рис. 11.22. Работа таймеров/счетчиков в режиме “2”
|
В режиме "3" T0 и T1 работают по разному. T1 в этом режиме заблокирован и просто сохраняет свое состояние (значение в регистрах Т1L и T1H), как и в случае TR1 = 0.
Рис. 11.23. Режим “3” для Т0
T0 работает как два независимых 8-разрядных таймера, причем T0L может работать как в режиме таймера, так и в режиме счетчика. За ним сохраняются все биты управления T0, он реагирует на воздействия по входам T0, INT0\, устанавливает флаг TF0.
T0H может работать только в режиме таймера. Он использует бит включения TR1, при переполнении выставляет флаг TF1. Других битов управления устройство в этом режиме не имеет.
Установка Т0 в режим “3” лишает Т1 бита включения TR1, поэтому в этом случае Т1 в режимах “0”, “1”, “2” при GATE = 0 всегда включен и при переполнении в режимах “0” и “1” обнуляется, а в режиме “2” перезагружается, не устанавливая флаг. Управление от входов INT\, T1, биты управления C/T1, GATE1 не зависят от режима Т0.
Т1 аппаратно связан с блоком синхронизации последовательного канала. При работе в режимах “0”, “1”, “2” Т1 всегда вырабатывает импульс тактирования последовательного канала (который канал может и не использовать).
16-разрядный таймер/счетчик T2 обладает дополнительными возможностями по сравнению с T0, T1.
Помимо регистровой пары T2H.T2L (8B.8A), отображающей состояние таймера/счетчика, предусмотрена регистровая пара RCAP2 (H - CBh, L - CAh), в которую осуществляется автозахват и из которой осуществляется автозагрузка T2. Для внешнего управления процессами автозахвата/автозагрузки предусмотрен дополнительный вход T2EX.
Управление работой T2 осуществляется с помощью регистра T2CON (C8), формат которого приведен на Рис. 11.24.
| RCAP2L | (CAh) | ||||||||
| RCAP2H | (CBh) | ||||||||
| T2L | (CCh) | ||||||||
| T2H | (CDh) | ||||||||
| Регистр управл. таймером Т2 | TF2 CF | EXF2 CE | RCLK CD | TCLK CC | EXN2 CB | TR2 CA | C/T2 C9 | CP/R C8 | T2CON (C8h) |
Рис. 11.24. Регистры таймера Т2
Разряды регистра T2CON имеют следующее назначение:
CP/RL2 - флаг захвата/автозагрузки T2. При CP/RL2 = 1 захват текущего состояния осуществляется по срезу T2EX, если EXEN2 = 1. При CP/RL = 0 разрешается автозагрузка T2, если T2 переполнен или по срезу T2EX, если EXEN2 = 1. Этот флаг не принимается во внимание, если RCLK = 1 или TCLK = 1, т.е. когда T2 работает в качестве генератора скорости последовательного канала;
C/T2 - управление функцией таймера (0) или счетчика (1);
TR2 - программный запуск T2 при TR2 = 1 и останов по TR2 = 0;
EXEN2 - флаг разрешения (по “1”) динамическому (\__) входу осуществлять захват/автозагрузку, если он не работает в режиме генератора скорости последовательного порта;
TCLK - при TCLK = 1 T2 служит генератором скорости для передатчика последовательного канала, работающего в режиме “1” или “3”. При TCLK = 0 генератором скорости служит T1;
RCLK - то же для приемника последовательного канала;
EXF2 - флаг выполнения захвата/автозагрузки, вызванного изменением состояния на входе T2EX при EXEN2 = 1. При разрешенном прерывании вызывает запрос. Сбрасывается только программно;
TF2 - флаг переполнения T2. Вызывает запрос на прерывание. Функции установки подавляются при TCLK = 1 или RCLK = 1.
Режимы работы T2 (их три) определяются состоянием разрядов 4, 5 и 0 регистра T2CON.
RCLK \/ TCLK = 1 - режим генератора скорости последовательного канала. В этом случае остальные флаги режимов игнорируются, а выработка запроса прерывания по переполнению подавляется;
CP/RL = 1 - режим захвата;
CP/RL = 0 - режим автозагрузки.
Режим захвата осуществляется путем копирования текущего состояния T2 в регистры RCAP2 по отрицательному перепаду (\__) импульса на входе T2EX при условии EXEN2 = 1. Захват сопровождается установкой флага EXF2.
В режиме автозагрузки каждое переполнение T2 вызывает установку TF2 и перезагрузку RCAP2 ® T2. Перезагрузку можно осуществить и от внешнего источника - по отрицательному перепаду сигнала на входе T2EX (при условии EXEN2 = 1), причем такая перезагрузка сопровождается установкой флага EXF2.
Дата добавления: 2019-02-07; просмотров: 391;
