Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
10.02.2015
Размер:
199.27 Кб
Скачать

Лабораторная работа №3.

Изучение режимов работы таймеров.

Цель работы:

1.Изучить функциональные возможности таймеров МК АТ89S8253.

2.Изучить порядок программирования таймеров МК АТ89S8253.

Теоретическое введение.

1 Описание работы таймеров МК

Таймеры – устройства ввода/вывода, предназначенные для точного задания различных временных интервалов, могут использоваться для генерации прямоугольных импульсов и измерения временных характеристик импульсных сигналов. Применяются в функциях деления, распространения, модуляции сигналов, преобразования параллельного кода в последовательный.

Для пользователя в МК предоставлены три 16-разрядных таймера: Таймер0, Таймер1 и Таймер2. Таймер0 и Таймер1 синхронизируют действия МК в режиме реального времени, а Таймер 2 может тактироваться внешним сигналом (может быть сброшен аппаратно) и синхронизирует действия по отношению к внешним событиям. Таймеры 0 и 1 работают непрерывно и инкрементируются каждые 12 циклов тактового сигнала. При переполнении могут вызывать прерывания.

1.1 Таймер0 и Таймер1

В состав блока таймеров/счетчиков 0 и 1 входят:

два 16-разрядных регистра Т/С0 и Т/С1,

8-разрядный регистр режимов ТMOD,

8-разрядный регистр управления TCON,

схема инкремента и различные схемы управления.

Регистры Т/С0, Т/С1 хранят текущее состояние счетчика. Каждый из них состоит из двух 8- разрядных регистров - ТН0, TL0 и TH1, TL1. Регистры ТН0 и TH1 содержат старшие, а регистры ТL0 и TL1 - младшие разряды значения Т/С. Каждый из них программно доступен как по записи - для занесения начальной величины счёта, так и по чтению - для контроля их содержимого. В процессе счета содержимое регистров Т/С инкрементируется. Переполнение счётчиков (переход из состояния FFFFh в состояние 0000h) может служить признаком окончания счёта и инициализировать прерывание от таймеров.

Регистр режимов ТMOD (РСН) предназначен для установки режимов работы Т/С0 и T/C1 и определения источников их синхронизации (внутренних или внешних).

Обозначение

Адрес бита

 

Функция

бита

 

 

 

 

 

 

GATE1

TMOD.7

Разрешение управления Т/С1 от внешнего входа INT1.

 

 

"0" - управление запрещено, "1" - управление разрешено.

 

 

 

C/T1

TMOD.6

Определение работы T/C1: "0" - работа в режиме таймера, "1" - работа в

 

 

режиме счетчика внешних событий.

 

 

 

M1.1,

TMOD.5,

Определение номера режима работы T/C1

M0.1

TMOD.4

(00 - режим 0,…, 11 -

режим 3).

 

 

 

GATE0

TMOD.3

Разрешение управления Т/С0 от внешнего входа INT0.

 

 

"0" - управление запрещено, "1" - управление разрешено.

 

 

 

C/T0

TMOD.2

Определение работы T/C0: "0" - работа в режиме таймера, "1" - работа в

 

 

режиме счетчика внешних событий.

 

 

 

M1.1,

TMOD.1,

Определение номера режима работы T/C0

M0.1

TMOD.0

(00 - режим 0,…, 11 -

режим 3).

 

 

 

 

Регистр управления TCON (РСН) хранит управляющее слово T/C0 и T/C1.

Обозн. бита

Адрес бита

Функция

 

 

 

TF1

7

Флаг переполнения T/C1

 

 

 

TR1

6

Бит включения T/C1

 

 

 

TF0

5

Флаг переполнения T/C0

 

 

 

TR0

4

Бит включения T/C0

 

 

 

IE1

3

Флаг запроса внешнего прерывания по входу INT1

 

 

 

IT1

2

Бит вида прерывания по входу INT1

 

 

 

IE0

1

Флаг запроса внешнего прерывания по входу INT0

 

 

 

IT0

0

Бит вида прерывания по входу INT0

 

 

 

