Системы прерыванийРассмотрим примеры организации прерываний в системах с использованием микропроцессора 580–й серии.

Средства для обслуживания прерываний. Микропроцессор имеет следующие средства:

●     вход запроса на прерывание INT, на который подается внешний сигнал с еди­ничным уровнем;

●     выход разрешений прерывания INTE, на который поступает сигнал с внутрен­него триггера. При INTE = 1 прерывания разрешены, при INTE = 0 — запре­щены, т. е. сигнал запроса INT = 1 не воспринимается процессором;

●     машинный цикл «подтверждение запроса на прерывание», в котором:

•      с помощью выходного управляющего сигнала ввода данных DBIN и флага INTA (нулевой разряд слова состояния SW) формируется внешними аппа­ратными средствами сигнал подтверждения прерывания INTA (вместо сиг­нала чтения памяти);

•      происходит аппаратный сброс флага INTE;



•      содержимое программного счетчика остается неизменным;

●     две команды EI и DI для программной установки и программного сброса сиг­нала разрешения прерывания INTE;

●     однобайтную команду RST (повторный пуск), которая во время цикла «под­тверждение запроса на прерывание» с помощью сигнала ¯INTA считывается с ШД. Команда RST имеет двоичный код 11N2N1N0111, который формируется аппаратными средствами. После дешифрации код приобретает вид 00N2N1No000. По этой команде текущее значение программного счетчика помещается в стек и происходит передача управления по одному из восьми адресов 00000000...00111000, расположенных с интервалом 8 байт. Команда выполня­ется в три машинных цикла. В первом цикле происходит выборка команды с ШД и декодирование, в следующем цикле — сохранение текущего значения счетчика команд, в третьем цикле — загрузка счетчик счетчика новым значе­ние (адресом первой ячейки подпрограммы).

При выполнении условия INT V INTE = 1, которое проверяется в последнем такте каждого машинного цикла, процессор переходит к процедуре обслуживания запроса. Она начинается с машинного цикла «подтверждение запроса на преры­вание».

Система с одним вектором прерывания. В этом случае можно использо­вать команду RST7, так как она легко формируется аппаратно, поскольку ее код содержит одни единицы. Например, команду RST на шине данных можно полу­чить, подключив ее линии через резисторы к источнику питания.

рис. 3.9.1

В приведенной на рис. 3.9.1 схеме системы с одним вектором прерывания для этой цели использован регистр RG, на выходе которого включен буфер, управля­емый сигналом ¯INTA. При поступлении хотя бы одного запроса ЗПр0...ЗПр7 от ВУ с входа элемента ИЛИ снимается сигнал запроса INT для ЦП. Поступившие за­просы на прерывание фиксируются триггере слова состояния РСС. Если флаг разрешения прерывания INTE = 1, ЦП приступает к выполнению машинного цикла «подтверждение запроса на прерывание». С помощью внешнего сигнала подтвер­ждения прерывания ¯INTA считывается команда RST.

В системе с одним вектором прерывания и несколькими источниками запроса для идентификации источника используется поллинг. Главная программа обра­ботки прерываний для RST7 располагается по адресу 38Н. Ниже приводится текст программы опроса для случая, когда в системе используются три источника за­просов.

ORG               38Н                 ; выставить стартовый адрес

; Сохранить в стеке содержимое

push             psw              ; регистров А и состояния SW

push             B                     ; регистровой пары ВС

push             d                     ; регистровой пары DE

push             h                     ; регистровой пары HL

 

; Определить источник прерываний

in port                              ; считать из pcc признаки прерываний в аккумулятор А

rar                                      ; сдвигая вправо на 1 разряд содержимое А, проверить

; бит 0 с помощью флага переносе CY

jc into                               ; если cy = 1, то переход по адресу into

rar                                      ; проверить бит 1 с помощью флага cy

jc INT1                                ; если CY = 1, то переход по адресу INT1

Jmp               INT2              ; переход по адресу INT2

 

где INT0, INTl, INT2 — стартовые адреса подпрограмм обслуживания внешних устройств ВУ0, ВУ1, ВУ2.

После идентификации источника запроса процессора переходит к обслужива­нию подпрограммы прерывания.

рис. 3.9.2

Система с несколькими векторами прерываний. На рис. 3.9.2 приведена схема для обслуживания запросов прерываний от восьми ВУ. Она содержит:

●     шифратор приоритетов (ШП) 3 из 8, на вход которого поступают запросы от ВУ, а с выходов снимается трехразрядный код А2А1А0 устройства с наивыс­шим приоритетом;

●     формирователь команды RST, в качестве которого используется регистр RG.

