Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции МПСУ.doc
Скачиваний:
40
Добавлен:
06.12.2018
Размер:
7.86 Mб
Скачать

Вопросы и задания

1. Обоснуйте целесообразность применения в МПСУ микросхемы ППИ.

2. Поясните функциональную схему ППИ.

3. Для чего служат управляющие слова режима и порта С?

4. Основываясь на схеме, определите адресные пространства микросхем памяти (ПЗУ и ОЗУ) и ППИ.

5. Основываясь на схеме, определите адреса ВУ ввода (кнопок) и вывода (контактора), виды команд работы с ВУ.

6. Составьте программу настройки ППИ на заданный вариант ввода-вывода.

7. Составьте команды установки и сброса заданного бита порта С.

8. Поясните исполнение на сигнальном уровне команд программы управления контактором.

1.14. Программируемый контроллер прерываний

Программируемый контроллер прерываний (ПКП) типа КР580ВН59 широко применяется в МПСУ и служит для обработки до 8 запросов прерывания в соответствии с назначенными им приоритетами. Схемой ПКП предусмотрена возможность объединения до 9 ПКП в один блок прерываний МПСУ, который обрабатывает до 64 запросов прерывания.

1.14.1. Функциональная схема ПКП. Настройка режимов работы

Функциональная схема ПКП типа КР580ВН59 приведена на рис.1.47.

Программирование контроллера заключается в определении режима (дисциплины) обработки сигналов запросов прерывания IR0…IR7. Из множества возможных режимов [1,3,7,8,9,10,19] рассмотрим только два, которые чаще всего используются в МПСУ:

1). Режим фиксированных приоритетов. Высший приоритет назначается запросу IR0, низший - IR7. У промежуточных запросов IR1…IR6 приоритет снижается при движении от запроса IR0 к запросу IR7. В этом режиме ПКП сам вызывает подпрограмму обслуживания прерывания. Приоритеты запросам назначаются с той целью, чтобы поступивший запрос высшего приоритета был бы выполнен раньше за счет приостановки обслуживания запроса низшего приоритета.

2 ). Режим опроса, при котором ПКП воспринимает сигналы IR0…IR7 запросов прерывания, выделяет из них запрос с высшим приоритетом, но не вызывает сам подпрограмму обслуживания прерывания. МП должен периодически обращаться к ПКП с целью выяснения того, поступили ли запросы прерывания.

Ядро ПКП составляют три регистра:

IRR – регистр запросов прерываний, который детектирует фронт сигналов IR0…IR7 (переход из 0 в 1), устанавливает в 1 соответствующий внутренний триггер при готовности МП к обслуживанию запроса прерывания и сбрасывает триггер в 0 с момента начала обслуживания МП запроса прерывания.

ISR – регистр обслуживания. В этом регистре хранится информация о тех запросах, которые были приняты МП к обслуживанию, причем состояние обслуживания может быть любым: обслуживание прервано, запрос обслуживается и обслуживание завершено.

IMR – регистр масок прерываний, в котором отмечены запросы, допущенные и запрещенные к обслуживанию.

Реакция ПКП и МП на поступивший запрос сводится к следующему:

1). По фронту сигнала IRN (N=0…7) регистр IRR формирует сигнал постоянного уровня 1, причем, если до ответа МП сигналом (см. п.4) сигнал IRN сбросится в 0, то это будет равносильно отсутствию запроса.

2). В работу вступает шифратор приоритетов PR. На вновь поступивший сигнал запроса шифратор выполняет анализ содержимого регистров IRR, ISR и IMR. Если в регистре масок прерываний IMR поступивший запрос отмечен как запрещенный к обслуживанию или в регистре обслуживания ISR уже отмечены как обслуживаемые запросы равного или высшего приоритетов, то поступивший запрос получает отказ. В противном случае шифратор приоритетов PR через блок управления посылает в МП сигнал INT=1 запроса прерывания.

3). МП, если прерывания не запрещены, переходит к выполнению командного цикла "Подтверждение прерывания". В цикле М1 формируется импульс "Обслуживание прерывания" (рис.1.26). Напомним, что с момента выполнения командного цикла "Подтверждение прерывания" МП отключается от входа INT, о чем сообщает сигналом INTE=0. Сигнал INTE можно также сбросить в 0, выполнив команду DI – "Запрет прерываний". Для того, чтобы МП реагировал на сигнал, поступающий на вход INT, ранее должна быть выполнена команда ЕI - "Разрешение прерываний".

