На магистрали имеется восемь линий запроса прерываний /INT7 - /INT0. Запрос прерывания производится выдачей одного из восьми сигналов запроса прерываний с помощью передатчика с открытым коллектором. Данное требование позволяет к каждой линии подключать несколько источников прерывания. Сигнал /INT0 имеет наивысший приоритет прерывания, а /INT7 - низший. Сигнал подтверждения прерывания /INTA, выдаваемый задатчиком, является запросом на передачу информации о прерывании по магистрали.
В интерфейсе используется два типа прерывания с интерфейсным и неинтерфейсным адресом вектора прерывания.
При прерывании процессора с неинтерфейсным адресом вектора прерывания запросы на прерывание /INT7 - /INT0 формируются устройствами либо элементами, входящими в процессор (рис. 3.10). Устройства, которым необходимо прервать работу процессора, устанавливают свои триггеры запроса прерываний Тзпр1 - Тзпр8. Сформированные ими сигналы /INT7 - /INT0 поступают по шине управления в контроллер прерываний процессора. Контроллер прерывает работу процессора и, в соответствии с приоритетом поступивших сигналов, передаёт необходимый адрес вектора прерывания в процессор по его локальным шинам.
Рис. 4.10. Схема организации прерываний с неинтерфейсным адресом вектора прерывания
Процессор, получив адрес вектора прерывания, находит подпрограмму, согласно которой обслуживает устройство. По завершению обслуживания устройства процессор возвращается к выполнению прерванной программы.
Сигнал /INTA в данной операции используется для управления контроллером прерываний, а также может использоваться для управления в схемах устройств.
При прерывании с интерфейсным адресом вектора он передаётся от исполнителя к задатчику по системной магистрали (/DAT7 - /DAT0) по сигналу /INTA (рис. 4.11).
При реализации данной схемы организации прерываний во всех устройствах должны быть предусмотрены контроллеры прерываний устройств. Запросы прерываний устройств поступают от триггеров Тзпр1 - Тзпр8 в контроллеры. Контроллеры прерываний формируют сигналы /INT7 - /INT0, которые по соответствующим линиям поступают в контроллер прерываний процессора.
При появлении запроса на одной из линий /INT7 - /INT0 контроллер прерывания процессора в задатчике прерывает программу своего процессора и производит захват управления магистралью.
Рис. 4.11. Схема организации прерывания с интерфейсным адресом вектора прерывания
Процессор задатчика формирует импульс /INTA, который приводит к фиксации состояния запросов прерывания в контроллере для того, чтобы осуществить приоритетный арбитраж. Задатчик также сохраняет за собой управление магистралью между циклами, чтобы обеспечить себе неразрывно следующие друг за другом циклы магистрали. После выдачи первого импульса /INTA контроллер прерываний процессора выставляет на адресные линии магистрали /ADRA - /ADR8 код прерывания. Код соответствует номеру активной линии запроса прерывания, имеющей наивысший приоритет, и является адресом исполнителя, который должен выдать адрес вектора прерывания. С этого момента в процедуре прерывания с интерфейсным адресом вектора могут осуществляться две различные последовательности, так как на магистрали могут работать либо задатчики, формирующие два импульса /INTA, либо задатчики, формирующие три импульса /INTA. На рис. 4.12 приведена временная диаграмма прерывания с интерфейсным адресом вектора с двумя импульсами /INTA.
Если задатчик формирует два импульса /INTA, то по второму импульсу схема управления прерыванием исполнителя передает свой 8-битный адрес вектора прерывания на линии данных магистрали DAT7 - DAT0. Этот адрес вектора используется для определения адреса памяти с подпрограммой обслуживания прерывания. Выдача адреса вектора прерывания сопровождается формированием исполнителем сигнала /XACK. После считывания адреса вектора прерывания задатчик снимает сигнал /INTA, в ответ на это исполнитель снимает адрес вектора прерывания с линий данных и сигнал /XACK.
Рис. 4.12. Временная диаграмма прерывания с интерфейсным адресом вектора
Если задатчик формирует три импульса /INTA, то по второму и третьему исполнитель может выдавать свой двухбайтный адрес вектора прерывания на линии данных магистрали DAT7 - DAT0 (по одному байту на каждый импульс /INTA). В соответствии с введённым адресом вектора, прерывания выполняется подпрограмма обслуживания устройства, запросившего прерывание.