На управляющий вход буфера подается строб ¯INTA для занесения кода коман­ды RST в ЦП. Отличие этой системы от предыдущей состоит в том, что каждое ВУ имеет свой собственный вектор прерывания. Ниже приведена программа, в кото­рой используются три вектора прерываний со старшими приоритетами.

ORG               0                      ; выставить стартовый адрес общего сброса системы

jmp               MAIN            ;передача управления главной программе по сбросу

ORG               38Н                 ; выставить стартовый адрес вектора прерывания для ВУ7

jmp               INT7              ; передача управления подпрограмме для ВУ7

ORG               З0Н                 ; выставить стартовый адрес вектора прерывания для ВУ6

JMP               INT6              ; передача управления подпрограмме для ВУ6

ORG               28Н                 ; выставить стартовый адрес вектора прерывания для ВУ5

JMP               INT5              ; передача управления подпрограмме для ВУ5

где INT7, INT6, INT5 — стартовые адреса подпрограмм обслуживания внешних устройств ВУ7, ВУ6, ВУ5.

Сохранение состояния, предшествующего прерыванию. Для функциони­рования системы прерываний главная программа, расположенная по адресу MAIN, должна установить начальный адрес ADDR в указателе стека SP и разре­шить прерывания:

ORG   0                      ; установка начального адреса после сброса

JMP    MAIN            ; переход на начальный адрес главной программы

ORG   MAIN            ; установка начального адреса главной программы

LXI     SP, ADDR     ; загрузка начального адреса стека в SP

EI                               ; разрешение прерываний

 

Состояние основных программно доступных регист­ров процессора, предшествующее прерыванию, сохра­няется в вершине стека при входе в процедуру обработ­ки прерывания.

После обслуживания прерывания содержимое регист­ров извлекается из стека. Контекстные переключения выполняются с помощью следующих команд:

Сохранение в стеке

PUSH             PSW

PUSH             B

PUSH             D

PUSH             H

Извлечение из стека

POP   H

POP    D

POP    В

POP    PSW

Извлечение содержимого из стека производится в обратной последовательности по отношению к загрузке.

рис. 3.9.4

На рис. 3.9.3 приведены состояния стека при обслу­живании прерывания, где НС, КС — начальное и конеч­ное состояния.

рис. 3.9.3

Приоритетные системы прерывания. В качестве примера рассмотрим систе­му, представленную на рис. 3.9.4.

В ее состав входят:

●     регистр текущего приоритета;

●     шифратор приоритетов ШП 3 из 8;

●     цифровой компаратор К для сравнения трехразрядных кодов А и В;

●     триггер запросов ТЗ;

●     регистр вектора прерываний RG;

●     вспомогательные логические элементы.

Назначение отдельных функциональных узлов системы приведено выше.

Допустим, что в исходном состоянии регистр текущего приоритета содержит код В2В1В0 = 000, сигнал разрешения прерывания INT = 1. При поступлении на вход шифратора приоритетов ШП нескольких запросов на его выходе появится трехразрядный код А = А2А1А0, соответствующий наивысшему приоритету. С по­мощью операнда А в регистре RG формируется вектор прерывания или команда RST. Отметим, что трехразрядное двоичное число 000 для кодировки ВУ не ис­пользуется, так как в этом случае команда RST0 соответствует сбросу ЦП. На вы­ходе компаратора появляется единичный сигнал, который заносится в триггер запроса ТЗ и поступает на вход процессора как запрос на прерывание INT. В от­вет на INT:

●     процессор сбрасывает флаг разрешения прерывания INTE, после чего проис­ходит также сброс триггера запроса ТЗ;

 

●     с помощью ЦП вырабатывается (вне ЦП) сигнал подтверждения прерывания ¯INTA = 0, который отпирает буфер. Вектор прерываний считывается в ЦП и инициирует его на выполнение процедуры обслуживания прерывания.


Рекомендуйте эту статью другим!



Особенности нового ГОСТа по качеству электроэнергии
июнь 16, 2014 4347

Особенности нового ГОСТа по качеству электроэнергии

С начала 2013 года вступил в действие обновлённый стандарт качества ГОСТ Р 54149, в…
рис. 1.141
окт 17, 2016 736

Влияние различных факторов на выходное напряжение операционного усилителя

При практическом использовании операционного усилителя необходимо учитывать, что…
dif1
апр 03, 2017 1914

Дифференциальная защита, диф реле, принцип работы, применение

Дифференциальная защита - одна из самых быстродействующих. Для нее не требуется выдержки…
Последовательный обмен
нояб 11, 2015 1611

Способы и методы последовательного обмена

Принципы обмена. Последовательный обмен (ввод–вывод данных), когда байт данных передается…