Порт имеет поддержку на уровне BIOS — поиск установленных портов во время теста POST и сервисы печати Int 17h
(см. п. 8.3.3) обеспечивают вывод символа (по опросу готовности, не используя аппаратных прерываний), инициализацию интерфейса и принтера, а также опрос состояния принтера. Практически все современные системные платы (еще начиная с PCI-плат для процессоров 486) имеют встроенный адаптер LPT-порта. Существуют карты ISA с LPT-портом, где он чаще всего соседствует с парой СОМ-портов, а также с контроллерами дисковых интерфейсов (FDC+IDE). LPT-порт обычно присутствует и на плате дисплейного адаптера MDA (монохромный текстовый) и HGC (монохромный графический «Геркулес»). Есть и карты PCI с дополнительными LPT-портами.
К LPT-портам подключают принтеры, плоттеры, сканеры, коммуникационные устройства и устройства хранения данных, а также электронные ключи, программаторы и прочие устройства. Иногда параллельный интерфейс используют для связи между двумя компьютерами — получается сеть, «сделанная на коленке» (LapLink).
1.1. Традиционный LPT-порт
Традиционный, он же стандартный, LPT-порт называется
Таблица 1.1. Разъем стандартного LPT-порта
Контакт DB-25S | № провода в кабеле | Назначение I/O¹ | Бит² | Сигнал |
---|---|---|---|---|
1 | 1 | O/I | CR.0\ | Strobe# |
2 | 3 | O(I) | DR.0 | Data 0 |
3 | 5 | O(I) | DR.1 | Data 1 |
4 | 7 | O(I) | DR.2 | Data 2 |
5 | 9 | O(I) | DR.3 | Data 3 |
6 | 11 | O(I) | DR.4 | Data 4 |
7 | 13 | O(I) | DR.5 | Data 5 |
8 | 15 | O(I) | DR.6 | Data 6 |
9 | 17 | O(I) | DR.7 | Data 7 |
10 | 19 | I³ | SR.6 | Ack# |
11 | 21 | I | SR.7\ | Busy |
12 | 23 | I | SR.5 | PaperEnd (PE) |
13 | 25 | I | SR.4 | Select |
14 | 2 | O/I | CR.1\ | Auto LF# (AutoFeed#) |
15 | 4 | I | SR.3 | Error# |
16 | 6 | O/I | CR.2 | Init# |
17 | 8 | O/I | CR.3\ | Select In# |
18-25 | 10, 12, 14, 16, 18, 20, 22, 24, 26 | - | - | - |
¹ I/O задает направление передачи (вход-выход) сигнала порта. O/I обозначает выходные линии, состояние которых считывается при чтении из портов вывода; O(I) — выходные линии, состояние которых может быть считано только при особых условиях (см. ниже).
² Символом «\» отмечены инвертированные сигналы (1 в регистре соответствует низкому уровню линии).
³ Вход Ack# соединен резистором (10 кОм) с питанием +5 В.
Адаптер SPP-порта содержит три 8-битных регистра, расположенных по соседним адресам в пространстве ввода-вывода, начиная с базового адреса порта BASE
(3BCh, 378h или 278h).
DR
) — BASE
. Данные, записанные в этот регистр, выводятся на выходные линии Data[7:0]
. Данные, считанные из этого регистра, в зависимости от схемотехники адаптера соответствуют либо ранее записанным данным, либо сигналам на тех же линиях, что не всегда одно и то же.
SR
) — регистр состояния (только чтение), адрес=BASE+1
. Регистр отображает SR.4-SR.7
) и флаг прерывания. Бит SR.7
инвертируется — низкому уровню сигнала соответствует единичное значению бита в регистре, и наоборот.
Ниже описано назначение бит регистра состояния (в скобках даны номера контактов разъема порта).
♦ SR.7
— Busy
— инверсное отображение состояния линии Busy
(11): при низком уровне на линии устанавливается единичное значения бита — разрешение на вывод очередного байта.
♦ SR.6
— Ack
(Acknowledge) — отображение состояния линии Ack#
(10).
♦ SR.5
— РЕ
(Paper End) — отображение состояния линии Paper End
(12). Единичное значение соответствует высокому уровню линии — сигналу о конце бумаги в принтере.
♦ SR.4
— Select
— отображение состояния линии Select
(13). Единичное значение соответствует высокому уровню линии — сигналу о включении принтера.
♦ SR.3
— Error
— отображение состояния линии Error#
(15). Нулевое значение соответствует низкому уровню линии — сигналу о любой ошибке принтера.
♦ SR.2
— PIRQ
— флаг прерывания по сигналу Ack#
(только для порта PS/2). Бит обнуляется, если сигнал Ack#
вызвал аппаратное прерывание. Единичное значение устанавливается по аппаратному сбросу и после чтения регистра состояния.
♦ SR[1:0]
— зарезервированы.