Оставшиеся две части примера посылают
??
]
00C9 CODE ENDS
END SET_INTERRUPT
Фиг. 8.17 Асинхронные прерывания (окончание)
Оставшиеся две части примера посылают и принимают символ. В
регистре состояния линии по адресу ввода-вывода 3FDH есть биты
состояния буферов передачи и приема. Посылать символ до тех пор,
пока буфер передачи не опустеет, нельзя; и естественно, нельзя
читать символ до того, как он принят.
Адаптер асинхронной связи также работает с прерываниями. Сигнал
OUT2 в регистре управления модемом передает сигнал прерывания от
микросхемы ACE системе. Регистр разрешения прерываний в микросхеме
ACE выбирает те возможные изменения состояний, которые приведут к
возбуждению внешнего прерывания. Адаптер асинхронной связи
возбуждает прерывание уровня 3 контроллера прерываний 8259.
Давайте посмотрим, как можно использовать прерывание от
асинхронной платы для того, чтобы принимать символы. На Фиг. 8.17
показана последовательность событий, необходимых для включения
системы прерываний. В случае аппаратного прерывания, программа
устанавливает вектор прерывания, соответствующий уровню 3
контроллера 8259 (прерывание 0BH по адресу 58H), на адрес процедуры
обслуживания прерывания. Затем она сбрасывает бит регистра маски,
соответствующий прерыванию от платы связи. В микросхеме ACE 8250
программа загружает регистр разрешения прерывания так, чтобы
разрешить прерывания по состоянию приемной линии. И наконец,
программа включает линию OUT2, чтобы в систему поступали
прерывания. Когда все это работает, не возникает никаких проблем о
бработке символов по мере их получения системой. Программа на Фиг.
8.17 помещает эти символы в буфер, где их может не торопясь
просматривать другая программа.
Содержание Назад Вперед