Перевести таймер T0 в 16-разрядный режим ; 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Перевести таймер T0 в 16-разрядный режим ;



Синхронизироваться от внутреннего генератора ; |+------Запретить управление таймером от вывода INT0 ; ||++-------Перевести таймер T1 в 13-разрядный режим ; |+---------Синхронизироваться от внутреннего генератора ; +----------Запретить управление таймером от вывода INT1   ;Настроить таймер на генерацию 15-миллисекундного интервала времени------ MOV TH0, #HIGH(-15000);Загрузить старший байт таймера MOV TL0, #LOW(-15000);Загрузить младший байт таймера   OjidanTimer: JNB TF0, OjidanTimer;Подождать пока не переполнится таймер В рассмотренном примере переполнение таймера произойдет через 15000 циклов процессора, то есть при частоте тактового генератора микроконтроллера, равной 12 МГц, через 15 мс. Программа будет постоянно проверять состояние флага переполнения таймера и, как только он установится в единицу, перейдет к выполнению следующей команды. Это не самый лучший вариант использования таймера, но для иллюстрации его настройки для работы в режиме 1 вполне подходит. Режимы 0 и 1 таймеров T0 и T1 предназначены для формирования одиночного интервала времени. Если возникает необходимость формировать периодическую последовательность интервалов времени, то необходимо обеспечить программную загрузку регистров TH0 и TL0 для задания нужного интервала времени, что для коротких интервалов времени может привести к значительным затратам процессорного времени. Для формирования последовательности одинаковых интервалов времени используется режим работы таймера с перезагрузкой — режим 2.

Режим 2

В режиме 2 регистр таймера TL0 работает как 8-битный суммирующий счетчик с автоматической перезагрузкой начального значения из регистра TH0. Переполнение счетчика TL0 не только устанавливает флаг TF0, но и снова загружает регистр TL0 содержимым TH0. Перезагрузка таймера не изменяет содержимое регистра TH0.

Для задания периода временн ы х интервалов в регистр TH0 записывается отрицательное число. Работе таймера 0 или таймера 1 в режиме 2 соответствует схема, приведенная на рис. 20.16. При этом первый период колебания будет произвольным, но в большинстве случаев это не важно. Если же первый период колебания важен, то кроме регистра TH0 необходимо программно устанавливать значение регистра TH1.

Рис. 20.16. Схема таймера T0, работающего в режиме 2

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

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

MOV TMOD, #00000010b;перевести таймер T0 во режим 2, а T1 в режим 0

;

|| ;

Перевести таймер T0 в режим 8- разрядного ;

Таймера с автозагрузкой ;

Работа от внутреннего генератора ; |+------Запретить управление таймером от вывода INT0 ; ||++-------Перевести таймер T1 в 13-разрядный режим ; |+---------Работа от внутреннего генератора ; +----------Запретить управление таймером от вывода INT1   ;Настроить таймер на генерацию 50-микросекундного интервала времени------ MOV TH0, #-50;Загрузить старший байт таймера MOV TL0, #-50;Загрузить младший байт таймера   OjidanTimer: JNB TF0, OjidanTimer;Подождать пока не переполнится таймер CPL P2.6;Проинвертировать сигнал на выводе 6 порта P2   SJMP OjidanTimer;Снова перейти к ожиданию окончания временного ;интервала

Режим 3

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

Рис. 20.17. Логика работы таймера 0 в режиме 3

Работа таймера TL0 разрешена, если бит TR0 = 1, а таймера TH0 — если бит TR1 = 1. Таймер 1 при работе таймера 0 в режиме 3 постоянно включен, так как он обычно при этом используется для синхронизации последовательного порта и работает в первом или втором режимах работы.

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



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 237; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.148.124 (0.004 с.)