logo
ОЭВМ

31. Параллельный порт. Стандартные режимы работы. Управление регистрами порта.

BIOS может работать с тремя параллельными принтерными портами. В процессе тестирования и инициализации системы BIOS находит работоспособные принтерные порты и записывает их базовые адреса в таблицу. Возможны следующие значения базовых адресов:

378h - принтерный порт LPT1;

278h - принтерный порт LPT2;

3BCh - принтерный порт на плате адаптера монохромного дисплея.

Каждый принтерный порт обслуживают несколько портов ввода/вывода. Рассмотрим их назначение.

Порт 378h

Этот порт предназначен для записи выводимого на принтер байта данных. Возможно также чтение только что записанного байта.

Порт 37Ah

Порт управления принтером, доступен для чтения и записи:

Порт 379h

Порт состояния принтера, доступен только для чтения:

Обычно редко приходится работать с принтером на уровне портов ввода/вывода, так как достаточно использовать функции BIOS или MS-DOS, предназначенные для этого. Таблица назначения контактов разъемов принтерного порта (контакт PC) на компьютере и контактов разъема непосредственно на принтере (контакт принтера):

Для того, чтобы вывести символ на принтер, программа вначале должна убедится, что уровень сигнала на линии BUSY (бит 7 порта 379h) равен 0, а уровень сигнала на линии ACK (бит 6 порта 379h) - единице. После этого следует установить код выводимого символа на линиях DATA (порт 378h).

Затем линию STROBE (бит 0 порта 37Ah) необходимо перевести в состояние логического 0. При этом выводимый символ запишется во внутренний буфер принтера. Уровень логического нуля необходимо удерживать в течение как минимум 0,5 мкс. Это время нужно для того, чтобы символ записался в буфер принтера. После истечения интервала времени линию STROBE нужно опять перевести в состояние логической единицы. После того, как программа установит линию STROBE в состояние логического нуля, выходная линия принтера BUSY устанавливается в единицу, сигнализируя о том, что принтер занят обработкой полученного символа и временно не может принимать данные. Когда принтер полностью обработает выведенный символ, линия ACK перейдет в состояние 0. Приблизительно через 5мкс после этого линия BUSY также перейдет в состояние 0. Еще через 5мкс линия ACK примет состояние 1. Теперь принтер готов принят следующий символ распечатываемых данных.