Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_rab_kontr_preryvany.doc
Скачиваний:
12
Добавлен:
24.11.2019
Размер:
474.62 Кб
Скачать

18

Лабораторная работа №2 Контроллер прерываний вн59а

1.1. Обработка прерываний.

Под прерыванием понимается некоторое событие, заставляющее МП прервать выполнение текущей программы (фоновая программа) и перейти к подпрограмме обработки (обработчик) этого события. После того, как обработчик завершает свою работу, МП возвращается к прерванной программе, в ту точку, где она была прервана.

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

Конечно, обработка прерываний в МП различных типов имеет свои особенности, однако общая схема действий для любых МП остается одной и той же.

При обработке внутреннего прерывания МП «известна» его причина, а, следовательно, известен источник запроса. Поэтому, укрупнено, при внутреннем прерывании МП выполняет следующие действия:

  • запоминает в стеке адрес возврата в прерываемую программу;

  • определяет начальный адрес обработчика для известного источника запроса и передает управление этому обработчику;

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

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

Существуют два метода определения внешнего источника запроса:

  • метод опроса;

  • векторные прерывания.

Метод опроса. Этот метод можно реализовать, например, следующим образом. В систему вводится специальный порт (или несколько портов, при большом числе внешних источников прерываний). Все внешние запросы заводятся на входы этого порта, причем для каждого запроса отводится один бит порта. Одновременно, все запросы через схему ИЛИ заводятся на вход INTR МП. На рис. 1 приводится подобная схема для восьми внешних источников прерываний (IR7 – IR0).

Восприняв запрос на входе INTR, МП выполняет следующий фрагмент программы:

in al, port_int ; читаем port_int

shl al, 1 ; сдвигаем содержимое al на один разряд влево

jc obr7 ; если флаг cf установлен, то это запрос по линии

; IR7, и мы переходим к обработчику этого

; прерывания

shl al, 1 ; сдвигаем al еще на один разряд влево

jc obr6 ; если cf установлен, это запрос по IR6

и. т. д.

Рис. 1 Реализация метода опроса.

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

Достоинством метода опроса являются небольшие аппаратурные затраты, а недостатком – медленная реакция МП на запросы с низким приоритетом.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]