Система прерываний предназначена для переключения внимания МП на особые условия, возникающие в нем самом или во внешних устройствах, и начала выполнения других задач.
Источники прерывания делятся на три класса.
1. Внутренние прерывания, например, аппаратный сбой, ошибка от схем контроля и т.д. При внутренних прерываниях не происходит формирования сигнала INTE. Внутренние прерывания имеют более высокий приоритет по сравнению с внешними прерываниями.
2. Внутрисистемные прерывания, возникающие вследствие событий во внешних устройствах, например, прерывания от таймеpa, устройства ввода-вывода в момент его готовности к обмену информацией и т. д.
3. Прерывания, предусмотренные в выполняемой текущей программе с помощью специальных команд.
Существуют два типа обслуживания прерываний: считываемый и векторный.
При считываемом типе обслуживания МП использует подпрограмму периодического опроса возможных источников прерывания и выявляет устройства, нуждающиеся в обслуживании. Выявленное устройство выставляет начальный адрес подпрограммы его обслуживания по прерыванию, после чего МП приступает к обработке прерывания.
При векторном типе обслуживания прерываний внешние устройства, требующие к себе внимания со стороны МП, выставляют сигнал INT(Запрос прерывания). Восприятие запросов устанавливается определенным разрядом ССП при выполнении команды EI (Разрешение прерывания). МП не воспринимает запросы на прерывание при начальной установке по входу RESET, когда все триггеры, в том числе и триггеры ССП, устанавливаются в нулевое состояние.
Поэтому, если МП приступил к выполнению программы, то он и в дальнейшем не будет реагировать на запросы прерывания до тех пор, пока в программе не появится команда EI (Разрешение прерывания).
При дальнейшем продолжении выполнения программы, в случае, если необходимо проигнорировать прерывание, вводят команду DI (Запрещение прерываний). Удовлетворение запроса на прерывание зависит от значения сигнала DOССП. Если DO= 1, то при наличии сигнала DBIN(прием информации) формируется сигнал IN ТЕ (Разрешение прерывания) (см. рис. 2.1.7).
Рисунок 2.1.7 – УГО МП БИС КР580ИК80
Таким образом, изменяя значение разряда DO, программист может запретить или разрешить МП реагировать на прерывание (маскирование прерываний). Если МП может воспринимать этот сигнал в данный момент времени, то начинается режим обмена информацией по прерыванию в следующем порядке.
1.МП завершает выполнение текущей программы, сохраняя в стеке адрес следующей подготовленной к выполнению команды, к которой МП вернется после обмена информацией по прерыванию. Обычно в стеке сохраняется и последнее содержимое аккумулятора.
2. МП посылает устройствам ввода-вывода ответный сигнал INTE(Разрешение прерывания), давая понять, что он готов к обмену данными.
3. Устройство ввода-вывода сообщает начальный адрес подпрограммы обслуживания прерывания.
4. Получив адрес, МП начинает подпрограмму обмена данными.
5. В конце подпрограммы всегда должна стоять команда выхода из подпрограммы и возврата управления прерванной основной программе по команде RETURN (RET).
6. Получив команду возврата RETURN, МП извлекает из стека адрес возврата к прерванной программе и продолжает ее выполнение.
Если одновременно возникают запросы на прерывание от нескольких устройств, необходимо выработать приоритет по их обслуживанию.
Для этой цели вводят специальный блок приоритетных прерываний (БПП), который берет на себя посреднические услуги между устройством ввода-вывода и МП. Для подключения БПП используется вход INTМП.
БПП выполняет следующие функции:
1. получает запросы на прерывание от нескольких источников, если они пришли одновременно и формирует один сигнал, который поступает на вход INTМП;
2. выставляет запрет (маскирование) на восприятие сигналов от определенных источников прерываний;
3. устанавливает и меняет приоритеты в обслуживании поступивших запросов на прерывание;
4. сообщает МП начальный адрес подпрограммы обслуживания прерывания внешнего устройства, причем адрес подпрограммы обслуживания прерывания сообщается МП по ШД.
Имеется два способа задания кода прерывания, с помощью
команды RST < N > и с помощью команды CALL < А1> <A2> (векторный способ). Первый цикл для обоих способов является общим и отличается от цикла М1 извлечения кода команды из памяти тем, что содержание программного счетчика МП БИС при этом не увеличивается.
На первом такте Т1 устанавливается уровень «0» на выходе Р. Пр.
МП БИС информирует ВУ о восприятии и начале обслуживания прерывания выдачей слова состояния с «1» в разрядах Д0, Д1, Д5.
Разряд Д0 совместно с сигналом на выходе ПРИЕМ используется для формирования сигнала ОБ. Пр (обслуживание прерывания) магистрали управления микроЭВМ (рис. 2.1.8). Поэтому сигналу ВУ выдают на МД микроЭВМ либо код команды RST<N>, либо код команды CALL<A1 > < А2> .
Существует восемь кодов команды RST<N>,где N=0—7.
Команда RST<N> указывает начальный адрес подпрограммы
обслуживания прерывания.
Получив команду на первом машинном
цикле, МП БИС на циклах М2 и М3 записывает в область памяти,
отведенной под стек, текущее значение программного счетчика PC.
Сохранение содержания PC в стеке необходимо для возврата к
прерванной программе после окончания выполнения подпрограммы
обслуживания прерывания.
Возврат можно осуществить с помощью команды RET (RETURN), которая загружает содержание двух верхних ячеек стека в PC.
Таким образом, каждая подпрограмма обслуживания прерываний должна в конце иметь команду RET.
Первым машинным циклом при обращении к ячейкам памяти, указанным в команде RST<N>, является цикл М1 извлечения команды.
При векторном способе задания прерываний на первом цикле
М1 ВУ будет передавать МП БИС не команду RST<N> , а команду
САLL<А1><А2>.
Получив команду CALL, МП БИС автоматически переходит в режим ввода 2 байтов адреса А1 и А2 на циклах М2, М3.
После этого организуется сохранение содержания PC в стеке и
обращение к началу подпрограммы обслуживания прерывания.
Начало подпрограммы указано во втором и третьем байтах (<А1>
<А2>) команды CALL.
Отметим, что при векторном способе задания прерывания ВУ сообщает не только команду CALL, но и адрес начала подпрограммы обслуживания прерываний.
Рисунок 2.1.8 – Ввод кода команды RST1 при обслуживании МП БИС сигнала прерывания
|