Управление таймерами-счетчиками (Т/С)
Для управления режимами работы Т/С и организации взаимодействия таймеров с системой прерываний используют два РСФ:
- регистр режимов - TMOD - от английского "Timer MODe";
- регистр управления/статуса - TCON - от "Timer CONtrol"
Путем записи числовых кодов в эти регистры таймеры Т0 и Т1 могут быть независимо настроены на разные режимы работы.
Структура регистров TMOD и TCON и назначение битов
Каждый из таймеров Т/С0 и Т/С1 может функционировать в любой из четырех конфигураций - конфигурациях 0,1,2,3. Конфигурации 0,1,2 одинаковые для Т/С0 и T/С1. Конфигурация 3 реализуется в Т/С0 и Т/С1 по-разному. Структура регистра TMOD показана на рис.14.1, а структура регистра управления работой таймеров TCON - на рис.14.2.
Рис. 14.1. Битовая структура регистра TMOD
Регистр TMOD не является битово-адресуемым. Нужна загрузка байтового кода!
Рис.14.2. Битовая структура регистра TCON
TCON является регистром с побитовой адресацией, а приведенные на схеме имена бит представляют собой зарезервированные символические имена Ассемблера. Сброс и установка отдельных бит могут проводиться независимо, что обеспечивает эффективное управление работой таймеров.
Далее индекс "х" будем использовать для обобщенного обозначения номера таймера-счетчика: 0 или 1.
Т а б л и ц а 14.1
Назначение битов регистра режимов TMOD
Символ
|
Позиция
|
Назначение
|
GATE
|
TMOD.7 (1)
TMOD.3 (0)
|
Разрешение остановки от прерывания.
При GATE=1 Т/Сх запускается и работает, если бит TRх=1 и на входе ІNTх - уровень "1". При возникновении сигнала INTx=0 Т/Сх останавливается независимо от значения TRx.
При GATE=0 Т/Сх запускается только установкой TRх=1 и останавливается при TRx=0.
|
С/T
|
TMOD.6 (1)
TMOD.2 (0)
|
Выбор режима - таймер или счетчик.
0 - режим таймера,
1 - режим счетчика импульсов по входам Тх.
|
Продолжение на следующей странице
|
М1
М0
|
TMOD.5 (1)
TMOD.1 (0)
TMOD.4 (1)
TMOD.0 (0)
|
Задание конфигурации (0,1,2,3) таймерных регистров для каждого Т/С в отдельности
М1
|
M0
|
Описание режима работы
|
0
|
0
|
ТНх-восьмиразрядный счетчик с предделителем частоты на 32, реализованным на младшей части – регистре TLx
|
0
|
1
|
16-разрядный таймер или счетчик
|
1
|
0
|
TLx работает как восьмиразрядный Т/С с автоперезагрузкой. Стартовое число подсчета задается (и содержится) в ТНх.
|
1
|
1
|
TL0 и TH0 – восьмиразрядные Т/С, которые управляются битами таймеров 0 и 1 соответственно. Таймер 1 – отключается.
|
|
Т а б л и ц а 14.2
Назначение битов регистра управления TCON
Имя бита
|
Позиция
|
Назначение
|
TF1
|
TCON.7
|
Флаг переполнения таймера 1. Устанавливается аппаратно при переполнении Т/С1. Сбрасывается при обслуживании прерывания аппаратно.
|
TR1
|
TCON.6
|
Бит управления запуском таймера 1. Устанавливается и сбрасывается программно для запуска и останова Т/С1 ("программный выключатель")
|
TF0
TR0
|
TCON.5
TCON.4
|
То же самое, как и для TF1, для таймера Т0
То же самое, как и для TR1, для таймера Т0
|
IE1
|
TCON.3
|
Флаг запроса внешнего прерывания 1. Устанавливается аппаратно при выявлении запроса внешнего прерывания по входу INT1. Сброс зависит от значения бита IT1
|
IT1
|
TCON.2
|
Бит управления типом сигнала прерывания 1.
Модифицируется программно для задачи правила
восприятия сигнала INT1:
при IT1 = 1 - по срезу (переход "1" -> "0"); сброс IE1 выполняется аппаратно,
при IT1 = 0 - по низкому уровню на входе INT1; сброс IE1 может выполняться программно
|
IE0
IT0
|
TCON.1
TCON.0
|
То же, как и для IE1, по сигналу INT0
То же, как и для IT1, по сигналу INT0
|
Например, нужно настроить таймер-счетчик 1 на запуск только от бита TR1 в конфигурации 2, а для таймера-счетчика 0 управление запуском может выполняться от TR0 и сигнала прерывания INT0 в конфигурации 1. Таймер-счетчик 1 должен функционировать в режиме таймирования, а таймер-счетчик 0 - в режиме счетчика внешних импульсов. Код настройки таймеров формируем в виде:
init_timers equ 00101101B
Настройка таймеров на нужный режим осуществляется командой
MOV TMOD, #init_timers
Примеры программного управления таймером:
SETB TR1 ; запуск таймера 1
CLR TR0 ; останов таймера 0
Управление запуском от сигналов TRx, INT и GATE иллюстрируется схемой на рис. 14.3.
Рис. 14.3. Управление запуском таймера от сигналов TRx, INT и GATE.
|