Прерывание при наличии одного устройства вывода

Несколько иной подход нул{ен _1в случае прерывания от устройства вывода, указывающего, что устройство готово принять данные,* так как процессор должен подготовить данные перед их передачей. Рассмотрим простой случай, когда имеется толь-ка -од(но устройство'вывода, которое вырабатывает сигнал прерывания, когда оно готово ^принять данные. Обмен информацией осуществляется достаточно редкб, поэтому не нужны особые процедуры, гарантирующие наличие данных в момент их запроса устройством. И здесь система прерываний —г удобство, а не необходимость: прерывание лишь обеспечивает непосредственную подачу сигнала «данные готовы» на ЦП.

На рис. .9.19 показана конфигурация оборудования Для данного случая. Отличия от случая прерывания от устройства ввода (рис. 9.17) следующие: данные передаются в другом направлении, и другой управляющий сигнал процессора активирует порт и сбрасывает триггер запроса на прерывание.

В системе, изображенной на рис. 9.19, главная программа начинается с адреса, на который передается управление при,сбросе. Программа настраивает процессор на передачу управления процедуре обработки прерывания, готовит данные для вывода, разрешает прерывания и ожидает сигнала «УВВ готово». И здесь нет необходимости возвращать управление главной программе, сохранять состояние процессора и определять источник прерывания.

Программа на языке ассемблера имеет следующую структуру;

ORG RSTADD Установить счетчик адреса
Настроить процессор на передачу управления процедуре обработки прерывания

Подготовить данные для вывода
ENABLE INTERRUPTS Разрешить прерывания

HALT Останов

ORG INTADD Установить счетчик адреса
Послать данные устройству вывода
JUMP RSTADD Перейти по адресу RSTADD

На рис. 9.20 показана блок-схема данной программы. Отметим, что признак прерывания проверяется аппаратно, а не программно.

Другое возможное решение — разрешить прерывания сразу после настройки системы прерываний. В этом случае подпрограмма обработки прерывания должна определить, готовы ли данные. Программа может использовать два признака: DRDY (DATA READY — «данные готовы») и PRDY (PERIPHERAL READY—-«УВВ готово»). Эти признаки принимают значение 1, когда готовы соответственно данные или УВВ. На рис. 9.21 изображены блок-схемы главной программы и подпрограммы обработки прерывания. Главная программа совпадает с описанной выше, за тем исключением, что разрешение прерываний предшествует подготовке данных. Подпрограмма обработки прерывания проверяет, подготовила ли главная программа данные. Если данные готовы, то подпрограмма посылает их устройству вывода и передает управление на начало главной программы; если данные
не подготовлены, то подпрограмма «делает заметку» о том, что УВВ готово, устанавливая признак PRDY, и возвращает управление главной программе. Следует обратить внимание на то, что главная программа после подготовки данных должна проверить признак PRDY, так как возможно, что он уже установлен процедурой обработки прерывания.

Подпрограмма обработки прерывания должна сохранить содержимое всех тех регистров, которые нужны ей для проверки DRDY и установки PRDY. Это необходимо для возобновления работы главной программы. Следует обратить внимание и на то, что после приема прерывания на обработку все прерывания запрещены до тех пор, пока ЦП
не передаст данные периферийному устройству. Это происходит потому, что триггер запроса на прерывание останется установленным до тех пор, пока ЦП не сбросит его при записи данных в порт вывода. Программа организована следующим образом:

ORG RSTADD Установить счетчик адреса
Настроить систему прерываний
CLEAR DRDY Сбросить DRDY

CLEAR PRDY Сбросить PRDY

ENABLE INTERRUPTS Разрешить прерывания
Подготовить данные*
LOAD
#1

DRDY

PRDY

#1
STORE

LOAD

SUBTRACT
JUMP ON ZERO SEND HALT

ORG JNTADD
Загрузить 1 в регистр Установить DRDY

Загрузить значение PRDY в регистр Вычесть единицу из содержимого регистра

Если 0, то перейти по адресу SEND Останов

Установить счетчик адреса
Сохранить содержимое регистров и значения признаков LOAD DRDY Загрузить значение DRDY в регистр

SUBTRACT ф 1 Вычесть единицу из содержимого

регистра
JUMP ON ZERO SEND LOAD #\

STORE PRDY
Если 0, то перейти по адресу SEND Загрузить в регистр J Установить PRDY
Восстановить содержимое RETURN

ORG SEND
регистров и значения признаков Возврат управления главной программе Установить счетчик адреса Передать данные периферийному устройству
RSTADf) Передать управление на начало главной
JUMP
программы

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

Хотя на рис. 9.17 и 9.19 триггер запроса на прерывание изображен отдельно от порта данных, эти два устройства часто объединяются в одном аппаратном модуле. Они объединены, например, в порте ввода-вывода Intel 8212 и в адаптере интерфейса периферийных устройств (PIA) фирмы Motorola, как это было описано в гл. 8. Частью этих устройств являются и схемы, с помощью которых сигнал сброса или схема выбора порта сбрасывают триггер запроса на прерывание.

 



http://avshotel.ru/nomyera одноместный номер в екатеринбурге. . Анализ положительный на микоплазму пневмония www.gemotest.ru.