4). По 1-му импульсу , принятому ПКП, им выставляется на ШД код CD команды CALL и одновременно в регистре IRR запросов прерываний фиксируется (защелкивается в триггере) уровнем 1 поступивший запрос прерывания. Теперь сброс в 0 сигнала IRN не остановит процесс запуска подпрограммы обслуживания прерывания.

5). МП, приняв код CD, продолжает выполнение командного цикла "Подтверждение прерывания", но диаграммы сигналов будут несколько отличаться от тех, которые приведены на рис.1.26. В циклах М2 и М3 микропроцессор посылает каждый раз импульсы и считывает информацию из ПКП.

6). По 2-му импульсу ПКП выставляет на ШД младший байт стартового адреса подпрограммы обработки прерывания, а по 3-му импульсу - старший байт стартового адреса. Таким образом, в счетчик команд МП будет загружен полный стартовый адрес подпрограммы обработки прерывания. Этот адрес может быть любым из области адресов ПЗУ. Такой свободный выбор стартовых адресов блока подпрограмм обработки прерывания предпочтительнее фиксированного их расположения, что характерно при применении команды RST (рис.1.36), для которой стартовые адреса располагаются только в начале области адресов ПЗУ.

7). МП выполняет циклы М4 и М5, сохраняя адрес отложенной команды в стеке.

8). ПКП после передачи старшего байта стартового адреса:

- сбрасывает сигнал INT в ноль;

- сбрасывает в регистре IRR запросов прерываний в ноль триггер-защелку последнего запроса прерывания;

- устанавливает в регистре обслуживания ISR в 1 триггер-защелку последнего принятого к обслуживанию запроса прерывания, который является запросом со старшим приоритетом из всех зафиксированных в регистре ISR.

На этом МП приступает к обслуживанию запроса прерывания. Связь ПКП с МП теряется до поступления нового запроса IRN. ПКП не может самостоятельно определить то, в каком состоянии находится процесс обслуживания допущенных запросов прерывания. МП, завершив выполнение подпрограммы обслуживания прерывания, должен изменить содержимое триггера ISR ПКП с тем, чтобы ПКП продолжил прием новых и повторных запросов прерываний.

Работа ПКП настраивается путем записи в него управляющих слов инициализации (УСИ) и управляющих слов операций (УСО). Программная модель ПКП, согласно рис.1.47 представляет собой набор, состоящий из регистров IRR, ISR, IMR, регистра инициализации и др., (последние из соображений простоты рисунка на нем не показаны).

Для настройки на режим фиксированных приоритетов нужно до разрешения командой EI прерываний произвести инициализацию ПКП с помощью двух управляющих слов – УСИ1 и УСИ2 (рис.1.48).

Признаками УСИ1 являются значения бита адреса А0=0 и группы бит данных – D4D3D0=100.

Признаками УСИ2 являются бит адреса А0=1 и запись УСИ2 при следующем обращении к ПКП после записи в него УСИ1.

УСИ1 содержит информацию о структуре блока прерываний МПСУ и о младшем байте стартового адреса подпрограммы обслуживания прерывания.

При D1=1 блок прерываний МПСУ состоит только из одного ПКП и обслуживает до 8 запросов прерываний. В этом случае нужно на вход ПКП подать 1, а выводы каскадирования CAS0, CAS1 и CAS2 не использовать.

При D1=0 блок прерываний МПСУ может содержать от 2 до 9 ПКП и обслужить до 64 запросов прерывания, причем один из них является ведущим, а остальные – ведомыми. ПКП объединяются в блок линиями каскадирования, на ведущий подается , а на ведомые - [1,3,7,8,9,10,19].

Бит D2 УСИ1 определяет структуру и содержание младшего байта стартового адреса подпрограммы обслуживания прерывания. Формат младшего байта при D2=1 и D2=0 приведен, соответственно, на рис.1.49а и рис.1.49б.

УСИ2 содержит старший байт стартового адреса подпрограммы обслуживания прерывания.

После ввода УСИ1 и следом за ним – УСИ2 устанавливается режим фиксированных приоритетов, а в регистры IRR, ISR и IMR записываются нули.

Рассмотрим пример инициализации ПКП в составе схемы, приведенной на рис.1.48, с назначением стартового адреса 0780Н подпрограммы обслуживания прерывания запроса IR0 и стартовыми адресами следующих запросов, отстоящими друг от друга с шагом 8 байт. Программа инициализации приведена на рис.1.50.

Мнемокод

Комментарии

MVI A, 92

Загрузка в аккумулятор А кода 92Н=1001.0010В, в котором: D7D6=10 (два старших разряда А7А6 младшего байта адреса), D5=0 или 1 (бит не используется, и его значение может быть любым), D4D3D0=100 (признак УСИ1), D2=0 (шаг адресов 8 байт), D1=1 (один ПКП)