TF0 и TF1 устанавливаются по переходу счетчиков из состояния FFh в 00h. При разрешении прерывания от таймера установка флага вызывает прерывание. Флаги сбрасывается аппаратно только при передаче управления обработчику соответствующего прерывания. Могут быть установлены и сброшены программно, доступны по чтению.

Биты включения TR0 и TR1 устанавливаются и сбрасываются программно. Доступны по чтению. Установка бита в "1" приводит к включению T/C, а сброс в "0" — к остановке T/C.

Режимы работы таймеров/счетчиков 0 и 1

Таймеры/счетчики могут работать в одном из 4-х режимов, определяемых разрядами M1.0 (М1.1) и M0.0 (М0.1) регистра TMOD. Режимы 0,1,2 одинаковы для обоих таймеров/счетчиков, поэтому описание таймера 0 в этих режимах подходит и таймеру 1. Установка T/C0 в режим 3 влияет на режим работы T/C1.

Режим 0 Таймер/счетчик - устройство на базе 13-битного регистра, образованного регистром ТН0 и пятью младшими битами регистра TL0 (3 старших бита - незначащие). Регистр TL0 выполняет функцию делителя на 32. Счёт начинается при установке бита TR регистра TCON в "1". Установка в "1" бита GATE регистра TMOD разрешает управление T/C извне. Установка в "0" бита TR регистра TCON запрещает счет независимо от состояния других битов.

Влияние управляющих сигналов TR1, GATE1, C/T1 и сигнала внешнего управления INT1 на работу таймера/счетчика на примере T/C1 представлено в таблице.

Таблица

TR1

GATE

INT1

C/T1

функция

 

 

 

 

 

0

х

х

х

Остановка счета

 

 

 

 

 

1

0

х

0

Счет в режиме таймера

 

 

 

 

 

1

0

х

1

Счет в режиме счетчика внешних событий

 

 

 

 

 

1

1

1

х

Остановка счета

 

 

 

 

 

1

1

1

0

Счет в режиме таймера

 

 

 

 

 

1

1

1

1

Счет в режиме счетчика внешних событий

 

 

 

 

 

Ниже приведена блок-схема работы T/C0 и T/C1.

Здесь и далее T, INT — выводы МК, OWERFLOW — переполнение, INTERRUPT — прерывание, Periph Clock периферийный счетчик, GATE, C/T TF, TR - биты регистров.

Рисунок Таймер/счетчик в режиме 0.

Режим 1 отличается от режима 0 тем, что таймер/счетчик 16-битный регистр, (TL имеет 8 бит). Режим 2 (автоперезагрузка)Таймер/счетчик - устройство на основе 8-разрядного регистра TL0.

При переполнении регистра TL0 во время счета, он автоматически перезагружается значением,

записанным в регистре TН0. При переполнении регистра TL0 флаг TF0 (регистр TCON) устанавливается автоматически. Назначение битов управления режима 2 соответствует режимам 0 и 1.

Рисунок Таймер/счетчик в режиме 2 Режим 3 (Только для Т/С0). Т/С1 в режиме 3 заблокирован и сохраняет содержимое своих

регистров TL1 и ТH1 (как при TR1=0). Таймер/счетчик T/C0 в режиме 3 - два независимых устройства на основе 8-битных регистров TH0 и TL0. Устройство на основе регистра TL0 может работать как в режиме таймера, так и в режиме счетчика внешних сигналов. За ним сохраняются все биты управления, оно реагирует на воздействия по входам T0 и INT0. При переполнении TL0 устанавливается флаг TF0.

Устройство на базе регистра TH0 работает только как таймер. Оно использует часть управляющих битов и флагов Т/С1; например, при переполнении ТН0 устанавливается ТF1, а для включения используется бит TR1. Остальные биты таймера/счётчика Т/С1 с работой ТН0 не связаны.

Установка T/C0 в режим 3 лишает T/C1 бита включения TR1. Поэтому, при нахождении Т/С0 режиме 3, T/C1 работает в режимах 0,1 или 2 (GATE1=0), при переполнении в режимах 0 и 1 T/C1 обнуляется, а в режиме 2 перезагружается без установки флага. Управление от входов INT1, T1, биты управления C/T1, GATE1 для T/C1 не зависят от режима T/C0.

