|
В начало
Лабораторная
работа.
Изучение
режимов работы таймера-счетчика в МК
Цель работы: 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.в.
- 28 - Рис. 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 контроллера. 1. Разработать программу аппаратно-программной задержки, обеспечивающую наблюдение эффекта "Бегущего огня" на индикаторных светодиодах. Вид и частота "бегущего огня" определены вариантом задания (номер бригады). Совместно с таймером/счетчиком
при выполнении лабораторной работы необходимо использовать подпрограмму
задержки. Сигнал прерывания TF0 из С/Т0 вызывает модуль программной задержки, реализуемой
с использованием соответствующего кода, загружаемого в регистр МК и декрементируемого
после очередного сигнала прерывания из Т/С0. В режиме реального времени реализация задержки только посредством таймера при частоте тактирования микроконтроллера 6Mгц для 16-битного Т/С составляет около 130 мс, что недостаточно для визуального наблюдения за "бегущим огнем", используемым в качестве индикатора результатов эксперимента. В режиме моделирования процессы в ОМК идут медленнее в сотни раз. Поэтому настройка C/T0 иная, чем в режиме реального времени В соответствии с заданием определить длительность и количество вызовов подпрограммы задержки для режимов реального времени и моделирования. Возврат из подпрограммы
программной задержки обеспечивается командой RETI, восстанавливающей содержимое
программного счетчика РС из стека. В стек РС загружается автоматически по аппаратно
сформированному коду команды LCALL. В РС при прерывании от Т/С0 загружается код
адреса 000BH, в котором находится команда перехода к подпрограмме обработки
соответствующего прерывания. А. Разрешение счета обеспечивается битом GATE, устанавливаемым в регистре TMOD. В. Разрешение счета
обеспечивается внешним сигналом, поступающим на вход прерывания INT0 (в макете
обозначен IO).
2. Разработать программу подсчета числа внешних сигналов /событий/. Источником сигналов является внешний сигнал, поступающий на вход Т0, режим работы Т/С0 - режим 1. Результатом выполнения программы является код числа сигналов, выведенный на СИД. Построить программу подсчета внешних сигналов для Т/С0 в режиме 2. Для наблюдения выполнения программы загрузить в TL0 и TH0 одинаковые коды, например 0F8H. Изучить особенность работы Т/С0 в режиме 2. Управление прерыванием (разрешить/запретить) от Т/С0 можно осуществить сбросом бита IE.7 или бита IE.1 в регистре масок прерывания IE. Содержание отчета
1. Представить структурные схемы работы таймера/счетчика для изучаемых режимов. 2. Представить алгоритмы и программы для выполненных заданий. 3. Сделать выводы об эффективности использования таймера/счетчика в рассматриваемых экспериментах. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||