Таймеры-счетчики

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


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



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