Т/C1 аппаратно связан с блоком синхронизации последовательного интерфейса (ПИ). При работе в режимах 0,1 или 2 при переполнении T/C1 вырабатывается импульс синхронизации ПИ. Поэтому режим 3 T/C0 применяется, когда требуется работа ПИ и двух таймеров/счетчиков или ПИ, таймера и счетчика.

Если T/C0 - в режиме 3, T/C1 можно выключить (переведя его тоже в режим 3), использовать с последовательным портом для выработки синхронизирующих сигналов или в других приложениях, не требующих прерывания.

Рисунок Таймер/счетчик в режиме 3: 2 8-битных счетчика

1.2Таймер2

Таймер2 срабатывает по заднему фронту вывода T2EX. Он может быть доступен как по записи - занесение начальной величины счета, так и по чтению для контроля содержимого. Таймер2 -

Таймер/Счетчик внешних событий. Тип операции выбирается битом С / Т2 в РСН T2CON. Таймер2 имеет три режима: захват, автоперезагрузка (увеличивающий или уменьшающий счетчик), и режим генератора импульсов. Режимы выбираются битами РСН T2CON. Таймер2 состоит из двух 8-битных регистров: TH2 и TL2. В режиме Таймера, регистр TL2 увеличивает свое значение на единицу каждый машинный цикл (инкрементирует). Машинный цикл состоит из 12 тактов ГТИ, коэффициент счета равен 1/12 частоты тактового генератора.

В режиме Счетчика, содержимое регистра инкрементируется по перепаду из 1 в 0 (задний фронт) сигнала на входном выводе T2. Так как на распознавание перехода требуется 2 машинных цикла, то максимальная частота подсчета входных сигналов равна 1/24 частоты резонатора. Для

гарантированного прочтения входного считаемого сигнала он должен удерживать значение 1 не менее одного машинного цикла.

 

 

 

Таблица 1

Таймер2, выбор режимов

RCLK + TCLK

СР / RL 2

 

TR2

Режим

0

0

 

 

1

16битный авто-перезагрузка

0

1

 

 

1

16битный захват

1

Х

 

1

Генератор частоты

Х

х

 

0

выключено

Регистры Таймера2

Управляющие и статусные биты Таймера2 содержатся в РСН T2CON и T2MOD. Пара регистров (RCAP2H, RCAP2L), - регистры 16битовых режимов захват/автоперезагрузка для Таймера2

Таблица Назначение битов регистра управления Т/С2 T2CON

Обозн.

Адрес

 

Функция бита

 

бита

бита

 

 

 

TF2

7

 

Флаг переполнения Таймера2, устанавливается Таймером2, очищается

 

 

 

программно. Не установится, если RCLK = 1 или TCLK = 1.

EXF2

6

 

Внешний флаг Таймера2. Устанавливается при сбое или перезагрузке, вызванной

 

 

 

отрицательным переходом на T2EX (P1.1) и EXEN2 = 1. Если прерывания по

 

 

 

Таймеру2 разрешены, установка EXF2 = 1 вызовет прерывание МК по вектору

 

 

 

Таймера2. EXF2 должен очищаться программно. Не вызывает прерывание в

 

 

 

режиме увеличивающего/уменьшающего счетчика (DCEN = 1).

RCLK

5

 

Разрешение приема тактового сигнала. "1" - последовательный порт может

 

 

 

использовать импульсы переполнения в качестве тактового сигнала (опорного) в

 

 

 

режимах последовательного порта 1 и 3. "0" - для тактового сигнала приемника

 

 

 

используются переполнения Таймера1.

 

TCLK

4

 

Разрешение передачи тактового сигнала. "1" - последовательный порт может

 

 

 

использовать импульсы переполнения Таймера2 как тактовый сигнал передачи в

 

 

 

режимах последовательного порта 1 и 3.

 

 

 

 

