Программируемый интервальный таймер
Программируемый интервальный таймер (ПИТ) i8253/54 (отечественный аналог К580ВИ53.КР1810ВИ54) предназначен для организации работы МП систем и формирования сигналов с разными временными и частотными характеристиками. Структурная схема БИС показана на рис. 1, а условно-графическое обозначение – на рис. 2.
Рис. 1. Структурная схема БИС і8253/54:
CLK – Входы тактовых (счетных) импульсов;
GATE – входы разрешения счета, действие которых зависит от режима работы канала;
OUT – выходы счетчиков
Рис. 2. Условное обозначение БИС i8253/54
Схема таймера содержит: блок управления чтением/записью RWCU с регистром управляющего слова RCW; трехстабильный буфер данных BD; три канала на базе 16-разрядных отрицательных счетчиков CT0 – CT2. Каждый канал содержит счетчик, входные и выходные буферные регистры. Счетчики могут работать в двоичном или двоично-десятичном коде. Максимальная частота счетчика составляет 2 МГц для i8253 и МГц для i8254.
В таблице приведены назначения выводов ПИТ i8253
Таблица 1. Назначение выводов таймера i8253/54
Обозначение | Номер вывода | Назначение |
D7 - D0 | 1 - 8 | Шина данных |
Выборка кристалла; при = 0 разрешена работа БИС | ||
Чтение. Сигнал = 0 настраивает входной буфер на вывод, при котором программированный таймер выдает информацию в МП | ||
Запись. Сигнал = 0 настраивает входной буфер на ввод, при котором программированный таймер выдает информацию в МП | ||
А0, А1 | 19; 20 | Адресные входы, по которым происходит адресация к одному из трех каналов таймера |
CLK2 - CLK0 | 9; 15; 18 | Вход тактовых сигналов для управления счетчиком/таймером. Срез сигнала на входе CLK приводит к уменьшению содержимого таймера на единицу |
GATE2 - GATE0 | 11; 14; 16 | Входы разрешения счета |
OUT2 - OUT0 | 10; 13; 17 | Выходы счетчика/таймера |
Разряды А1, А0 (рис. 1) выбирают обращение к счетчикам или к регистру управляющего слова RCW:
A1 | A0 | Обращение |
CT0 | ||
CT1 | ||
CT2 | ||
RCW |
Сигналы управления работой БИС подаются на блок RWCU и вместе с адресными разрядами А0, А1 задают вид выполняемой операции в соответствии с табл 2.
Таблица 2. Вид операции программируемого таймера в зависимости от сигналов управления и адресных разрядов
Операция | Сигналы управления | ||||
А1 | А0 | ||||
Запись управляющего слова в RCW | |||||
Загрузка СТ0 | |||||
Загрузка СТ1 | |||||
Загрузка СТ2 | |||||
Чтение СТ0 | |||||
Чтение СТ1 | |||||
Чтение СТ2 | |||||
Отсоединение программируемого таймера от шины | x | x | х | х |
Примечание. х – любое значение (0 или 1).
Обобщенная схема подсоединения ПТ к шинам МП показана на рис.3. В качестве примера адресные линии А1, А0 можно подсоединить к линиям А2, А1 шины адресов, на вход подать сигнал с выхода дешифратора адреса.
Рис. 3. Подключение программируемого таймера к шинам микропроцессора
Установка режима работы каждого канала программируемого таймера осуществляется программно – записью управляющего слова (рис. 4) и начального содержимого счетчика.
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
CNT1 | CNT0 | RW1 | RW0 | M2 | M1 | M0 | K |
Рис. 4. Формат управляющего слова программируемого таймера
Значения разрядов D7 (CNT1) и D6 (CNT0) выбирают счетчик (табл. 3)
Таблица 3. Выборка счетчика
D7 | D6 | Счетчик |
Счетчик (СТ0) | ||
Счетчик (СТ1) | ||
Счетчик (СТ2) | ||
Запрещенная комбинация для i8253 и команда чтения слова состояния для i8254 |
Значение разрядов D5 (RW1) и D4 (RW2)выбирают способ чтения/записи (табл. 4).
Таблица 4. Способ чтения/записи
D5 | D6 | Способ чтения/записи |
Чтения содержимого счетчика | ||
Запись только младшего байта | ||
Запись только старшего байта | ||
Запись младшего, а потом старшего байта |
Значение разрядов D3 – D1 (M2 – M0)выбирают один из 6 режимов работы счетчика (табл. 5).
Таблица 5. Режимы работы программированного таймера
М2 | М1 | М2 | Режим |
Режим 0 | |||
Режим 1 | |||
х | Режим 2 | ||
х | Режим 3 | ||
Режим 4 | |||
Режим 5 |
Разряд D0 (K) определяет способ кодирования:
· D0 = 0 – двоичный счетчик;
· D0 = 1 – двоично-десятичный счетчик.
Пример 1. Запрограммировать счетчик 0 в режим 1. Адрес счетчика 0 – 10h, регистра управляющего слова – 16h.
Определим управляющее слово:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
CNT1 | CNT0 | RW1 | RW0 | M2 | M1 | M0 | K | |
=32h |
Программа в кодах МП i8086 будет иметь вид:
MOV AL, 32H ; Формирование управляющего слова
OUT 16H, AL ; Запись его RCW
MOV AL, “младший байт” ; Загрузка младшего байта кода предустановки
OUT 10, AL
MOV AL, “старший байт” ; Загрузка старшего байта кода предустановки
OUT 10H, AL
Программа в кодах МП i8051 будет иметь вид:
MOV DPTR,#16H ; Адрес регистра управляющего слова
MOV A, #32H ; Формирование управляющего слова
MOVX @DPTR,A ; Запись его RCW
MOV DPTR,#10H ; Адрес счетчика 0
MOV A,“младший байт” ; Загрузка младшего байта кода предустановки
MOVX @DPTR,A
MOV A,“старший байт” ; Загрузка старшего байта кода предустановки
MOVX @DPTR,A
Порядок программирования каналов таймера чрезвычайно гибкий. Можно записать управляющие слова режимов во все каналы, а потом в произвольном порядке загружать коды предустановки, а можно запрограммировать в отдельности каждый канал.
В процессе работы программируемого таймера содержимое любое счетчика можно прочитать двумя способами:
· Приостановить работу счетчика подачей сигнала GATE = 0или блокированием тактовых импульсов, а потом прочитать содержимое счетчика с помощью двух команд ввода. Первая команда ввода прочитает младший байт, вторая – старший;
· Записать в программируемый таймер управляющее слово, которое содержит нули в разрядах D4, D5(ноль в этих разрядах указывают на выполнение операции фиксации содержимого счетчика в выходном регистре канала в момент записи управляющего слова). Потом прочитать содержимое счетчика с помощью команд ввода.
Пример 2.Прочитать содержимое счетчика СТ0и записать его в регистр ВХ.Применять адреса таймера такие, как в примере 1.Запрограммировать счетчик 0 в режиме 1.
Определим управляющее слово для фиксации содержимого счетчика:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
CNT1 | CNT0 | RW1 | RW0 | M2 | M1 | M0 | K | |
=2h |
Программа будет иметь вид:
MOV AL, 2H ; Формирование управляющего слова
OUT 16H, AL ; Взвод его RCW
IN AL, 10H ; Чтение младшего байта
MOV BL, AL ; Пересылка младшего байта в BL
IN AL, 10H ; Чтение старшего байта
MOV BH, AL ; Пересылка старшего байта в BH
Таким образом, после выполнения программы в BX будет содержимое счетчика на момент его чтения, а счетчик будет продолжать счет.
В БИС i8254 возможно прочитать слова состояния счетчика. Для этого необходимо записать управляющее слово (рис. 5.)
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
COUNT | STAT | CT2 | CT1 | CT0 |
Рис. 5. Вид управляющего слова БИС i8254:
CT0, CT1, CT2 – выбор счетчика
Счетчик выбирается при записи единицы в соответствующий двоичный разряд CT0, CT1, CT2.Значение STAT = 0 указывает на то, что будет прочитано слово состояния канала, указанного в разряде D3 – D1. Значение COUNT = 0указывает на то, что будет записано содержимое счетчиков, указанных в D3 – D1, в выходных регистрах каналов.
Слово состояния канала имеет вид, показанный на рис. 6.
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
OUT | FN | RW1 | RW0 | M2 | M1 | M0 | K |
Рис. 6. Вид слова состояния канала:
OUT – состояния выхода OUT (0,1);
FN – флаг перегрузки (FN = 1, если была перезагрузка кода предустановки);
Разряды RW1, RW0, M2, M1, M0 и К
(дублируют разряды управляющего слова (см. рис. 5))
Во время записи управляющего слова в счетчик загружается сначала младший, а потом старший байт кода передней установки. В дальнейшем работа таймера зависит от выбранного режима работы.
Режимы работы ПИТ
Счетчики таймера могут работать в таких шести режимах:
1) 0 – программируемая задержка;
2) 1 - программируемый мультивибратор;
3) 2 – программируемый генератор тактовых импульсов;
4) 3 – генератор прямоугольных сигналов;
5) 4 – программно-управляемый строб;
6) 5 – аппаратно-управляемый строб.
Влияние сигнала GATEна соответствующий счетчик зависит от режима работы.
Режим 0. Программируемая задержка. В этом режиме (рис. 7) на выходе выбранного канала таймера формируется сигнал Н-уровня с программно-управляемой задержкой. Задержка отсчитывается от заднего фронта первого импульса CLK после записи младшего байта кода предустановки (константы). После управляющего слова на выходе OUTвыбранного канала таймера устанавливается сигнал L-уровня. Такое же состояния сохраняется при записи младшего байта константы. Если во время счета сигнал GATE = 0,счет прекращается, а появлением GATE = 1- восстанавливается сигнал Н-уровня. Загрузка в счетчик нового значения младшего байта в процессе счета останавливает счет, а загрузка старшего байта начинает новый цикл счета.
Рис. 7. Режим программируемой задержки.
Режим 1. Программируемый мультивибратор. На выходе счетчика формируется импульс L-уровня с программно-управляемой продолжительностью, причем точкой начала отчета является заданий фронт первого импульса CLK после появления Н-уровня сигнала GATE(рис. 8).
При появлении сигнала GATE = 1на выходе OUTформируется импульс L-уровня продолжительностью Nпериодов тактовых импульсов CLK.Загрузка в процессе счета нового значения Nне изменяет текущего режима счета.
Мультивибратор автоматически перезапускается по каждому переднему фронту сигнала GATE.
Рис. 8. Режим программируемого мультивибратора
Режим 2. Программируемый генератор тактовых импульсов. В этом режиме (рис. 9) выбранный канал осуществляет деление частоты импульсов CLKна программно-управляемый коэффициент Nт.е. генерирует периодический сигнал с частотой, в Nраз меньше частоты тактовых импульсов CLK.
Рис. 9. Режим программируемого генератора
тактовых импульсов
Выходной сигнал L-уровня устанавливается на последнем такте периода. Загрузка счетчика новым значением Nв процессе чета приводит к изменению периода. Сигнал GATEможно использовать для внешней синхронизации программируемого таймера, поскольку значение GATE = 0запрещает счет, устанавливая сигнал OUT = 1,а значение GATE = 1начинает счет сигнала.
Режим 3. Генератор прямоугольных импульсов. Выбранный канал формирует прямоугольные импульсы с программно-управляемым периодом. Действие сигнала GATEаналогичное режиму 0. При четном значении Nна выходе счетчика генерируется сигнал H-уровня на протяжении первой половины периода и L-уровня на протяжении второй. При нечетном NпродолжительностьH-уровня на один такт большеL-уровень. В режиме 3 число N = 3нельзя загружать в счетчик. Временные диаграммы для этого режима приведены на рис. 10.
| |||
| |||
Рис. 10. Режим генератора
прямоугольных импульсов
Режим 4. Программно-управляемый строб. В этом режиме на выходе таймера формируется строб L-уровня продолжительностью ТCLK с программно управляемой задержкой относительно момента записи младшего байта кода предустановки. Перезагрузка младшего байта в процессе счета не влияет на текущий счет, а загрузка старшего байта начинает новый цикл счета.
Режим 5. Аппаратно-управляемый строб. Этот режим аналогичен режиму 4. Его отличие от режима 4 состоит в том, что началом отсчета программно-управляемой задержки является передний фронт сигнала GATE.Запуск счетчика осуществляется передним фронтом сигнала GATE.Загрузка в счетчик нового значения Nв процессе счета не влияет на продолжительность текущего цикла, но такой цикл будет соответствовать новому значению N.
Диаграмма работы таймера, которые иллюстрируют действие сигнала GATE, показаны на рис. 11, а)для таймера i8253 и таймера i8254 – на рис. 11, б).Для таймера i8253 с появлением L-уровня сигнала GATEсчет прекращается, а появлением H-уровня – восстанавливается с прерванного значения. Для таймера i8254 L-уровня сигнала GATEтакже прекращает счет, а H-уровень – начинает со значения кода предустановки.
а)
б)
Рис. 11.Диаграммы работы таймера:
а) – для таймера i8253;
б) – для таймера i8254
Пример 3.Запрограммировать счетчик СТ0в режим генератора прямоугольных импульсов для получения частоты ƒвых = 1кГц.
Примем адреса таймера такие, как в примере 2. Для получения последовательности импульсов 1 кГц подключим к выводу G0сигнал H-уровня, на вывод CLK0 –тактовые импульсы с частотой 5 МГц.
Находим значения коэффициента деления так:
Определим управляющее слово в соответствии с рис. 10для программирования счетчика СТ0в режим 3, с двоично-десятичным способом кодирования:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
CNT1 | CNT0 | RW1 | RW0 | M2 | M1 | M0 | K | |
=37h |
Тогда программа в кодах i8086 будет иметь вид:
MOV AL, 37H ; Программирование
OUT 16H, AL ; таймера
MOV AL, 00 ; Запись младшего байта
OUT 10H, AL ; кода предустановки (00)
MOV AL, 50Н ; Запись старшего байта
OUT 10H, AL ; кода предустановки (50)
После выполнения программы на выводе OUT0прямоугольные импульсы с частотой 1 кГц будут до тех пор, пока не будет перепрограммирован таймер или выключен источник питания таймера.
Задание на самостоятельную работу.
Необходимо выполнить ряд разработок для реализации таймера на основе программируемого интервального таймера:
1. разработать схему сопряжение БИС ПИТ с системным интерфейсом МПС (на логических элементах и на БИС дешифратора);
2. составить фрагмент программы инициализации БИС ПИТ в кодах МП i8086 и i8051;
3. составить временную диаграмму работы выбранного канала (остаток от деления №варианта/3).
Варианты заданий:
№ варианта | Базовый адрес, h | Канал таймера | |||||||||||
режим | Число байт | счет | Число пред-установки | режим | Число байт | счет | Число пред-установки | режим | Число байт | счет | Число пред-установки | ||
ДВ | Д | ДВ | |||||||||||
Д | ДВ | Д | |||||||||||
ДВ | Д | ДВ | |||||||||||
3C | Д | ДВ | Д | ||||||||||
ДВ | Д | ДВ | |||||||||||
Д | ДВ | Д | |||||||||||
ДВ | Д | ДВ | |||||||||||
4C | Д | ДВ | Д | ||||||||||
ДВ | Д | ДВ | |||||||||||
Д | ДВ | Д | |||||||||||
ДВ | Д | ДВ | |||||||||||
5C | Д | ДВ | Д | ||||||||||
ДВ | Д | ДВ | |||||||||||
Д | ДВ | Д | |||||||||||
ДВ | Д | ДВ | |||||||||||
6C | Д | ДВ | Д | ||||||||||
ДВ | Д | ДВ | |||||||||||
Д | ДВ | Д | |||||||||||
ДВ | Д | ДВ | |||||||||||
7C | Д | ДВ | Д | ||||||||||
ДВ | Д | ДВ | |||||||||||
Д | ДВ | Д | |||||||||||
ДВ | Д | ДВ | |||||||||||
8C | Д | ДВ | Д | ||||||||||
ДВ | Д | ДВ | |||||||||||
Д | ДВ | Д | |||||||||||
ДВ | Д | ДВ | |||||||||||
9C | Д | ДВ | Д | ||||||||||
A0 | ДВ | Д | ДВ | ||||||||||
A4 | Д | ДВ | Д |
В таблице:
ДВ-двоичный счет, Д-двоично-десятичный (десятичный).