Программируемый интервальный таймер предназначен два выработки временных интервалов между импульсами, частота, длительность и форма которых задается программно. В системах отображения информации ПИТ может быть использован в качестве:
- генератора импульсов прямоугольной формы фиксированной или меняющейся частоты;
- преобразователя код-время;
- цифрового одновибратора;
- формирователя сигналов динамической индикации;
- формирователя сигналов для работы микропроцессорной системы в режиме прерывания.
Три шестнадцатиразрядных счетчика ПИТ могут работать независимо, причем каждый из них может находиться в шести режимах работы. Режимы работы счетчиков определяются состоянием регистра управляющего слова (РУС), который загружается по шине данных. Фрагмент лабораторной установки, реализующий алгоритм исследования ПИТ, располагается в файле job2_1.sch (рис. 8.7.).
Рис. 8.7. Блок программируемого интервального таймера
Рассмотрим программу ступенчатого изменения частоты таймера (табл. 8.6).
Таблица 8.6 Программа ступенчатого изменения частоты таймера
Метки |
Мнемокод |
Комментарий |
1 |
2 |
3 |
MVI A, 16 |
Ввод числа 16 (режим работы ПИТ) в аккумулятор |
|
OUT E3 |
Вывод содержимого аккумулятора по адресу ЕЗ (запись управляющего слова в РУС ПИТ) — программирование счетчика 0 |
|
МVI А, 05 |
Ввод числа 05 (начального значения счетчика 0) в аккумулятор |
|
MI |
ОUТ ЕО |
Вывод содержимого аккумулятора по адресу ЕО, задание начального значения счетчику 0 |
CALL WAIT |
Вызов подпрограммы временной задержки (переход к команде по адресу WAIT) |
|
RLС |
Сдвиг содержимого аккумулятора, подготовка нового начального значения аккумулятора, ввод результата в аккумулятор |
|
JMP M1 |
Переход к команде по адресу M1 |
|
WAIT |
PUSH PSW |
Начало подпрограммы временной задержки: занесение содержимого аккумулятора в стек |
MVI A, PF |
Ввод числа FF в аккумулятор, загрузка первого числа в подпрограмму временной задержки |
Продолжение табл. 8.6
1 |
2 |
3 |
M2 |
MVI В, FF |
Ввод числа FF в регистр В, загрузка второго числа в подпрограмму временной задержки |
M3 |
MVI D, 04 |
Ввод числа 04 в регистр D, загрузка третьего числа в подпрограмму временной задержки |
М4 |
DCR D |
Уменьшение содержимого регистра D на единицу |
JNZ М4 |
Переход к команде по адресу М4 |
|
DCR В |
Уменьшение содержимого регистра В на единицу |
|
JKZ MЗ |
Переход к команде по адресу M3 |
|
DCR A |
Уменьшение содержимого регистра А на единицу |
|
JNZ M2 |
Переход к команде по адресу М2 |
|
POP PSW |
Вызов информации из стека, восстановление содержимого аккумулятора |
|
RET |
Возврат в основную программу |
Программа работает следующим образом. Число, определяющее режим работы ПИТ (в данном случае счетчик 0 переводится в режим 3 — деления частоты, информация о начальном значении заносится только в младший байт, счетчик работает в двоичном коде), через аккумулятор заносится в РУС ПИТ. Затем по адресу счетчика 0 также через аккумулятор заносится начальное значение (в данной программе равное 05). Далее происходит переход на подпрограмму временной задержки, необходимой для разделения во времени режимов работы счетчика с разными частотами. В заключительной части программы изменяется начальное значение счетчика (содержимое регистра С складывается с содержимым аккумулятора). Этот процесс повторяется циклически.
Для работы таймера по этой программе необходимо произвести следующие соединения: подать на вход счетчика 0 счетные импульсы, на вход управления счетчика 0 подать сигнал логической единицы.
Диаграммы работы таймера для этой программы находятся в файле job2_1.__.
Рассмотрим программу ступенчатого изменения длительности импульса таймера (табл. 8.7).
Таблица 8.7 Программа ступенчатого изменения длительности импульса
Метки |
Мнемокод |
Комментарий |
MVI А, 16 |
Ввод числа 16 в аккумулятор |
|
OUT E3 |
Вывод содержимого аккумулятора по адресу ЕЗ (запись управляющего слова в РУС ПИТ) — программирование счетчика 0 |
|
MVI А, 14 |
Ввод числа 14 (начального значения счетчика 0) в аккумулятор |
|
ОUТ E0 |
Вывод содержимого аккумулятора по адресу E0, задание начального значения счетчику 0 |
|
MVI A, 52 |
Ввод числа 52 в аккумулятор |
|
ОUT E3 |
Вывод содержимого аккумулятора по адресу E3 (запись управляющего слова в РУС ПИТ) — программирование счетчика 1 |
|
MVI A, 01 |
Ввод числа 01 (начального значения счетчика 1) в аккумулятор |
|
MI |
OUT El |
Вывод содержимого аккумулятора по адресу EI, задание начального значения счетчику 1 |
CALL, WAIT |
Вызов подпрограммы временной задержки |
|
RLC |
Циклический сдвиг содержимого аккумулятора |
|
JMP MI |
Переход к команде по адресу Ml, загрузка увеличенного в два раза начального значения счетчика 1 |
В этой программе используются два счетчика ПИТ: счетчик 0 работает в режиме деления частоты и запускает счетчик 1, который работает в режиме одновибратора. В первой части программы производится загрузка управляющего слова в РУС ПИТ — задание режима работы счетчика 0. Затем вводится начальное значение (коэффициент пересчета) счетчика 0. После этого программируется счетчик 1 и в него заносится минимальная длительность импульса одновибратора, которая через время, определяемое подпрограммой временной задержки, путем циклического сдвига увеличивается в два раза. По достижении максимальной длительности импульс снова укорачивается до минимальной длительности и процесс повторяется.
Для запуска программы необходимо: подать на вход счетчиков 0, 1 счетные импульсы, на вход управления счетчика 0 подать сигнал логической единицы, на вход управления счетчика 1 подать импульсы с выхода счетчика 0.
Диаграммы работы таймера для этой программы находятся в файле job2_2.