"0" - в качестве тактового сигнала - импульсы переполнения Таймера1.

EXEN2

3

 

Внешнее разрешение Таймера2. "1" - разрешен захват или перезагрузка при

 

 

 

отрицательном перепаде на выводе T2EX (если Таймер2 не используется для

 

 

 

синхронизации последовательного порта).

 

 

 

 

"0" - Таймер2 игнорирует события на выводе T2EX.

 

TR2

2

 

Запуск/остановкой Таймера2. "1" - старт таймера."0" - остановка.

C/T2

1

 

Выбор функции С/Т2. "0" - режим таймера. "1" - режим внешнего счетчика

 

 

 

событий . Устанавливается выводом Р1.0 (Т2)

 

CP/RL2

0

 

Выбор режима захват/перезагрузка. "1" – режим захвата, (при отрицательном

 

 

 

перепаде напряжения на выводе T2EX и EXEN2 = 1.

 

 

 

 

"0" - автоматическая перезагрузка при переполнении Таймера2 или

 

 

 

отрицательном перепаде на T2EX (при EXEN2 = 1). Если

RCLK или TCLK = 1,

 

 

 

этот бит игнорируется и Таймер2 насильно переводится

на автоперезагрузку по

 

 

 

переполнению Таймера2.

 

 

 

 

Таблица Регистр управления режимом Таймера2 T2MOD .

Обозначение

 

Адрес

Функция бита

 

бита

 

бита

 

 

-

 

 

7…2

Свободные, зарезервированы для будущего использования

T2OE

 

 

1

Разрешение выхода Таймера2

 

DCEN

 

 

0

"1" Таймер2 можно сконфигурировать как увеличивающий или

 

 

 

 

уменьшающий счетчик

 

Режимы работы таймера/счетчика 2 Режим захвата.

Таймер/Счетчик содержит блок захвата, который запоминает состояние счетчика при возникновении внешнего события, тем самым, определяя время его возникновения. В качестве события/событий выступает внешний сигнал, подключенный к выводу T2EX. Результат захвата

состояния таймера может использоваться для вычисления частоты, скважности импульсов и других параметров импульсных сигналов.

Если EXEN2 = 0, Таймер 2 - 16битный таймер/счетчик, при переполнении он устанавливает бит переполнения TF2 в регистре T2CON, который может использоваться для генерации прерывания.

Если EXEN2 = 1, Таймер 2 выполняет ту же операцию, но при переходе T2EX из 1 в 0 текущее значение регистров TH2 и TL2 помещается в регистры захвата RCAP2H и RCAP2L соответственно. Переход на выводе T2EX устанавливает бит EXF2, который также может вызвать прерывание.

Режим автоперезагрузки (увеличивающий/уменьшающий счетчик)

В режиме 16-битной автоперезагрузки Таймер2 может быть запрограммирован на инкрементирование или декрементирование. Если бит разрешения инкремента/декремента DCEN "0", то Таймер2 по умолчанию - инкрементирующий. Когда DCEN "1", направление счета Таймера2 зависит от значения вывода T2EX.

Рисунок . Схема работы Таймера 2 в режиме автоперезагрузки. OSC – генератор тактовой частоты, OVERFLOW – переполнение, RELOAD – перезагрузка, TRANSITION DETECTOR - детектор фронта.

При DCEN = 0 и EXEN2 = 0 Таймер 2 считает до значения 0FFFFH, по достижении которого, устанавливает флаг переполнения TF2. Переполнение вызывает перезагрузку регистров таймера 16битным значением, записанным в RCAP2H и RCAP2L.

При DCEN = 0 и EXEN2 = 1, перезагрузка 16 битов может быть вызвана как переполнением, так и перепадом из 1 в 0 на выводе T2EX. Перепад на T2EX также устанавливает бит EXF2. Биты TF2 и EXF2 могут вызывать прерывание, если это разрешено.

Рисунок . Схема работы Таймера 2 в режиме счетчика.

При DCEN =1 Таймер2 - в режиме увеличивающего/уменьшающего счетчика. Направлением счета управляет значение на T2EX. T2EX="1" -Таймер2 увеличивающий. Если значение счетчика равно 0FFFFH, Таймер2 переполнится и установит флаг TF2. Это вызовет перезагрузку в регистры TH2 и TL2 16-битного значения, записанного соответственно в регистрах RCAP2H и RCAP2L.

При T2EX="0" Таймер2 - уменьшающий. Таймер2 очищается когда TH2 и TL2 равны значениям, загруженным в регистры RCAP2H и RCAP2, что вызывает установку флага TF2 и запись значения 0FFFFH в регистры Таймера2.

Бит EXF2 переключается всегда при переполнении Таймера2 или его очищении и может быть использовано как 17-й бит. В этом режиме, EXF2 не вызывает прерывание.

Режим генератора импульсов. Этот режим устанавливается битом TCLK и/или RCLK в РСН T2CON. Режим генератора импульсов похож на режим автоперезагрузки тем, что изменение состояния регистра ТН2 вызывает перезагрузку регистров Таймера 2 16-битным значением,

записанным ранее программно в регистрах RCAP2H и RCAP2L Длительность импульса определяется коэффициентом деления.

Порядок выполнения работы

1 С помощью Таймера 1 вывести на 7-сегментный индикатор (разряд – по указанию преподавателя) точку, мигающую с частотой 1Гц.

-определить биты регистра TMOD Таймера 1: режим (Mode) 1, функция – таймер;

-рассчитать требуемую периодичность мигания точки. В режиме Таймера, 16-битный регистр увеличивает свое значение на единицу каждый машинный цикл (машинный цикл длится 12 тактов ГТИ, т.е. коэффициент счета равен 1/12 частоты тактового генератора). Частота внешнего резонатора –

f = 8МГц. Так как таймер -16-битный, то за 1 секунду будет совершаться примерно 10,17 переполнений: 8МГц/(12*216);

-в функции Timer1InterruptHandler (см пример) описать действия, выполняемые МК по прерыванию

-набрать код программы, скомпилировать и прошить в МК.

Пример

void Timer1InterruptHandler() org 0x1B

{ EA = 0;

// очистить флаг разрешения прерывания

TR1 = 0;

// остановить Timer1

TH1 = 0x00;

// сбросить значение старшего байта Timer1

TL1 = 0x00;

// сбросить значение младшего байта Timer1

 

 

Действия по прерыванию

 

 

EA = 1;

// установить общий флаг разрешения прерывания

TR1 = 1;

 

// запустить Timer1

}

 

 

void main()

 

 

{ P0 = 0;

// инициализировать PORT0

TF1 = 0;

 

// убедиться, что флаг прерывания TF1 очищен

ET1 = 1;

 

// разрешить прерывание Timer1

EA = 1;

// установить общий флаг разрешения прерывания

TMOD.T1_GATE = 0; // запрет внешнего управления

TMOD.T1_CT

 

= 0; // установка в режиме таймера.

TMOD.T1_M1

= 0; // M1_M0 = 00 => выбор режима работы(16-битный Таймер/Счетчик)

TMOD.T1_M0

= 0;

TR1 = 0;

 

// сбросить Timer1

TH1 = 0x00;

 

// установить старший байт Timer1

TL1 = 0x00;

 

// установить младший байт Timer1

TR1 = 1;

 

// запустить Timer1

}

 

 

2 С помощью прерываний Таймера 0 вывести на порт 2 (светодиоды) бегущий «0» (смещение активного светодиода в сторону старшего разряда при каждом прерывании. Использовать тот же исходный код, что и в первой задаче.

Вопросы для защиты

1 Основные отличия Таймеров 0 и 1 от Таймера 2 2 Описать работу Таймеров 0 и 1 в режимах 1 и 2. 3 Описать работу Таймеров 0 и 1 в режиме 3

4 Описать назначение битов регистра T1CON

5 Описать назначение битов регистра T1MOD

6 Описать назначение битов регистра T2CON

7 Описать назначение битов регистра T2MOD

8 Описать режим захвата.

9Описать режим автоперезагрузки.

10Описать режим генератора импульсов.