|
|
|
|
Заключение
В этой главе рассмотрены характеристики аппаратных средств
последовательного порта в системах MS-DOS и представлены методы
его программирования. Также содержится небольшая коммуникационная
программа, написанная на Microsoft C 5.0, для иллюстрации реализации этих методов на практике. Программирование последовательного порта для
управляемого прерывания ввода/вывода выполняется
следующим образом:
1. Получить базовый адрес выбранного коммуникационного порта
из области данных BIOS на сегменте 40h и со смещением 0.
2. Используя функцию MS-DOS 35h, получить адрес старой подпрограммы обслуживания прерывания для номера прерывания,
соответствующего данному адаптеру, и сохранить его.
3. Используя функцию MS-DOS 25h, установить для номера прерывания Вашу собственную подпрограмму обслуживания прерывания.
4. С использованием функции BIOS 14h установить коммуникационные параметры адаптера.
5. Установить очереди приема и передачи для содержания входящих и исходящих символов.
6. Включить в регистре управления модемом необходимые сигналы
(например, DTR - терминал готов и RTS - запрос на передачу).
7. Разрешить все прерывания адаптера (установкой битов с 0 по
3 в регистре разрешения прерывания в 1).
8. Так же включить бит OUT2 в регистре управления модемом для
разрешения прерываний последовательного адаптера.
9. Запрограммировать контроллер 8259A для распознавания прерываний с IRQ этого адаптера (путем установки соответствующего бита регистра маски прерывания,
доступного через адрес порта 21h, в 0).
При выполнении некоторых операций, если пользователь решает
прервать сеанс работы, должна быть вызвана подпрограмма "очистки". Очистка выполняется следующим образом:
1. Выключить прерывания последовательного адаптера.
2. Сбросить биты регистра управления модемом.
3. Восстановить старую подпрограмму обработки прерывания.
4. Замаскировать прерывания для этого IRQ в 8259A.
|
|