Аппаратное обеспечение IBM PC



         

Контроллер прерываний 8259 - часть 3


Команды обработки конца прерывания приведем в виде таблицы:

Биты байта команды Описание D7 D6 D5 D4 D3 D2 D1 D0 0 0 1 0 0 0 0 0 Обычный конец прерывания. 0 1 1 0 0 B2 B1 B0 Специальный конец прерывания, B0...B2 - двоично-десятичный код сбрасываемого разряда в регистре обслуживания прерывания ISR. 1 0 1 0 0 X X X Циклический сдвиг уровней приоритета с обычным концом прерывания. Дно приоритетного кольца устанавливается по обслуженному запросу. 1 1 1 0 0 B2 B1 B0 Циклический сдвиг уровней приоритета со специальным концом прерывания, B0...B2 - двоично-десятичный код дна приоритетного кольца. 1 0 0 0 0 X X X Разрешение вращения уровней приоритета. 0 0 0 0 0 X X X Сброс разрешения вращения уровней приоритета. 1 1 0 0 0 B2 B1 B0 Циклический сдвиг уровней приоритета без завершения прерывания, B0...B2 - двоично-десятичный код дна приоритетного кольца

Команды третьего типа выдаются также в порты с адресами 20h и A0h. Они имеют следующий формат:

Биты байта команды Описание D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 1 1 X X Установка режима опроса. 0 0 0 0 1 0 1 1 Разрешение чтения регистра ISR. 0 0 0 0 1 0 1 0 Разрешение чтения регистра IRR. 0 1 1 0 1 0 0 0 Разрешение триггера специального маскирования. 0 1 0 0 1 0 0 0 Сброс триггера специального маскирования.

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

Команда специального конца прерывания устанавливает в нулевое состояние тот разряд ISR, номер которого указан в разрядах B0...B2 команды.

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

Аналогично работает команда циклического сдвига уровней приоритета со специальным концом прерывания, только низший уровень приоритета присваивается тому входу IRQ, номер которого указан в разрядах B0...B2 команды.

Команда циклического сдвига уровней приоритета устанавливает статус уровней приоритета без выполнения операции конца прерывания. Разряды B0...B2 указывают дно приоритетного кольца.

После выполнения команд разрешения чтения регистров ISR или IRR при выполнении команды ввода из порта 20h и A0h считывается соответственно содержимое регистров ISR и IRR. Для получения содержимого регистра IMR необходимо выполнить чтение портов с адресами соответственно 21h и A1h.

Команда разрешения триггера специального маскирования блокирует действие тех разрядов ISR, которые замаскированы командой типа 1 (маскирования индивидуальных приоритетных уровней запроса прерывания). Специальное маскирование используется для обслуживания такого запроса, который блокируется старшим или равным по уровню приоритета обслуженным запросом, хранящимся в ISR, не сбрасывая последний.

Чтение регистров ISR и IRR может использоваться резидентными программами при проверке возможности своей активизации - можно проверить, не выполняется ли в настоящий момент обработка какого-нибудь прерывания, которая может конфликтовать с действиями резидентной программы.




Содержание  Назад