Assembler - язык неограниченных возможностей

         

Параллельный порт


BIOS автоматически обнаруживает только три параллельных порта — с адресами 0378h – 037Ah (LPT1 или LPT2), 0278h – 027Ah (LPT2 или LPT3) и 03BCh – 03BDh (LPT1, если есть) — и записывает номера их базовых портов ввода-вывода в область данных BIOS по адресам 0040h:0008h, 0040h:000Ah, 0040h:000Ch соответственно. Если в системе установлен дополнительный параллельный порт, придется дополнительно записывать его базовый номер в 0040h:000Eh, чтобы BIOS воспринимала его как LPT4. Рассмотрим назначение портов ввода-вывода, управляющих параллельными портами на примере 0278h – 027Ah.

0278h для записи — порт данных. Чтение и запись в этот порт приводят к приему или посылке байта в принтер или другое присоединенное устройство.

0279h для чтения — порт состояния

бит 7: принтер занят, находится в off line или произошла ошибка

бит 6: нет подтверждения (1 — принтер не готов к приему следующего байта)

бит 5: нет бумаги

бит 4: принтер в режиме on line

бит 3: нет ошибок

бит 2: IRQ не произошло

биты 1 – 0: 0

027Ah для чтения и записи — порт управления

бит 5: включить двунаправленный обмен данными (этот режим не поддерживается BIOS)

бит 4: включить генерацию аппаратного прерывания (по сигналу подтверждения)

бит 3: установить принтер в on line

бит 2: 0 в этом бите инициализирует принтер

бит 1: режим посылки символа LF (0Ah) после каждого CR (0Dh)

бит 0: линия STROBE

Чтобы послать байт в принтер, программа должна убедиться, что линия BUSY (бит 7 порта состояния) равна нулю, а линия АСК (бит 6 порта состояния) — единице. Затем надо послать символ на линии DATA (порт данных), не ранее чем через 0,5 мкс установить линию STROBE (бит 0 порта управления) в 0, а затем, не менее чем через 0,5 мкс, — в 1. В отличие от последовательных портов параллельные хорошо поддерживаются BIOS и DOS, так что программирование их на уровне портов ввода-вывода может потребоваться только при написании драйвера для какого-нибудь необычного устройства, подключаемого к параллельному порту, или, например, при написании драйвера принтера для новой операционной системы.



Содержание раздела