Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Таймеры.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
48.25 Кб
Скачать

Режим 1

В первом режиме работы таймер работает как шестнадцатиразрядный счётчик. Режим 1 похож на режим 0, за исключением того, что в регистрах таймера использует все 16 бит. В этом режиме регистры ТНх и TLx также включены друг за другом. Работе таймера 0 или таймера 1 в режиме 1 соответствует схема:

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

В этом режиме можно обеспечить формирование интервала времени длительностью до 65536 мкс при частоте задающего генератора 12 МГц.

Рассмотрим пример использования таймера T0 для формирования временного интервала 15мс.

;Настроить режим работы таймера-------------------------------------------------------------------------------------------

mov TMOD,#00000001b ;перевести таймер T0 в первый режим работы, а T1 - в нулевой

;||||||||

;||||||++-------Перевести таймер T0 в шестнадцатиразрядный режим работы

;|||||+-----------Синхронизироваться от внутреннего генератора

;||||+------------Запретить управление таймером от ножки INT0

;||++-------------Перевести таймер T1 в тринадцатиразрядный режим

;|+----------------Синхронизироваться от внутреннего генератора

;+-----------------Запретить управление таймером от ножки INT1

;Настроить таймер на генерацию 15-ти миллисекундного интервала времени------------------------------------

mov TH0, #HIGH(-15000) ;Загрузить старший байт таймера

mov TL0, #LOW(-15000) ;Загрузить младший байт таймера

OjidanTimer:

jnb TF0, OjidanTimer ;Подождать пока не переполнится таймер

В рассмотренном примере переполнение таймера произойдёт через 15000 циклов процессора, то есть через 15 мс. Программа будет постоянно проверять состояние флага переполнения таймера и как только он установится в единицу перейдёт к выполнению следующей команды.

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

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

Режим 2

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

Рисунок 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 ;снова перейти к ожиданию окончания временного интервала