Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Перевести таймер 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 с.) |