- •1. Принципы построения и основы работы
- •2. Элементная база мпсу
- •3. Оперативные запоминающие устройства.
- •4. Постоянные запоминающие устройства.
- •5. Архитектура микропроцессора типа кр580вм80
- •6. Типы машинных циклов и слово состояния
- •7,8. Командные циклы чтения/записи
- •9. Командный цикл подтверждения прерывания.
- •10. Принципиальные электрические схемы
- •11,12. Интерфейс мпсу с изолированной системой шин
- •13. Интерфейс мпсу с общей системой шин
- •14. Организация обслуживания запросов прерывания
- •15. Программируемый контроллер
- •17. Программируемый контроллер прерываний
- •18. Функциональная схема пкп. Настройка режимов работы
- •19. Программируемый интервальный таймер
- •21. Мпсу с вводом-выводом аналоговой информации
- •22. Выходные каскады мпсу
- •Дворак Николай Маркович микропроцессорные устройства
- •В высших учебных заведениях 3-4 уровней
- •98309, Г. Керчь, ул. Орджоникидзе, 82
- •98309, Г. Керчь, ул. Орджоникидзе, 82
19. Программируемый интервальный таймер
В МПСУ очень часто встречаются операции создания выдержек времени, подсчета числа импульсов, генерирования импульсов. Для реализации этих операций целесообразно использовать ИМС программируемого интервального таймера (ПИТ) типа КР580ВИ5.
20. Функциональная схема ПИТ приведена на рис.1.57 ПИТ содержит 3 одинаковых 16-разрядных вычитающих счетчика Сч0, Сч1 и Сч2. На выводы CLK подаются счетные импульсы. Сигналом GATE=1 счет разрешается (старт счетчика), а останавливается счет сигналом GATE=0 (стоп счетчика). При обнулении счетчика выставляется сигнал OUT=1.
Управление функциями ПИТ
|
|
|
A1 |
A0 |
Функция |
0 |
1 |
0 |
0 |
0 |
Загрузка Сч0 с ШД |
0 |
1 |
0 |
0 |
1 |
Загрузка Сч1 с ШД |
0 |
1 |
0 |
1 |
0 |
Загрузка Сч2 с ШД |
0 |
1 |
0 |
1 |
1 |
Загрузка РР с ШД |
0 |
0 |
1 |
0 |
0 |
Считывание Сч0 на ШД |
0 |
0 |
1 |
0 |
1 |
Считывание Сч1 на ШД |
0 |
0 |
1 |
1 |
0 |
Считывание Сч2 на ШД |
0 |
0 |
1 |
1 |
1 |
Z-состояние ШД ПИТ |
1 |
х |
х |
х |
х |
Z-состояние ШД ПИТ |
0 |
1 |
1 |
х |
х |
Z-состояние ШД ПИТ |
Каждый канал может быть настроен на один из 6 режимов [1,3,7,8,9,10,19]: 0 – программируемая задержка; 1 – ждущий мультивибратор; 2 – делитель частоты в заданное число раз; 3 – генератор меандра; 4 – строб с программным запуском; 5 – строб с аппаратным запуском. Ниже рассмотрим только режим 0, который используется в МПСУ для создания выдержек времени.
В режиме 0 счетчик предварительно загружается заданным не равным нулю числом NСЧ. Затем сигналом GATE=1 вычитающий счетчик стартует. Спустя время τ=ТCLK·NСЧ, где ТCLK – период счетных импульсов, счетчик обнулится и выставит сигнал OUT=1. Время τ является выдержкой времени, сформированной ПИТ. Максимальная емкость счетчиков NСЧ.МАКС составляет 216=65536 импульсов в режиме двоичного счета и 104 импульсов в режиме десятичного счета. Сигнал OUT=1 можно завести на прерывание или его может проверять периодически МП в процессе выполнения программы. Если во время счета подать сигнал GATE=0, то счетчик остановится, его содержимое сохранится, а с момента подачи GATE=1 счет продолжится от сохраненного значения.
Инициализация ПИТ производится управляющим словом (рис.1.58), где даны пояснения к битам этого слова. Рассмотрим пример инициализации счетчика Сч0 на режим 0 десятичного счета с загрузкой сначала младшего, а затем старшего байта при включении ПИТ в схеме на рис.1.58 для создания выдержки времени 20 с. По схеме на вход CLK0 счетчика подаются импульсы с периодом ТCLK=20 мс (частотой 50 Гц). Выбор ИМС ПИТ производится битом А7 адреса.
рисунок
Для создания выдержки времени τ=20 с при периоде счетных импульсов ТCLK=20 мс в счетчик предварительно нужно загрузить число 100010. Так как 100010<104, то выберем режим десятичного счета, при котором счетчик представляет собой набор из 4-х двоично-десятичных тетрад, в каждой из которых можно записать число от 0Н до 9Н (десятичные и 16-ричные числа в интервале от 0 до 9 записываются одинаковыми символами). Для записи в Сч0 числа 1000 нужно в старший байт загрузить число 10Н, а в младший – 00Н. Программа инициализации приведена на рис.1.59.
Если бы использовался двоичный счет, то вместо MVI A, 31 надо было ввести MVI A, 30, вместо MVI A, 00 и MVI A, 10 ввести MVI A, Е8 и MVI A, 03.
Мнемокод |
Комментарии |
MVI A, 31 |
Загрузка в аккумулятор управляющего слова 31Н=0011.0001В, в котором D7D6=00 (выбран Сч0), D5D4=11 (запись сначала младшего, а затем старшего байта Сч0), D3D2D1=000 (режим 0), D0=1 (счет десятичный) |
OUT 7F |
Вывод по адресу 7FН=0111.1111В управляющего слова в регистр РР ПИТ. В адресе А7=0 (выбор ИМС ПИТ), А1А0=11 (адрес РР в ПИТ) |
MVI A, 00 |
Загрузка в аккумулятор младшего байта счетчика |
OUT 7C |
Вывод по адресу 7СН=0111.1100В младшего байта счетчика Сч0. В адресе А7=0 (выбор ИМС ПИТ), А1А0=00 (адрес Сч0 в ПИТ) |
MVI A, 10 |
Загрузка в аккумулятор старшего байта счетчика |
OUT 7C |
Вывод по адресу 7СН=0111.1100В старшего байта счетчика Сч0 |
Рис.1.59. Программа инициализации ПИТ и настройки на выдержку времени 20 с |
По окончании счета установится сигнал OUT0=1. Счет после этого может продолжаться сколь угодно долго, однако состояние сигнала OUT0=1 не изменится. Для сброса сигнала OUT0 в 0 необходимо снова провести инициализацию.
Содержимое любого счетчика может быть считано программно двумя способами: чтение с остановкой счетчика и чтение "на лету" – без остановки счета.
Для чтения с остановкой необходимо предварительно сигналом GATE0=0 остановить счет, а затем выполнить программу, приведенную на рис.1.60. Нужно обязательно подряд выполнить две команды чтения IN в соответствии с проведенной инициализацией счетчика (рис.1.59). В результате выполнения программы младший байт окажется в регистре В, а старший байт – в аккумуляторе А МП. После считывания нужно снова запустить счетчик на продолжение счета сигналом GATE0=1.
Мнемокод |
Комментарии |
IN 7С |
Переслать младший байт Сч0 в аккумулятор А МП |
MOV B, A |
Переслать содержимое аккумулятора А в регистр В МП |
IN 7С |
Переслать старший байт Сч0 в аккумулятор А МП |
Рис.1.60. Программа чтения счетчика с остановкой |
Для чтения "на лету" нужно выполнить программу, приведенную на рис.1.61.
Мнемокод |
Комментарии |
MVI A, 01 |
Загрузка в аккумулятор управляющего слова 01Н=0000.0001В, в котором D7D6=00 (выбран Сч0), D5D4=00 (чтение счетчика "на лету"), D3D2D1=000 (режим 0), D0=1 (счет десятичный) |
OUT 7F |
Вывод по адресу 7FН=0111.1111В управляющего слова в регистр РР ПИТ. В адресе А7=0 (выбор ИМС ПИТ), А1А0=11 (адрес РР в ПИТ) |
IN 7С |
Переслать младший байт Сч0 в аккумулятор А МП |
MOV B, A |
Переслать содержимое аккумулятора А в регистр В МП |
IN 7С |
Переслать старший байт Сч0 в аккумулятор А МП |
Рис.1.61. Программа чтения счетчика "на лету" |
На рис.1.58 приведена МПСУ некоторой насосной установкой, электродвигатель которой включается/выключается контактором К. Ручное управление осуществляется кнопками П и С. В схему введен контакт реле давления РД. Если давление на выходе насоса в норме, то контакт РД разомкнут. При пониженном давлении контакт РД замыкается и если малое давление удерживается, например, в течение 20 с, то насос отключается. Кнопка С и выход сигнала OUT0 с ПИТ заведены на ПКП, причем приоритет кнопки С выше, что отражено в подключении ее к входу IR4 ПКП, а ПИТ подключен к IR7.
Алгоритм МПСУ насосной установкой с контролем давления приведен на рис.1.62, а программа – на рис.1.63.
Блоки 1, 2 и 3 выполняются в начале программы. Подпрограмма загрузки счетчика Сч0 на выдержку 20 с расположена по адресу 03F0.
Блоки 4…9 – основная программа МПСУ насосом.
Блок 5: Включается К, если кнопка П нажата. Сохраняется в ОЗУ по адресу 0С00Н копия сигналов, выведенных через порт РС ППИ.
Блок 6: Проверка, включен ли контактор К ? Если включен, то далее проверить давление, иначе идти на конец программы "Кон. К".
Блок 7: Проверка давления Р насоса, если он включен.
Блок 8: Стоп и перезагрузка счетчика на выдержку 20 секунд без его старта, если есть давление.
Блок 9: Старт счетчика на выдержку времени 20 секунд.
Блок 10: Подпрограмма реакции на нажатие кнопки С.
Блок 11: Подпрограмма реакции на отсутствие давления в течение 20 с.
Адреса подпрограмм блоков 10 и 11 определены при условии, что первый стартовый адрес подпрограмм обслуживания прерываний принят равным 0780Н.
Начальный адрес основной программы управления насосом принят равным 0300Н.
Адрес |
Код команды |
Метка |
Мнемокод |
Комментарии |
|||
0000 |
3E |
90 |
|
|
М1 |
MVI A, 90 |
Инициализация ППИ: порт РА на ввод; порты В и С на вывод |
0002 |
D3 |
DF |
|
|
|
OUT DF |
|
0004 |
3E |
92 |
|
|
М2 |
MVI A, 92 |
Инициализация ПКП (см. рис.1.50) |
0006 |
D3 |
BE |
|
|
|
OUT BE |
|
0008 |
3E |
07 |
|
|
|
MVI A, 07 |
|
000А |
D3 |
BF |
|
|
|
OUT BF |
|
000С |
31 |
00 |
10 |
|
М3 |
LXI SP, 1000 |
Загрузка вершины стека |
000F |
CD |
F0 |
03 |
|
|
CALL 20c |
Загрузка Сч0 на выдержку 20 с |
0012 |
FB |
|
|
|
|
EI |
Разрешение прерываний |
Начало блока основных программ пользователя |
|||||||
: |
|
|
|
|
: |
: |
: |
|
|
|
|
|
Нач.К |
|
|
0300 |
DB |
DC |
|
|
М4 |
IN DC |
Чтение порта РА |
0302 |
E6 |
08 |
|
|
|
ANI 08 |
Выделение бита состояния кнопки П |
0304 |
C2 |
11 |
03 |
|
|
JNZ M6 |
К не включать, если П не нажата |
0307 |
3A |
00 |
0C |
|
M5 |
LDA 0C00 |
А←КопРС (копия порта РС ППИ) |
030A |
F6 |
01 |
|
|
|
ORI 01 |
Установка бита включения контактора |
030C |
32 |
00 |
0C |
|
|
STA 0C00 |
Сохранить КопРС по адресу 0С00 ОЗУ |
030F |
D3 |
DE |
|
|
|
OUT DE |
Включить контактор К |
0311 |
3A |
00 |
0C |
|
M6 |
LDA 0C00 |
А←КопРС |
0314 |
E6 |
01 |
|
|
|
ANI 01 |
Выделение бита состояния контактора |
0316 |
СA |
3A |
03 |
|
|
JZ Кон.К |
На конец программы, если К выключен |
0319 |
DB |
DC |
|
|
М7 |
IN DC |
Чтение порта РА |
031B |
E6 |
10 |
|
|
|
ANI 10 |
Выделение бита реле давления РД |
031D |
CA |
30 |
03 |
|
|
JZ M9 |
На М9, если нет давления |
0320 |
3A |
00 |
0C |
|
M8 |
LDA 0C00 |
А←КопРС (копия порта РС ППИ) |
0323 |
E6 |
ВF |
|
|
|
ANI ВF |
Подготовка байта для остановки Сч0 |
0325 |
32 |
00 |
0C |
|
|
STA 0C00 |
Сохранить КопРС по адресу 0С00 ОЗУ |
0328 |
D3 |
DE |
|
|
|
OUT DE |
Остановить счетчик Cч0 |
032A |
СD |
F0 |
03 |
|
|
CALL 20c |
Вызов программы инициализации ПИТ |
032D |
C3 |
3A |
03 |
|
|
JMP Кон.К |
На конец программы |
0330 |
3A |
00 |
0C |
|
M9 |
LDA 0C00 |
А←КопРС (копия порта РС ППИ) |
0333 |
F6 |
40 |
|
|
|
ORI 40 |
Подготовка байта для старта Сч0 |
0335 |
32 |
00 |
0C |
|
|
STA 0C00 |
Сохранить КопРС по адресу 0С00 ОЗУ |
0338 |
D3 |
DE |
|
|
|
OUT DE |
Стартовать счетчик Cч0 |
033A |
|
|
|
|
Кон.К |
|
1-я команда программы управления другим объектом |
: |
|
|
|
|
: |
: |
: |
03F0 |
F5 |
|
|
|
20 c |
PUSH PSW |
Сохранить в стеке PSW (см. рис.1.15) |
03F1 |
3E |
31 |
|
|
|
MVI A, 31 |
Инициализация ПИТ (см. рис.1.59) |
03F3 |
D3 |
7F |
|
|
|
OUT 7F |
|
03F5 |
3E |
00 |
|
|
|
MVI A, 00 |
Рис.1.63. Программа управления насосом с контролем давления
Адрес |
Код команды |
Метка |
Мнемокод |
Комментарии |
|||
03F7 |
D3 |
7C |
|
|
|
OUT 7C |
|
03F9 |
3E |
10 |
|
|
|
MVI A, 10 |
|
03FB |
D3 |
7C |
|
|
|
OUT 7C |
|
03FD |
F1 |
|
|
|
|
POP PSW |
Извлечь из стека PSW |
03FE |
C9 |
|
|
|
|
RET |
Выйти из подпрограммы |
Конец блока основных программ пользователя |
|||||||
07A0 |
F5 |
|
|
|
M10 |
PUSH PSW |
Сохранить в стеке PSW |
07A1 |
3A |
00 |
0C |
|
|
LDA 0C00 |
А←КопРС (копия порта РС ППИ) |
07A4 |
E6 |
ВЕ |
|
|
|
ANI ВЕ |
Выключить К и остановить Сч0 |
07A6 |
D3 |
DE |
|
|
|
OUT DE |
|
07A8 |
32 |
00 |
0C |
|
|
STA 0C00 |
Сохранить КопРС по адресу 0С00 ОЗУ |
07AB |
3E |
20 |
|
|
|
MVI A, 20 |
Вывод в ПКП слова конца прерывания (см. рис.1.51) |
07AD |
D3 |
BE |
|
|
|
OUT BE |
|
07AF |
F1 |
|
|
|
|
POP PSW |
Извлечь из стека PSW |
07B0 |
FB |
|
|
|
|
EI |
Разрешить прерывания |
07B1 |
C9 |
|
|
|
|
RET |
Выйти из подпрограммы |
07B2 |
00 |
… |
00 |
|
|
NOP |
6 холостых операций |
07B8 |
FB |
|
|
|
M11 |
EI |
Разрешить прерывания |
07B9 |
C3 |
A0 |
07 |
|
|
JMP M10 |
Идти на метку М10 |
Рис.1.63. Продолжение |
В программе используется копия порта РС, по которой проверяется (блок 6), подано ли питание на контактор К, который подключен к биту РС0 порта РС ППИ, и работает ли насос ? Непосредственная проверка битов РС0 и РС6 в порту РС невозможна.