На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 8 / Заключение Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Заключение

В этой главе рассмотрены характеристики аппаратных средств последовательного порта в системах 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.


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz