Курс лекций - Микропроцессоры

Устройство таймеров микроконтроллеров MCS-51 - часть 4


Нулевой и первый режимы работы таймеров T0 и T1 предназначены для формирования одиночного интервала времени. Если возникает необходимость формировать последовательность интервалов времени для периодических процессов, то загрузка регистров TH0 и TL0 для задания нужного интервала времени производится программно, что для коротких интервалов времени может привести к значительным затратам процессорного времени.

Для формирования последовательности одинаковых интервалов времени используется режим работы таймера с перезагрузкой - режим 2.

Режим 2

В режиме 2 регистр таймера TLx работает как 8-битный счетчик с автоматической перезагрузкой начального значения из регистра ТНх в регистр TLx. Переполнение регистра TLx не только устанавливает флаг TFx, но и загружает регистр TLx содержимым регистра ТНх, который предварительно инициализируется программно. Перезагрузка не изменяет содержимое регистра ТНх. Работе таймера 0 или таймера 1 в режиме 2 соответствует схема:

mode2.gif (1847 bytes)

Рисунок 4. Схема таймеров 0 или 1 в режиме 2.

Работа с таймерами во втором режиме не отличается от рассмотренных ранее примеров, поэтому следующий пример инициализации таймера на генерацию частоты с периодом сто микросекунд (10кГц) приводится без комментария.

;Настроить режим работы таймера------------------------------------------------------------------------------------------- mov TMOD, #00000010b ;перевести таймер T0 во второй режим работы, а T1 - в нулевой ; ;++---Перевести таймер T0 в режим 8-ми разр. таймера с автозагрузкой ;|+-----Синхронизироваться от внутреннего генератора ;|+-------Запретить управление таймером от ножки INT0 ;++-------Перевести таймер T1 в тринадцатиразрядный режим ;|+---------Синхронизироваться от внутреннего генератора ;+----------Запретить управление таймером от ножки INT1 mov TMOD,#2 ;перевести таймер T0 во второй режим работы, а T1 - в нулевой mov TH0, #-50 ;Загрузить старший байт таймера mov TL0, #-50 ;Загрузить младший байт таймера OjidanTimer: jnb TF0, OjidanTimer ;Подождать пока не переполнится таймер cpl P2.6 ;Проинвертировать сигнал на шестой ножке второго порта и sjmp OjidanTimer ;снова перейти к ожиданию окончания временного интервала

Режим 3

Таймер 1 при работе в режиме 3 просто хранит свое значение.Эффект такой же как при сбросе бита TR1.

Таймер 0 в режиме 3 представляет собой два раздельных 8 битных счетчика (регистры TL0 и ТН0), Регистр TL0 использует биты управления таймера 0: С/Т0. GATE0, TR0 и TF0. Регистр ТН0 работает только в режиме таймера и использует биты TR1 и TF1 таймера 1. Таким образом, регистр ТН0 управляет прерыванием таймера 1. Логика работы таймера 0 в режиме 3 показана на схеме:

mode3.gif (1824 bytes)

Рисунок 5. Схема таймерa 0 в режиме 3.

Работа таймера TL0 разрешается, если бит TR0 = 1, а таймера TH0 - если бит TR1 = 1. Таймер 1 при работе таймера 0 в режиме 3 постоянно включен.

Этот режим работы позволяет реализовать два независимых таймера, если таймер 1 используется для работы последовательного порта, но надо сказать, что на практике режим 2 мало интересен.




- Начало -  - Назад -  - Вперед -