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

Микроконтроллеры типа 8051 АН имеют два 16-разрядных таймера-счет­чика, Таймер 0 и Таймер 1. Каждый из них независимо может быть запрог­раммирован на работу в качестве либо таймера (отсчет времени через под­счет внутренних импульсов синхронизации), либо счетчика (подсчет событий на внешнем входе). В обоих случаях переход через заранее уста­новленный рубеж приводит к формированию запроса прерывания.

Выбор режима работы каждого из таймеров производится битами С/Тх# (х = 0,1) регистра TMOD. Подсчет событий производится посредством ин­кремента программно доступного регистра данных, который состоит из ре­гистра младшего байта TLx и регистра старшего байта ТНх.

При работе в режиме таймера (С/Тх# = 0) регистр TLx наращивается в каж­дом машинном цикле и частота счета равна Fosc/12.

В режиме счетчика (С/Тх#=1) регистр TLx наращивается при переходе сигнала на входе Тх из «1» в «0». Входы опрашиваются во время фазы S5P2 каждого машинного цикла. При обнаружении высокого уровня сигнала в одном цикле и низкого уровня в следующем цикле счетчик инкрементируется. Новое значение в регистре появляется во время фазы S3P1 цикла, следующего за тем, в котором был обнаружен переход.

Поскольку на распознавание перехода уходит два машинных цикла, мак­симальная частота счета составляет Fosc/24. Ограничений на скважность входного сигнала нет, но для уверенной фиксации перепада сигнал дол­жен удерживаться в каждом значении по крайней мере один машинный цикл.

Счетчики/таймеры обслуживаются регистром режима TMOD и регистром управления TCON.

GATE1 С/Т1# M1.1 M1.0 GATE0 С/Т0# M0.1 М0.0

TMOD

Имя бита Номер бита Функция
GATE1 TMOD.7 Бит управления Таймером 1. При GATE1 = 1 Таймер 1 работает всегда при TR1 = 1. При GATE1 = 0 для работы необходимо условие TR1 = 1 и INT1# = 1.
С/Т1# TMOD.6 Бит выбора типа событий для Таймера 1. При С/Т1# = 1 он работает как счетчик, при С/Т1# = 0 как таймер.
M1.1 TMOD.5 Бит 1 определения режима работы Таймера 1.
M1.0 TMOD.4 Бит 0 определения режима работы Таймера 1.
GATE0 TMOD.3 Бит управления Таймером 0. При GATE0=1 Таймер 0 работает всегда при TR0=1. При GATE0=0 для работы необходимо условие TR0=1 и INT0# = 1.
С/Т0# TMOD.2 Бит выбора типа событий для Таймера 0. При С/Т0# = 1 он работает как счетчик, при С/Т0# = 0 как таймер.
M0.1 TMOD.1 Бит 1 определения режима работы Таймера 0
М0.0 TMOD.0 Бит 0 определения режима работы Таймера 0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TCON

Имя бита Номер бита Функция
TF1 TCON.7 Флаг переполнения Таймера 1. Устанавливается при пе­реходе счетного регистра таймера из состояния FFH в со­стояние 00Н. Очищается при передаче управления на про­цедуру обработки прерывания
TR1 TCON.6 Бит запуска Таймера 1. При TR1 = 1 счет разрешен
TF0 TCON.5 Флаг переполнения Таймера 0. Устанавливается при пе­реходе счетного регистра таймера из состояния FFH в со­стояние 00Н. Очищается при передаче управления на про­цедуру обработки прерывания
TR0 TCON.4 Бит запуска Таймера 0. При TR0 = 1 счет разрешен
IE1 TCON.3 Флаг запроса прерывания по входуINT1#
IT1 TCON.2 Бит селектора типа активного сигнала на входе INT1#. При IT1 = 1 активным является переход «1»-»0», при IT1 = 0 активным является низкий уровень сигнала
IE0 TCON.1 Флаг запроса прерывания по входу INT0#
IT0 TCON.0 Бит селектора типа активного сигнала на входе INT0#. При IT0 = 1 активным является переход «1»-«0», при IT0 = 0 активным является низкий уровень сигнала

Биты M1 и М0 следующим образом определяют режимы работы таймеров/ счетчиков:

М1 М0 Режим работы
    Режим 0 ТНх как 8-разрядный таймер/счетчик. TLx как 5-разрядный предделитель
    Режим 1 16-разрядный таймер/счетчик. ТНх и TLx включены последовательно
    Режим 2 8-разрядный таймер/счетчик TLx с автоперезагрузкой значением из ТНх
    Режим 3 TL0 как 8-разрядный таймер/счетчик, управляемый битами управления Таймера 0. ТН0 как 8-разрядный таймер/ счетчик, управляемый битами управления Таймера 1. Таймер 1 не работает

Выбор типа подсчитываемых событий для Таймера 0 и Таймера 1, т.е. на­значение им функции таймера или счетчика, определяется значением бита управления С/Тх# регистра TMOD. Таймеры способны работать в трех ре­жимах, выбор режима для каждого таймера производится комбинацией би­тов Мх.1, Мх.0 того же регистра.

Счет разрешается битом TRx, если бит GATEx = 0. Когда счетное значение переходит из состояния все «1» в состояние все «0», устанавливается флаг запроса прерывания TFx. Установка бита GATEx = 1 дает возможность уп­равлять таймером от входа INTx# и измерять таким образом ширину им­пульсов. Установка битов запуска не очищает счетные регистры.

Режим 0. В этом режиме имеет место 13-разрядный счетный регистр, в ко­тором регистр ТНх работает как 8-разрядный счетчик, а регистр TLx ис­пользуется как 5-битный предделитель (рис. 3.12а).

Режим 1. Этот режим аналогичен режиму 0, но используются все 16 разря­дов регистров ТНх и TLx (рис. 3.126).

Режим 2. В этом режиме регистр TLx работает как 8-разрядный счетный регистр. После переполнения он автоматически перезагружается значени­ем из регистраТНх, который при этом своего предварительно запрограм­мированного значения не теряет (рис. 3.12в).

Режим 3. Таймер 1 в этом режиме блокирован, как если бы битTR1 был сброшен. Таймер 0 в режиме 3 работает как два независимых счетных регистра, при­чем регистр TL0 управляется битами управления Таймера 0, а регистр ТН0 управляется битами управления Таймера 1 (рис. 3.12г).

Рис. 3.12 - Работа счетчиков/таймеров:

в режиме 0 (а), режиме 1 (б), режиме 2 (в) и режиме 3 (г)


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



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