Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОМ-ПОРТ.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
134.66 Кб
Скачать

Средства bios для работы с сом-портами

В процессе начального тестирования POST BIOS проверяет наличие последовательных портов (регистров UART) по стандартным адресам (3F8h, 2F8h, 3E8h, 2E8h соответственно для СОМ1...СОМ4) и помещает базовые адреса обнаруженных портов в ячейки BIOS DATA AREA 0:0400, 0402, 0404, 0406. Эти ячейки хранят адреса портов с логическими именами СОМ1 – СОМ4. В ячейки 0:047С, 047D, 047Е, 047F заносятся константы, задающие выдержку тайм-аута для этих портов.

Обнаруженные порты инициируются обычно на скорость обмена 2400 бит/с, 7 бит данных с контролем на чётность, 1 стоп-бит. Управляющие сигналы интерфейса DTR и RTS переводятся в исходное состояние («выключено» - положительное напряжение).

Порты поддерживаются сервисом BIOS INT 14h, который обеспечивает следующие функции:

00h – инициализация (установка скорости обмена и формата посылок, заданных регистром AL, запрет источника прерываний). На сигналы DTR и RTS влияния не оказывает (после аппаратного сброса они пассивны);

01h – вывод символа из регистра AL (без аппаратных прерываний). Активируются сигналы DTR и RTS, и, дождавшись освобождения регистра THR, в него помещают вводимый символ. Если за заданное время регистр не освобождается, фиксируется ошибка тайм-аута и функция завершения;

02h – ввод символа (без аппаратных прерываний). Активируется только сигнал DTR (RTS переходит в пассивное состояние) и ожидается готовность принятых данных, принятый символ помещается в регистр AL. Если за заданное время данные не получены, функция завершается ошибкой тайм-аута;

03h – опрос состояния модема и линии (чтение регистров MSR и LSR). Эту гарантированно быструю функцию обычно вызывают перед функциями ввода/вывода во избежание риска ожидания тайм-аута.

При вызове INT14h номер функции задаётся в регистре АН, номер порта (0-3) – в регистре DX (0 – СОМ1, 1 – СОМ2,...). При возврате из функций 0,1 и 3 регистр АН содержит байт состояния линии (регистр LSR), AL – байт состояния модема (MSR). При возврате из функции 2 нулевое значение бита 7 регистра АН указывает на наличие принятого символа в регистре AL; ненулевое значение бита 7 указывает на ошибку приёма, которую можно уточнить функцией 3.

Байт состояния линии (регистр АН) имеет формат, который повторяет содержимое регистра LSR.

Байт состояния модема (регистр AL при возврате из функций 0, 1, 3) имеет формат, который повторяет содержимое регистра MSR.

При инициализации порта биты регистра AL имеют следующее назначение:

биты 7:5 – скорость обмена:

000 = 110 бит/с

100 = 1200 бит/с

001 = 150 бит/с

101 = 2400 бит/с

010 = 300 бит/с

110 = 4800 бит/с

011 = 600 бит/с

111 = 9600 бит/с

биты 4:3 – контроль паритета:

01 – число единиц нечётное

11 – число единиц чётное

00 и 10 – без контроля

бит 2 – количество стоп-бит:

0 – 1 бит, 1 – 2 бита

биты 1:0 – длина посылки:

00 – 5 бит

01 – 6 бит

10 – 7 бит

11 – 8 бит

Режим работы порта может устанавливаться командой DOS MODE COMх с указанием параметров.

Стандартные функции библиотеки Си

Библиотеки трансляторов Borland С++ и Turbo C содержат две функции управления портами асинхронного последовательного адаптера – bioscom и _bios_serialcom. Эти функции управляют СОМ-портами компьютера через прерывания BIOS INT 0х14. Вследствие этого функции не могут работать со скоростями больше чем 9600 бит/с. Если необходимо использовать более высокие скорости необходимо непосредственное программирование портов асинхронного последовательного адаптера.