В состав..ВЕ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.









