В1: Таймеры-счетчики в МК51. Регистр ТМОD. Режимы работы таймеров-счетчиков.
Относятся к средствам поддержки режимов реального времени и необходимы для организации системных меток реального времени. В состав МК51 входят два 16-разрядных таймера/счетчика СТ0, СТ1. Состояние таймеров- счетчиков отражается программно-доступными регистрами :
СТ0 – ТН0 (8CH), ТL0 (8AH)
СТ1 – ТН1 (8DH), ТL1 (8BH)
Режимы таймеров – счетчиков.
Таймер – счет числа машинных циклов, следующих с частотой OSC/12
Счетчик – счет количества переходов из «1» в «0» на соответствующих внешних входах Т0, Т1
Управление режимами осуществляет регистр TMOD (89H):
TMOD.0 М0 – Младший бит кода режима CT0
TMOD.1 М1 – Старший бит кода режима CT0
TMOD.2 С/Т0 – выбор функции: 0 – таймера, 1- счетчика
TMOD.3 GATE0 – флаг управления работой СТ0
TMOD.4 М0 – Младший бит кода режима CT1
TMOD.5 М1 – Старший бит кода режима CT1
TMOD.6 С/Т1 – выбор функции: 0 – таймера, 1- счетчика
TMOD.7 GATE1 – флаг управления работой СТ1
Управление режимами также выполняет регистр TCON (88H)
TCON.0..TCON.3 – управление режимами прерываний (в следующих разделах)
TCON.4- TR0 –Флаг программного запуска/останова СТ0
TCON.5- TF0 –Флаг переполнения СТ0, вызывает прерывание; при подтверждении прерывания аппаратно сбрасывается
TCON.6- TR1 –То же что TR0, но для СТ1
TCON.7- TF1 –То же что TF0, но для СТ1
Каждый из модулей СТ0 и СТ1 имеет четыре режима работы.В режиме счетчика соответствующий вход тестируется в каждом машинном цикле. При обнаружении состояния «1» в одном цикле и состояния «0» в следующем значение связанного со входом счетчика инкрементируется.
Режим 0:модуль таймера представляет собой 8-разрядный счетчик ТНх, на вход которого поступает импульсная последовательность с выхода программно недоступного делителя на 32 (ТНО для таймера 0, ТН1 для таймера 1). Последний выполнен на основе младшего байта счетчика TLx.
При переполнении счетчик ТНх изменяет состояние с 0FFh на 00h и продолжает счет. Одновременно устанавливается триггер переполнения TFx. Коэффициент счета счетчика в режиме 0 составляет 256.
Изменение коэффициента счета требует записи начального кода под управлением прикладной программы каждый раз после наступления события переполнения.
Режим 1:В режиме 1 таймер представляет собой 16-разрядный счетчик. Регистр ТНх - старший байт этого счетчика, TLx - младший байт. При переполнении состояние счетчика изменяется с FFFFh на 0000h, устанавливается триггер переполнения TFx, 16-разрядный счетчик продолжает счет поступающих импульсов. Коэффициент счета счетчика в режиме 1 составляет 216. Как и в режиме 0, изменение этого коэффициента требует «программного вмешательства» на каждом периоде работы счетчика.
Режим 2: Работа таймера организована таким образом, что переполнение 8-разрядного счетчика TLx приводит не только к установке флага TFx, но и автоматически перезагружает в TLx содержимое старшего байта счетчика таймера ТНх, которое было задано предварительно.
Перезагрузка оставляет содержимое ТНх неизменным.В режиме 2 возможно задание коэффициента счета в диапазоне 1..256
Режим 3:В режиме 3 может работать только таймер 0. Таймер1 – заблокирован. Таймер0 рассматривается как 2 независимых таймера TH0 и TL0 причем TL0 управляется битом TR0, а TH0 - битом TR1.