page51
6.3.4.
Маскируемое
прерывание
.
Режим
2
Режим прерываний 2 устанавливается командой IM 2. Это самый производительный режим
прерываний
микропроцессора
Z80.
Он
применяется
в
сложных
системах
с
развитой
сетью
периферийных
элементов.
При
этом
в
памяти
программируется
таблица
стартовых
адресов
каждой
ISR
(см.
рис.
6.11).
Таблица
может
быть
размещена
в
любой
области
памяти
с
соблюдением лишь правила записи стартовых адресов: младший байт заносится в ячейку с чётным
адресом (A0=0),старший байт в следующую (по возрастанию) ячейку.
В случае приёма прерывания ЦП формирует 16-разрядный указатель IP (Interrupt Pointer)
для выборки стартового адреса нужной программы ISR из таблицы. Для этого прерывавшим
устройством в виде 8 разрядного вектора поставляется младший байт, а старики извлекается из
регистра I микропроцессора. Сформированный таким образом IP указывает на ячейку памяти (в
таблице), где хранится стартовый адрес ISR. Считав этот адрес из двух смежных ячеек, процессор
переходит к обработке программы ISR. Возврат из неё должен происходить по команде RETI. В
целом алгоритм обработки изображен на рис 6.12.
В
микропроцессорном
комплекте
Z80
предусмотрено,
что
периферийные
БИС
могут
выдавать
в
качестве
вектора
прерывания
только
чётные
байты
(D0=0)
-
для
однозначности
адресации ячеек таблицы. Значит, даже при неизменном состоянии регистра I центрального
процессора возможно обслуживание 128-ми устройств в режиме прерываний 2, что во многом
превышает потребности микропроцессорной системы среднего класса.
Для перехода к ISR в режиме 2 требуется 19 тактовых периодов (см. временные диаграммы
на рис. 6.13): 7 периодов для ввода 8 разрядного вектора от прерывающего устройства, следующие
6 - для сохранения в стеке текучего состояния PC (адреса возврата), и ещё 6 - для считывания
стартового адреса ISR.
Подробное
описание
прерываний
в
системе
с
полной
конфигурацией,
особенно,
в
отношении
периферийных
элементов
комплекта
Z80,
а
также
организации
приоритетного
обслуживания см. в книге 7 "Z80/Построение систем. Программирование. Отладка".