Аппаратное обеспечение
персонального компьютера
© Александр Фролов, Григорий Фролов
Том 33, М.: Диалог-МИФИ, 1997, 304 стр.
В этом разделе мы расскажем о функцях BIOS, облегчающих обслуживание двух асинхронных адаптеров, COM1 и COM2. Эти функции доступны через прерывание INT 14h.
Инииализация портов
асинхронного адаптера
Первая функция с кодом 00h предназначена для инициализации портов асинхронного адаптера:
Регистры на входе: |
AH = 00h; DX = номер порта адаптера: 0 - COM1, 1 - COM2; AL = параметры инициализации |
Регистры на выходе: |
AH = состояние порта асинхронного адаптера; AL = состояние модема |
Параметры инициализации, предаваемые в регистре AL, перечислены ниже:
Поле |
Описание |
0-1 |
Длина слова: 00 - 5 бит; 01 - 6 бит; 10 - 7 бит; 11 - 8 бит |
2 |
Количество стоповых бит: 0 - 1 бит; 1 - 2 бита |
3-4 |
Контроль четности: X0 - контроль на четность не используется; 01 - контроль на нечетность; 11 - контроль на четность |
5-7 |
Скорость передачи данных в бодах: 000 – 110; 001 – 150; 010 – 300; 011 – 600; 100 – 1200; 101 – 2400; 110 – 4800; 111 – 9600 |
После вызова функции 00h в регистр AH записывается состояние порта асинхронного адаптера.
Формат регистра:
Поле |
Описание |
0 |
Истекло время ожидания. Если установлен этот бит, другие биты не имеют значения |
1 |
Регистр сдвига передатчика пуст |
2 |
Буферный регистр передатчика пуст |
3 |
Обнаружено состояние BREAK |
4 |
Ошибка синхронизации |
5 |
Ошибка четности |
6 |
Ошибка переполнения входного регистра |
7 |
Данные готовы |
Регистр AL содержит байт состояния модема.
Формат регистра:
Поле |
Описание |
0 |
Линия CTS изменила состояние |
1 |
Линия DSR изменила состояние |
2 |
Линия RI изменила состояние |
3 |
Линия DCD изменила состояние |
4 |
Состояние линии CTS |
5 |
Состояние линии DSR |
6 |
Состояние линии RI |
7 |
Состояние линии DCD |
Передача байта
Для передачи байта используется функция 01h:
Регистры на входе: |
AH = 01h; DX = номер порта адаптера: 0 - COM1, 1 - COM2; AL = передаваемый байт |
Регистры на выходе: |
AL сохраняется; AH = состояние порта асинхронного адаптера. Если бит 7 регистра AH установлен, произошла ошибка |
Прием байта
Функция 02h предназначена для приема байта:
Регистры на входе: |
AH = 02h; DX = номер порта адаптера: 0 - COM1, 1 - COM2; |
Регистры на выходе: |
AL = принятый байт; AH = состояние порта асинхронного адаптера. Если бит 7 регистра AH установлен, произошла ошибка |
Определение состояния
асинхронного адаптера
Состояние порта асинхронного адаптера можно узнать с помощью функции 03h:
Регистры на входе: |
AH = 03h; DX = номер порта адаптера: 0 - COM1, 1 - COM2; |
Регистры на выходе: |
AL = состояние модема; AH = состояние порта асинхронного адаптера. Если бит 7 регистра AH установлен, произошла ошибка |
|