Автоматизированные системы контроля и управления РЭС, конспект лекций, страница 17

Программирование режимов работы КПП осуществляется автоматически при загрузке системы с помощью BIOS.

К задачам пользователя по программированию КПП относятся:

        - маскирование/демаскирование линии прерывания;

        - формирование команды EOI (End of Interrupt) - конец прерывания.

Эта команда завершает процедуру обработки прерываний. Она записывается в регистр командного слова КПП и осуществляет сброс бита занятия линии в регистре состояния ISR.

Инициализация таблицы векторов прерываний осуществляются из вызывающей (прерываемой) программы.

Пример программирования ввода-вывода в режиме прерывания по готовности данных АЦП с выводом данных на ЦАП (для приведенной ранее структуры модуля В/В).

Как и при программном В/В, вначале составляется ГСА В/В.

Обобщенная ГСА ввода/вывода по прерыванию приведена на рис. 3.15.

Рис.3.15.

Основная программа:                       Программа обработки прерываний:

1. Инициализация ИФ;                            1. Разрешение запроса прерываний

2. Программирование таймера;                  для МП (sti);

3. Разрешение формирования                 2. Программный ввод/вывод и

    запроса прерывания устройством;         обработка;

4. Установка вектора прерываний;         3. Запись команды EOI в контроллер

5. Демаскирование линии запроса              прерываний.

    прерываний;

6. Разрешение пуска АЦП;

7. Цикл ожидания запроса

    прерывания (проверка нажатия

    клавиши).

Основные ее отличия:

- вместо цикла программного опроса готовности данных АЦП используются цикл ожидания запроса прерывания по готовности данных АЦП, во время которого может выполняться, например, опрос нажатия клавиши;

- в основной программе дополнительно производится разрешение формирования запроса прерывания, установка вектора прерывания, демаскирование линии запроса прерывания.

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