Как установить последовательные порты на 19200 бод в сборке x86? - PullRequest
3 голосов
/ 14 декабря 2011

Я должен изменить приложение, написанное в 16-битной сборке, использующее последовательный порт.Одной из целей является поддержка скорости 19200 бод.Большинство ресурсов, которые я прочитал (например, this ) в Интернете, показывают способ сделать это с помощью INT 14h.Я в основном записываю магический номер в регистр al, вызываю прерывание и порт (надеюсь) установлен.Приложение системного вызова ОС использует для настройки последовательного порта тот же метод (я могу изменить его при необходимости).

Проблема с этим подходом состоит в том, что поле, которое устанавливает скорость, является3-битное поле и максимальная скорость, если 9600 бод.Как использовать более высокие скорости?

1 Ответ

2 голосов
/ 14 декабря 2011

Я не слишком знаком с функциональностью BIOS, но если вы знаете больше о базовом чипе UART последовательного порта, вы, вероятно, можете запрограммировать его напрямую, минуя поддержку BIOS.

Например, классический 16550 UART (таблица данных, для которой находится, например, здесь ) поддерживает до 1 Мбит / с и использует два 8-битных регистра для выражения желаемое масштабирование часов.

Здесь - это справочный текст о том, как именно это сделать, то есть запрограммировать «байты защелки делителя» для установки желаемой скорости передачи. Из сопровождающего кода ясно, что для COM1 с базовым адресом ввода / вывода 0x3f8 вы найдете байт делителя младшего разряда на 0x3f8 и байт старшего разряда на 0x3f9.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...