Цикл по прерыванию программы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Цикл по прерыванию программы



В PC совместимых компьютерах используется два вида прерываний: аппаратные и программные.

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

В PC используется программируемый контроллер прерываний, который обрабатывает запросы на внешние прерывания, поступающие по восьми линиям и генерирует для процессора код типа прерывания (рис 3.7).

Рисунок 3.7 – Схема организации прерываний в компьютере PC

Каждой линии прерывания соответствует свой код (см. таблицу 3.1).

Таблица 3.1 – Коды и функции прерываний.

Линия Код (тип) прерывания Функция
IRQ0   Системный таймер 18.2 Гц.
IRQ1   Клавиатура
IRQ2 A Свободен в XT, второй контроллер прерываний в AT.
IRQ3 B СОМ2
IRQ4 C СОМ1
IRQ5 D Свободен
IRQ6 E Накопитель НГМД
IRQ7 F Порт LPT1 (принтер)

Умножая код на 4 можно получить адрес вектора прерывания для данной линии. Каждый вектор прерываний состоит из четырех байт – 16 разрядного смещения и 16 разрядного сегмента (рис 3.8).

Обработка прерывания сводится к следующему. По переднему фронту сигнала IRQ контроллер прерываний вырабатывает сигнал INTR – запрос на прерывание. Процессор, если данное прерывание разрешено, выставляет сигнал INTA – разрешение прерывания, помещает содержимое своих регистров и программного счетчика в стек.

Рисунок 3.8 – Вектор прерывания.

Затем по коду прерывания помещает вектор прерывания в программный счетчик и переходит на программу обслуживания данного устройства. Внешнее устройство должно удерживать сигнал IRQ в высоком состоянии до тех пор, пока к нему не будет обращения. После выполнения цикла ВВОД или ВЫВОД внешнее устройство должно снять сигнал IRQ. После выполнения программы обслуживания данного прерывания процессор восстанавливает содержимое своих регистров и программного счетчика и продолжает выполнение основной программы.

Для работы с прерываниями выделено два регистра. Формат первого регистра (первое слово рабочих приказов OCW1 – порт 21) приведен на рис. 3.9.

Рисунок 3.9 – Регистр OCW1 (порт 21).

Единичное значение одного из битов М0÷М7 означает, что прерывания соответствующего уровня (IRQ0÷IRQ7) маскируются и не будут обрабатываться контроллером.

Второй регистр (второе слово рабочих приказов OCW2 - порт 20) предназначен для вывода команды завершения обработки аппаратного прерывания (EOI), циклического сдвига и явного изменения приоритетов уровней. Назначение битов OCW2 приведено на рис. 3.10.

Процедура обработки аппаратного прерывания должна перед своим завершением очистить свой бит в ISR (регистр состояния, описывает в битах прерывания каких уровней в данный момент обрабатываются) выводом команды завершения обработки прерывания (End Of Interrupt, EOI). Существует два варианта команды EOI: обычный и специфицированный EOI. Обычный EOI очищает бит в ISR, соответствующий прерыванию с максимальным приоритетом. Специфицированный EOI (R=0, SL=1, EOI=1,

Рисунок 3.10 – Регистр OCW2 (порт 20).

L0 - L2 равно номеру уровня прерывания) очищает в ISR бит, соответствующий прерыванию с номером, указанным в L0 - L2, независимо от его приоритета. Команды с битом R=l позволяют изменить приоритеты уровней. Циклический сдвиг приоритетов сдвигает приоритеты влево на единицу, при этом, если после обычного распределения приоритетов, издать команду циклического сдвига, уровень 0 получит низший приоритет, уровень 1 - наивысший, уровень 2 - следующий за ним и т.д. Команда явного назначения низшего приоритета одному из уровней изменяет приоритеты остальных уровней циклически. Таким образом, если Вы зададите низший приоритет уровню 5, то уровень 6 получит наивысший.



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 383; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.190.93 (0.004 с.)