- •Раздел 1. Микропроцессорные системы управления.
- •Раздел 2. Микроконтроллерные системы управления.
- •Раздел 3. Вопросы эксплуатации микропроцессорных устройств.
- •1. Микропроцессорные системы управления
- •1.1. Принципы построения и основы работы
- •Вопросы и задания
- •1.2. Элементная база мпсу
- •Вопросы и задания
- •1.3. Оперативные запоминающие устройства.
- •Вопросы и задания
- •1.4. Постоянные запоминающие устройства.
- •Вопросы и задания
- •1.5. Архитектура микропроцессора типа кр580вм80
- •Вопросы и задания
- •1.6. Типы машинных циклов и слово состояния
- •Вопросы и задания
- •1.7. Командные циклы чтения/записи
- •Вопросы и задания
- •1.8. Командный цикл подтверждения прерывания.
- •1.9. Принципиальные электрические схемы
- •Вопросы и задания
- •1.10. Интерфейс мпсу с изолированной системой шин
- •Вопросы и задания
- •1.11. Интерфейс мпсу с общей системой шин
- •1.12. Организация обслуживания запросов прерывания
- •Вопросы и задания
- •1.13. Программируемый контроллер
- •Вопросы и задания
- •1.14. Программируемый контроллер прерываний
- •Вопросы и задания
- •1.15. Программируемый интервальный таймер
- •Вопросы и задания
- •1.16. Мпсу с вводом-выводом аналоговой информации
- •Вопросы и задания
- •1.17. Выходные каскады мпсу
- •Вопросы и задания
- •2. Микроконтроллерные системы управления
- •2.1. Архитектура микроконтроллера к1816ве51
- •Вопросы и задания
- •2.2. Принципиальная электрическая схема порта
- •2.3. Схемы подключения внешней памяти к мк51
- •Вопросы и задания
- •2.4. Интерфейс мк51 с большим числом
- •Вопросы и задания
- •2.5. Таймер/счетчики мк51.
- •Вопросы и задания
- •2.6. Система прерываний мк51. Использование прерываний в программах
- •Вопросы и задания
- •2.7. Основы организации
- •Допустимые различия скорости приемо-передачи
- •2.8. Организация мультиконтроллерных систем
- •Программы инициализации станции и абонентов
- •Программы станции и абонента в сеансе "станция→абонент"
- •2.9. Микроконтроллерная система управления
- •3. Вопросы эксплуатации микропроцессорных устройств
- •3.1. Отладка аппаратных средств мпсу
- •Вопросы и задания
- •3.2. Отладка программного обеспечения мпсу
- •Вопросы и задания
- •3.3. Методы обеспечения помехоустойчивости мпсу
- •Вопросы и задания
- •1. Группа команд пересылок
- •2. Группа команд инкремента-декремента
- •3. Группа арифметических команд
- •4. Группа логических команд
- •5. Группа команд сдвига
- •6. Группа команд передачи управления
- •7. Группа команд работы со стеком
- •8. Группа команд ввода-вывода и управления микропроцессором
- •1. Группа команд пересылок
- •2. Группа команд арифметических операций
- •3. Группа команд логических операций
- •4. Группа команд операций с битами
- •5. Группа команд передачи управления
- •Дворак Николай Маркович микропроцессорные устройства
- •В высших учебных заведениях 3-4 уровней
- •98309, Г. Керчь, ул. Орджоникидзе, 82
- •98309, Г. Керчь, ул. Орджоникидзе, 82
Вопросы и задания
1. Обоснуйте целесообразность применения в МПСУ микросхемы ПКП.
2. Поясните функциональную схему ПКП.
3. Для чего служат управляющие слова инициализации и управляющие слова режима?
4. Для чего служат управляющие слова конца прерывания и маскирования?
5. Как из УСИ1 и УСИ2 формируются стартовые адреса подпрограмм обслуживания прерываний.
6. Основываясь на схеме, определите адресные пространства микросхем памяти (ПЗУ и ОЗУ) и ПКП.
7. Основываясь на схеме, определите адреса ВУ ввода (кнопки П) и вывода (контактора К и реле РА), виды команд работы с ВУ.
8. Основываясь на схеме и результатах инициализации ПКП, определите стартовые адреса подпрограмм обслуживания прерываний.
9. Составьте программу настройки ПКП на заданные стартовые адреса подпрограмм обслуживания прерываний.
10. Составьте программу завершения обслуживания прерывания, используя СКП и СКПА.
11. Составьте программу маскирования заданных запросов прерываний.
12. Составьте программы обработки прерываний в режиме опроса.
13. Поясните исполнение на сигнальном уровне команд блока инициализации программы.
14. Поясните исполнение на сигнальном уровне команд блока обслуживания прерывания при нажатии кнопки С ("Стоп").
15. Поясните исполнение на сигнальном уровне команд блока обслуживания прерывания при нажатии кнопки А ("Авария").
16. Поясните исполнение на сигнальном уровне команд блока включения контактора.
1.15. Программируемый интервальный таймер
В МПСУ очень часто встречаются операции создания выдержек времени, подсчета числа импульсов, генерирования импульсов. Для реализации этих операций целесообразно использовать ИМС программируемого интервального таймера (ПИТ) типа КР580ВИ5.
Функциональная схема ПИТ приведена на рис.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 в порту РС невозможна.