Справочник программиста на персональном компьютере фирмы IBM. Системные ресурсы Страница 10. Программирование контроллера прерываний 8259
|
Страница 10 из 20 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]. |