В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.