Рис.1.50. Программа инициализации ПКП

OUT ВЕ

Вывод УСИ1 в ПКП с адресом ВЕH= 1011.1110B, в котором А6=0 (выбор ИМС ПКП), А0=0 – признак УСИ1

MVI A, 07

Загрузка в аккумулятор А кода 07Н=0000.0111В – старшего байта адреса

OUT ВF

Вывод УСИ2 в ПКП с адресом ВFH= 1011.1111B, в котором А6=0 (выбор ИМС ПКП), А0=1 – признак УСИ2

Рис.1.50. Продолжение

В соответствии с проведенной инициализацией стартовые адреса для всех возможных запросов IR0…IR7 будут следующими (затемненными отмечены биты адреса, формируемые по данным регистра ISR):

- для IR0:

0

0

0

0.

0

1

1

1.

1

0

0

0.

0

0

0

0

B

=

0780H

- для IR1:

0

0

0

0.

0

1

1

1.

1

0

0

0.

1

0

0

0

B

=

0788H

- для IR2:

0

0

0

0.

0

1

1

1.

1

0

0

1.

0

0

0

0

B

=

0790H

:

- для IR7:

0

0

0

0.

0

1

1

1.

1

0

1

1.

1

0

0

0

B

=

07B8H

МП, завершив подпрограмму обслуживания прерывания, должен сообщить об этом ПКП с тем, чтобы удалить из регистра ISR информацию об обслуженном запросе прерывания. После этого ПКП может в дальнейшем посылать в МП сигнал запроса прерывания INT=1 для вновь поступающих запросов IRN того же или низших приоритетов. Для такой цели используется либо команда СКПА – слова конца прерывания адресуемого (рис.1.48), либо команда СКП – слова конца прерывания без указания адреса, имеющая код 20Н. Признаками СКПА и СКП являются А0=0 и D4D3=00. В команде СКПА битами D2D1D0 задается двоичный код номера обслуженного запроса прерывания, информацию о котором нужно удалить из регистра ISR. Блок команды завершения подпрограммы обслуживания прерывания по запросу IR5 приведен на рис.1.51.

Мнемокод

Комментарии

MVI A, 65

Загрузка в аккумулятор А кода СКПА 65Н=0110.0101В, в котором: D2D1D0=101 – код числа 5

OUT ВЕ

Вывод СКПА в ПКП с адресом ВЕH= 1011.1110B, в котором А6=0 (выбор ИМС ПКП), А0=0 – признак СКПА

EI

Разрешение прерываний. Прерывания разрешаются не сразу после выполнения этой команды, а только после выполнения одной команды - в данном случае – команды RET

RET

Возврат из подпрограммы обслуживания прерывания на адрес отложенной в стеке команды

Рис.1.51. Завершение подпрограммы обслуживания прерывания

Команду СКП можно использовать только в режиме работы ПКП с фиксированными приоритетами. Из регистра ISR будет удалена информация о последнем обслуженном запросе прерывания. При использовании СКП в программе нужно произвести замену команды MVI A, 65 на команду MVI A, 20.

С помощью управляющего слова маскирования (рис.1.52) в любой момент времени после завершения инициализации можно программно установить и сбросить отдельные биты регистра масок прерываний IMR. При включении питания или сбросе во все биты Mi регистра IMR записываются нули.

Мнемокод

Комментарии

Маскирование запросов прерывания, поступающих на входы IR1 и IR3

MVI A, 0А

Загрузка в аккумулятор А кода 0АН=0000.1010 УСМ, в котором равны 1 биты D1 и D3 маскирования запросов IR1 и IR3

OUT BF

Вывод управляющего слова маскирования в ПКП с адресом ВFH= 1011.1111, в котором А6=0 (выбор ИМС ПКП), А0=1 (признак УСМ)

Снятие маски со всех запросов прерывания

MVI A, 00

Загрузка в аккумулятор А кода 00H=0000.0000 управляющего слова снятия маски со всех запросов прерывания

OUT BF

Вывод управляющего слова маскирования в ПКП с адресом ВF

Рис.1.52. Формат управляющего слова и программа маскирования

Режим опроса ПКП настраивается программой, приведенной на рис.1.53.

Мнемокод

Комментарии

MVI A, 0С

Загрузка в аккумулятор А кода 0С управляющего слова режима опроса ПКП

OUT ВЕ

Вывод содержимого аккумулятора А в ПКП с адресом ВЕH

Рис.1.53. Настройка режима опроса

