МК
Изучение режимов работы
таймера-счетчика в МК (Лабораторная работа)
Цель
работы: 1.
Ознакомление
с некоторыми применениями таймера/счетчика в микроконтроллере. 2.
Изучение
вопросов программирования и применения таймера/счетчика в основных режимах его
работы. Общие сведения
В микроконтроллере
МК8051 в качестве счетчиков и таймеров могут быть использованы два 16-битных
таймера/счетчика Т/С0 и Т/С1. В режиме таймера содержимое Т/С инкрементируется
в каждом машинном цикле, состоящем из 12 периодов кварцевого резонатора. В
режиме счетчика содержимое Т/С инкрементируется под воздействием внешнего
сигнала на входах Т0,Т1 при переходе из 1 в 0. Так как для распознавания
перехода требуется два машинных цикла, то максимальная частота подсчета входных
сигналов составляет 1/24 частоты резонатора. На длительность входных сигналов
ограничений сверху нет. Управление работой и
взаимодействием Т/С с подсистемой прерывания осуществляется посредством двух
регистров: -
регистра
режима работы TMOD; -
регистра
управления/состояния CON. Назначение отдельных разрядов
регистра TMOD приведено на рис.3.1, а регистра TCON - на рис.3.3. Биты 7-4 и
3-0 используются для определения режимов работы Т/С1 и Т/С0 соответственно. Рис.3.1. Формат регистра
режима TMOD
Режим 0. Работа Т/С в
этом режиме показана на рис.3.2.а на примере Т/С0. В этом режиме разрядность
Т/С - 13 бит, при переходе Т/С из состояния "все единицы" в состояние
"все нули" устанавливается флаг прерывания TF0. Входной синхросигнал
таймера разрешен (поступает на вход Т/С), когда управляющий бит GATE
(блокировка) равен 0, либо на внешний вход запроса прерывания INT0 поступает
уровень 1. Необходимо отметить, что установка бита GATE в 1 позволяет использовать
таймер для измерения длительности импульсного сигнала, поступающего на вход
INT0. Рис. 3.2.а Логика работы
TC0 в режиме 0 Режим 1. Отличается от
режима 0 только тем, что разрядность Т/С равна 16. Работа Т/С0 в этом режиме
показана на рис.3.2.б. Рис. 3.2.б Логика работы
TC0 в режиме 1 Режим 2. В режиме 2
переполнение (переход из состояния 11...1 в 00...0) 8-битного счетчика TL0
приводит к формированию флажка TF0 и автоматической загрузке в TL0 байта из
регистра TH0 Т/С0, заданного предварительно программным способом. При
перезагрузке содержимое TH0 остается неизменным. В этом режиме T/C0 и T/C1
функционируют одинаковым образом. Работа Т/С0 показана на рис.3.2.в. Рис. 3.2.в Логика работы
TC0 в режиме 2 Рис. 3.2.г Логика работы
TC0 в режиме 3 Режим 3. В режиме 3 T/C1
и T/C0 функционируют различно. Т/С1 сохраняет свое текущее содержимое, т.е. это
аналогично сбросу управляющего бита TR1 регистра TCON в 0. Работа Т/С0 в режиме
3 показана на рис.3.2.г. Счетчики TL0 и TH0 работают как два независимых
8-битных счетчика/таймера. Работу TH0, который
может выполнять только функции таймера, определяет только управляющий бит TR1.
При этом TH0 использует флаг переполнения TF1. Работу TL0 определяют
управляющие биты Т/С0 (C/T, GATE, TR0), входной сигнал INT0 и флаг переполнения
TF0.
Рис.3.3. Формат регистра
управления TCON
Задания
Вывод результата
эксперимента осуществляется через порт P1 контроллера. Разработать программу
аппаратно-программной задержки, обеспечивающую наблюдение эффекта
"Бегущего огня" на индикаторных светодиодах. Вид и частота "бегущего
огня" определены вариантом задания (номер бригады). Совместно с
таймером/счетчиком при выполнении лабораторной работы необходимо использовать
подпрограмму задержки. Сигнал прерывания TF0 из С/Т0 вызывает модуль
программной задержки, реализуемой с использованием соответствующего кода,
загружаемого в регистр МК и декрементируемого после очередного сигнала прерывания
из Т/С0. В режиме реального
времени реализация задержки только посредством таймера при частоте тактирования
микроконтроллера 6Mгц для 16-битного Т/С составляет около 130 мс, что
недостаточно для визуального наблюдения за "бегущим огнем",
используемым в качестве индикатора результатов эксперимента. В режиме моделирования
процессы в ОМК идут медленнее в сотни раз. Поэтому настройка C/T0 иная, чем в
режиме реального времени В соответствии с
заданием определить длительность и количество вызовов подпрограммы задержки для
режимов реального времени и моделирования. Возврат из подпрограммы
программной задержки обеспечивается командой RETI, восстанавливающей содержимое
программного счетчика РС из стека. В стек РС загружается автоматически по
аппаратно сформированному коду команды LCALL. В РС при прерывании от Т/С0
загружается код адреса 000BH, в котором находится команда перехода к подпрограмме
обработки соответствующего прерывания. А. Разрешение счета обеспечивается битом GATE,
устанавливаемым в регистре TMOD. В. Разрешение счета обеспечивается внешним
сигналом, поступающим на вход прерывания INT0 (в макете обозначен IO).
1.
Разработать
программу подсчета числа внешних сигналов /событий/. Источником сигналов
является внешний сигнал, поступающий на вход Т0, режим работы Т/С0 - режим 1. Результатом
выполнения программы является код числа сигналов, выведенный на СИД. Построить
программу подсчета внешних сигналов для Т/С0 в режиме 2. Для наблюдения
выполнения программы загрузить в TL0 и TH0 одинаковые коды, например 0F8H. Изучить
особенность работы Т/С0 в режиме 2. Управление
прерыванием (разрешить/запретить) от Т/С0 можно осуществить сбросом бита IE.7
или бита IE.1 в регистре масок прерывания IE. Содержание
отчета
1.
Представить
структурные схемы работы таймера/счетчика для изучаемых режимов. 2.
Представить
алгоритмы и программы для выполненных заданий. 3.
Сделать
выводы об эффективности использования таймера/счетчика в рассматриваемых
экспериментах. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||