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


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


M0 TMOD.4 для Т/С1 и TMOD.0 для Т/С0

Режим 0

В нулевом режиме таймер работает как 13-битный суммирующий счётчик. Этот счётчик состоит из 8 бит регистра ТНх и младших 5 бит регистра TLx, где x в обозначении регистра заменяется на 0 или 1 в зависимости от того таймера, которым мы управляем. Старшие 3 бита регистров TLx не определены и игнорируются. Установка запускающего таймер флага TR0 или TR1 не очищает эти регистры. Работе таймера 0 или таймера 1 в режиме 0 соответствует схема:

mode0.gif (1742 bytes)

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

Этот режим был введён для совместимости с для облегчения переноса уже разработанных программ на новые процессоры и поэтому в настоящее время не используется. Тем не менее, в этом режиме можно обеспечить формирование интервала времени длительностью до 8096 мс при частоте задающего генератора 12 МГц.

Когда содержимое счетчика изменяется из состояния все "1" в состояние все "0" , то устанавливается (принимает значение "1") флаг прерывания таймера TF0 или TF1.

Обычно пользователя интересует не максимальный интервал времени, а свой конкретный интервал времени. Для уменьшения интервала времени в регистры таймера можно предварительно занести число и тем самым сформировать произвольный интервал времени. Рассмотрим пример подготовки таймера T0 для формирования временного интервала 5мс.

;Настроить режим работы таймера------------------------------------------------------------------------------------------- mov TMOD,#00000000b ;настроить таймеры T0 и T1 на нулевой режим работы ; ;++-------Перевести таймер T0 в тринадцатиразрядный режим работы ;|+---------Синхронизироваться от внутреннего генератора ;+----------Запретить управление таймером от ножки INT0 ;++-----------Перевести таймер T1 в тринадцатиразрядный режим работы ;|+-------------Синхронизироваться от внутреннего генератора ;+--------------Запретить управление таймером от ножки INT1 ;Настроить таймер на генерацию 5-ти миллисекундного интервала времени-------------------------------------- mov TH0, #HIGH(-5000) ;Загрузить старший байт таймера mov TL0, #LOW(-5000) ;Загрузить младший байт таймера

В рассмотренном примере для расщепления 16-ти битной константы на два отдельных байта были использованы функции выделения старшего и младшего байта.


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