После этой настройки ПКП из принятых сигналов запросов прерывания IR0…IR7 будет только формировать двоичный код запроса с высшим приоритетом и хранить его в слове состояния ПКП (рис.1.54).

I

x

x

x

x

IRR2

IRR1

IRR0

I=0/1 – нет запроса/есть запрос

Не используются

Код запроса высшего приоритета

Рис.1.54. Формат слова состояния ПКП

Программа чтения слова состояния приведена на рис.1.55.

Мнемокод

Комментарии

MVI A, 0С

Загрузка в аккумулятор А кода 0С управляющего слова режима опроса ПКП

OUT ВЕ

Вывод управляющего слова состояния в ПКП с адресом ВЕH. Этим выводом МП сообщает ПКП, что следующей командой будет чтение слова состояния

IN BE

Чтение слова состояния (пересылка содержимого в аккумулятор МП)

Рис.1.55. Чтение слова состояния ПКП

1.14.2. МПСУ с программируемым контроллером прерываний

Принципиальная схема МПСУ приведена на рис.1.48. Производится включение и выключение контактора К с помощью кнопок П - "Пуск" и С – "Стоп", а также введена кнопка А аварийного отключения не только контактора К, но и всех объектов автоматизации. Последнее выполняется с помощью реле аварийного РА, которое своими контактами воздействует на цепи отключения всех объектов. Кнопки С и А заведены на ПКП на входы, соответственно, IR5 и IR3. Кнопка А имеет приоритет выше, чем у кнопки С. При одновременном нажатии кнопок А и С в первую очередь будет выполнена подпрограмма обслуживания кнопки А.

В схеме применена линейная адресация ИМС памяти и ИМС внешних устройств – ППИ и ПКП. Адреса ППИ (выбор ППИ битом А5): РА – DСН, РВ – DDН, PC – DEН, РУС - DFН. Адреса ПКП (выбор ПКП битом А6): УСИ1 и СКП - BEН, УСИ2 - BFН.

Программа управления контактором К и аварийного отключения приведена на рис.1.56.

Адрес

Код команды

Метка

Мнемокод

Комментарии

0000

3E

90

Иниц. ППИ

MVI A, 90

Инициализация ППИ:

- порт РА на ввод;

- порты В и С на вывод

0002

D3

DF

OUT DF

0004

31

FF

0F

Стек

LXI SP, 0FFF

Загрузка вершины стека

0007

3E

92

Иниц. ПКП

MVI A, 92

Инициализация ПКП (см. рис.1.50)

0009

D3

BE

OUT BE

000B

3E

07

MVI A, 07

000D

D3

BF

OUT BF

000F

FB

EI

Разрешение прерываний

Начало блока основных программ пользователя

:

:

:

:

Нач. К

IN DC

Чтение порта РА

ANI 10

Выделение бита состояния кнопки П

JNZ Кон. К

Контактор К не включать, если П=1

MVI A, 09

Включить контактор К, используя УС порта С (см. рис.1.41)

OUT DF

Кон. К

:

:

:

:

Конец блока основных программ пользователя

0798

F5

П/п IR3

PUSH PSW

Сохранить в стеке PSW (см. рис.1.15)

0799

3E

01

MVI A, 01

Выключить контактор К, включить аварийное реле РА

079B

D3

DE

OUT DE

079D

3E

20

MVI A, 20

Вывод в ПКП слова конца прерывания (см. рис.1.51)

079F

D3

BE

OUT BE

07A1

F1

POP PSW

Извлечь из стека PSW

07A2

FB

EI

Разрешить прерывания

07A3

C9

RET

Выйти из подпрограммы

Рис.1.56. Программа управления контактором с использованием ПКП

Адрес

Код команды

Метка

Мнемокод

Комментарии

07A4

00

00

NOP

4 холостых операции

07А8

FB

П/п IR5

EI

Разрешить прерывания*

07A9

F5

PUSH PSW

Сохранить в стеке PSW (см. рис.1.15)

07AA

3E

08

MVI A, 08

Выключить контактор К, используя УС порта С

07AC

D3

DF

OUT DF

07AE

3E

20

MVI A, 20

Вывод в ПКП слова конца прерывания (см. рис.1.51)

07B0

D3

BE

OUT BE

07B2

F1

POP PSW

Извлечь из стека PSW

07B3

C9

RET

Выйти из подпрограммы

Рис.1.56. Продолжение

* В подпрограмме П/п IR5 обслуживания запроса прерывания IR5 сразу разрешаются прерывания на тот случай, когда может поступить запрос от IR3 более высокого приоритета и он должен прервать подпрограмму П/п IR5.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]