
- •Лабораторная работа № 4 изучение таймеров микроконтроллера 8xc196кс
- •1. Общие сведения
- •1.1. Таймеры
- •1.2. Программирование таймера 2
- •1.2.2. Выбор источника синхронизации
- •1.2.3. Установка направления счета
- •1.2.4. Выбор сброса Таймера 2.
- •1.2.5. Синхронизация сигналов t2rst, t2clk, и t2Capture
- •1.2.5.1. Одновременная установка сигналов t2rst, t2clk, и t2capture
- •1.3. Прерывания по таймеру
- •1.3.1. Прерывание переполнения таймера
- •Input/Output Control Register 1
- •Input/Output Status Register 1
- •1.3.2. Прерывание переполнения Таймера 2
- •1.3.3. Прерывание фиксатора Таймера 2
- •Timer 2 Capture Register
- •1.4. Предосторожности при работе с Таймерами
- •2. Порядок выполнения работы
- •3. Содержание отчета
Лабораторная работа № 4 изучение таймеров микроконтроллера 8xc196кс
Цель работы: 1. Изучение структуры и функциональных возможностей таймеров микроконтроллера I8XC196КС
2. Изучение порядка программирования таймеров микроконтроллера I8XC196KC.
3. Подготовка программ с использованием интегрированной cреды.
1. Общие сведения
1.1. Таймеры
8XC196KC содержит два 16 битных таймера, Таймер 1 и Таймер 2, которые входят в состав быстродействующего модуля ввода -вывода (High-Speed Input-Output; HSIO).
Таймер 1 - стандартный, 16-битный таймер свободного доступа, который увеличивается один раз каждые восемь тактов. Напомним, что при частоте тактового генератора 8 МГц один такт составляет 250 наносекунд. Таймер 1 - всегда датчик времени для HSI (High-Speed Input) модуля. Он может также выбираться как датчик времени для HSO (High-Speed Output) модуля. Два байта регистра TIMER1 содержат счет Таймера1. Вы можете инициализировать Таймер 1 значением, отличным от нуля, записывая его в регистр TIMER1 в HWindow 15. Если Вы изменяете значение TIMER1 после инициализизации HSI модуля, Вы можете нарушить относительные времена между HSI событиями. Также, изменение значения TIMER1 после инициализизации HSO модуля с Таймером 1 в качестве датчика времени, может вызвать пропуск команд HSO.
Таймер 2 - программируемый 16-битный счетчик, который может использоваться как датчик времени для HSO модуля, как суммирующий/вычитающий счетчик, или как дополнительный счетчик. Он может также фиксировать внешние события.
Таймер 2 может синхронизироваться или внутренне или внешне. Когда выбирается внешняя синхронизация, Вы можете выбрать в качестве источника синхронизации или контакт T2CLK (P2.3) или контакт HSI.1.
Регистр Timer 1
TIMER 1
0B/0AH
Hwindow 0 (Read),HWindow 15 (Write)
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TIMER 1 (HI) |
TIMER 1 (LO) |
Максимальная скорость счета Таймера 2 - каждое время состояния ( быстрый режим приращения ) или каждые восемь времен состояния ( нормальный режим ).
Два байта регистра TIMER2 содержат значение Таймера 2. Вы можете инициализировать Таймер 2 значением, отличным от нуля, записывая его в регистр TIMER2 в HWindow 0. При использовании Таймера 2 как датчика времени для HSO, изменение значения TIMER2 после инициализизации HSO модуля, может заставить HSO пропускать команды.
Регистр Timer 2
TIMER 2
0D/0CH
Hwindow 0 (Read/ Write)
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TIMER 2 (HI) |
TIMER 2 (LO) |
1.2. Программирование таймера 2
1.2.1. Служебные регистры
Ниже приведены регистры, которые воздействуют на работу и функции Таймера 2.
Input/Output Control Register 0
IOC0
15H
HWindow 0 (Write), HWindow 15 (Read)
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
T2CLK SCR |
|
T2RSTSRC |
|
T2RST_ENA |
|
SW_T2RST |
|
Input/Output Control Register 2
IOC2
0BH
HWindow 0 (Write), HWindow 15 (Read)
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
T2UD_ENA |
FAST_T2_ENA |
Input/Output Control Register 3
IOC3
0CH
HWindow 1 (Write), HWindow 15 (Read)
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
R |
R |
R |
R |
|
|
|
T2_ENA |
Таблица 4.1
TIMER2 |
Содержит значение Таймера 2. |
T2CAPTURE |
Передний фронт на контакте P2.7 заставляет значение Таймера фиксироваться в этот регистр и генерирует прерывание Timer 2 Capture interrupt (INT11). |
INT_MASK1 |
Маска прерывания INT_MASK1 разрешает или запрещает прерывания Таймера 2. |
IOC0 |
Регистр управления 0. Выбирает внешние источники синхронизации и сброса для Таймера 2. |
IOC1 |
Регистр управления 1. Выбирает источник прерывания для прерывания “Переполнение Таймера” (Timer Overflow interrupt (INT07). ) |
IOC2 |
Регистр управления 2. Разрешает или запрещает режим быстрого инкремента (приращения), суммирующую/вычитающую функцию счётчика и границу переполнения для вызова прерыванияTimer 2 Overflow interrupt (INT12). |
IOC3 |
Регистр управления 3. Выбирает внутренний или внешний источник синхронизации для Таймера 2. |
В табл.4.2 приведены индивидуальные биты и контакты порта, которые управляют опциями Таймера 2. Столбец два приводит результат установки бита или контакта порта. Столбец три приводит результат очистки бита или контакта порта.
Таблица 4.2
Служебные биты и контакты Таймера 2
Контакты Порта /Биты регистра |
Бит = 1 |
Бит = 0 |
IOC0.1 |
Сброс Таймера 2 при каждой установке этого бита |
Нет действия. |
IOC0.3 |
Допускает внешний сброс |
Отключает внешний сброс |
IOC0.5 |
HSI.0-внешний источник сброса |
T2RST (P2.4) внешний источник сброса |
IOCO.7 |
HSI.1-внешний источник часов |
T2CLK (P2.3) - внешний источник часов |
|
Допускает |
Отключает |
IOC1.3 |
Таймер 2 как источник прерывания “Переполнение Таймера” (INT00) | |
IOC2.0 |
Допускает режим быстрого приращения |
Отключает режим быстрого приращения |
IOC2.1 |
Допускает вычитающий счет |
Только суммирующий счёт |
IOC2.5 |
Прерывание на границе 7FFFH/8000H |
Прерывание на границе 0FFFFH/0000H |
T2UP-DN (P2.6) |
Вычитающий счет если IOC2.1 = 1 |
Суммирующий счет если IOC2.1 = 1 |
T2CAPTURE (P2.7) |
Фиксирует TIMER2 в T2CAPTURE когда происходит положительный переход на контакте P2.7 и логический уровень на нем остается устойчивым в течение одного времени состояния |
В целях лучшего понимания принципов программирования Таймера 2 на рисунке 4.1 приведена логика управления Таймером 2.


Fosc/4
IOC0.7
Fosc/32
Рис.4.1. Логика управления Таймером 2