Справочник программиста на персональном компьютере фирмы IBM. Системные ресурсы
Страница 10. Программирование контроллера прерываний 8259


 

1.2.1 Программирование контроллера прерываний 8259.

Для управления аппаратными прерываниями во всех типах IBM PC
используется микросхема программируемого контроллера прерываний
Intel 8259. Поскольку в ккаждый момент времени может поступить не
один запрос, микросхема имеет схему приоритетов. Имеется 8 уров-
ней приоритетов, кроме AT, у которого их 16, и обращения к соот-
ветствующим уровням обозначаются сокращениями от IRQ0 до IRQ7 (от
IRQ0 до IRQ15), что означает запрос на прерывание. Максимальный
приоритет соответствует уровню 0. Добавочные 8 уровней для AT
обрабатываются второй микросхемой 8259; этот второй набор уровней
имеет приоритет между IRQ2 и IRQ3. Запросы на прерывание 0-7
соответствуют векторам прерываний от 8H до 0FH; для AT запросы на
прерывания 8-15 обслуживаются векторами от 70H до 77H. Ниже при-
ведены назначения этих прерываний:
Аппаратные прерывания в порядке приоритета.
IRQ 0 таймер
1 клавиатура
2 канал ввода/вывода
8 часы реального времени (только AT)
9 программно переводятся в IRQ2 (только AT)
10 резерв
11 резерв
12 резерв
13 мат. сопроцессор (только AT)
14 контроллер фиксированного диска (только AT)
15 резерв
3 COM1 (COM2 для AT)
4 COM2 (модем для PCjr, COM1 для AT)
5 фиксированный диск (LPT2 для AT)
6 контроллер дискет
7 LPT1
Прерыванию времени суток [2.1.0] дан максимальный приоритет,
поскольку если оно будет постоянно теряться, то будут неверными
показания системных часов. Прерывание от клавиатуры [3.1.0] вызы-
вается при нажатии или отпускании клавиши; оно вызывает цепь
событий, которая обычно заканчивается тем, что код клавиши поме-
щается в буфер клавиатуры (откуда он затем может быть получен
программными прерываниями).
Микросхема 8259 имеет три однобайтных регистра, которые управ-
ляют восемью линиями аппаратных прерываний. Регистр запроса на
прерывание (IRR) устанавливает соответствующий бит, когда линия
прерывания сигнализирует о запросе. Затем микросхема автоматичес-
ки проверяет не обрабатывается ли другое прерывание. При этом она
запрашивает информацию регистра обслуживания (ISR). Дополнитель-
ная цепь отвечает за схему приоритетов. Наконец, перед вызовом
прерывания, проверяется регистр маски прерываний (IMR), чтобы
узнать разрешено ли в данный момент прерывание данного уровня.
Как правило программисты обращаются только к регистру маски пре-
рываний через порт 21H [1.2.2] и командному регистру прерываний
через порт 20H [1.2.3].

 
« Предыдущая статья   Следующая статья »