- •Однокристальный миКрОконтроллер к1816ве51 методические указания
- •Введение
- •Контрольные вопросы
- •Домашнее задание к выполнению лабораторной работы №2
- •Лабораторная работа №2 система внешних прерываний
- •Краткие теоретические сведения
- •Задания на лабораторную работу
- •Контрольные вопросы
- •Краткие теоретические сведения к заданию 2
- •Краткие теоретические сведения к заданию 3
- •Контрольные вопросы
- •Регистр режима работы таймера/счетчика
- •Регистр управления/статуса таймера
- •Регистр управления/статуса уапп
- •Регистр управления мощностью рум
- •Настройка таймера 1 для управления частотой работы уапп
- •Регистр масок прерывания (рмп)
- •Регистр приоритетов прерывания
- •Библиографический список
- •Содержание
- •Однокристальный миКрОконтроллер к1816ве51 методические указания
- •394026 Воронеж, Московский просп., 14
Краткие теоретические сведения к заданию 2
Отработать определенный временной интервал можно также, используя прерывания от таймера. В МК ВЕ51 имеются два программируемых 16-битных таймера/счетчика (T/C0 и T/C1), которые могут быть использованы как в качестве таймеров, так и в качестве счетчиков внешних событий. Каждый из них состоит из двух 8-битных регистров TH0 (старший байт) и TL0 (младший байт) для таймера 0 или TH1 (старший байт) и TL1 (младший байт) для таймера 1.
В режиме таймера содержимое соответствующего регистра инкрементируется в каждом машинном цикле, т.е. через каждые 12 периодов колебаний кварцевого резонатора. В режиме счетчика - инкрементируется под воздействием перехода из 1 в 0 внешнего входного сигнала, подаваемого на вывод микроконтроллера T0 или T1 соответственно.
Таймеры могут работать в одном из четырех режимов:
режим 0: 13-битный таймер;
режим 1: 16-битный таймер;
режим 2: 8-битный автоперезагружаемый таймер;
режим 3: таймер 0 как 2 раздельных 8-битных таймера.
Кроме того, таймер 1 можно использовать для задания скорости передачи (baud rate) последовательного порта.
Для переключения режимов работы таймеров используются биты M0 и M1 регистра специальной функции TMOD (см. прил. 2). Название образовано от сокращения двух английских слов: T(timer)- таймер и mode - режим.
Таймер может включаться и выключаться битами TR0, TR1 (timer restart). Биты включения таймеров TR0 и TR1 размещены в регистре TCON (timer control) (см. прил. 2).
Для работы таймера также необходимо разрешить прерывания, установив в 1 ET0 или ET1 (enable timer) в регистре масок прерываний IE, а также снять блокировку подсистемы прерываний через управляющий бит EA.
В режиме 2 регистр таймера TLi работает как 8-битный счетчик с автоматической перезагрузкой начального значения из регистра ТНi в регистр TLi. Переполнение регистра TLi не только устанавливает флаг TFi, но и загружает регистр TLi содержимым регистра ТНi, который предварительно инициализируется программно. Перезагрузка не изменяет содержимое регистра ТНi.
Таким образом, в функции main() обязательно нужно установить биты ЕА, TRi, ETi, инициализировать THi (начальное значение выбирается по усмотрению разработчика программы), а также режим работы таймера в регистре TMOD. Функция должна заканчиваться бесконечным циклом.
Обработчик прерывания прерывания будет подсчитывать прерывания от таймера, которые во втором режиме происходят при переполнении регистра TLx, c частотой 12МГц/(12·(256-(TH0)).
В начале написания программы необходимо вычислить, сколько прерываний должно произойти для отработки временного интервала. Пусть таких прерываний будет Т. Тогда частота, с которой будет изменятся состояние светодиода, составит 12МГц/(12·T·(256-(TH0)). В обработчике необходимо определить переменную, в которой будем хранить число прерываний от таймера, и как только произойдет Т прерываний – изменим состояние светодиодов, а переменную сбросим в 0.
Задание 2. Подключите к МПС на основе МК ВЕ51 светодиод. Разработайте программный модуль, который изменяет состояние светодиода с частотой, заданной преподавателем. Способ передачи данных - посредством прерываний от таймера. Используйте второй режим работы таймера/счетчика. Отладьте программный модуль.
