Порт параллельного интерфейса был введен в PC для подключения принтера —LP'T-порт (Line PrinTer — построчный принтер).
Адаптер параллельного интерфейса представляет собой набор регистров, расположенных в пространстве ввода/вывода. Регистры порта адресуются относительно базового адреса порта, стандартными значениями которого являются 386h, 378h и 278h. Порт имеет внешнюю 8-битную шину данных, 5-битную шину сигналов состояния и 4-битную шину управляющих сигналов.
BIOS поддерживает до четырех LPT-портов (LPT1-LPT4) своим сервисом — прерыванием INT 17h, обеспечивающим через них связь с принтерами по интерфейсу Centronics. Этим сервисом BIOS осуществляет вывод символа, инициализацию интерфейса и принтера, а также опрос состояния принтера.
Интерфейс Centronics
Понятие Centronics относится как к набору сигналов и протоколу взаимодействия, так и к 36-контактному разъему, устанавливаемому на принтерах. Назначение сигналов приведено в табл. 1.
Таблица 1.
Сигналы интерфейса Centronics
Сигнал | I/O* | Контакт | Назначение |
Strobe | I | 1 | Строб данных. Данные фиксируются по низкому уровню сигнала |
Data [0:7] | I | 2-9 | Линии данных. Data 0 (контакт 2) — младший бит |
Actt | 0 | 10 | Acknowledge — импульс подтверждения приема байта (запрос на прием следующего). Может использоваться для формирования запроса прерывания |
Busy | 0 | 11 | Занято. Прием данных возможен только при низком уровне сигнала |
PaperEnd | 0 | 12 | Высокий уровень сигнализирует о конце бумаги |
Select | 0 | 13 | Сигнализирует о включении принтера |
Auto LF# | I | 14 | Автоматический перевод строки. |
Еггогй | 0 | 32 | Ошибка: конец бумаги, состояние OFF-Line или внутренняя ошибка принтера |
Imt# | I | 31 | Инициализация |
Slot In# | I | 36 | Выбор принтера (низким уровнем). При высоком уровне принтер не воспринимает остальные сигналы интерфейса |
GND | - | 19-30 33 | Общий провод интерфейса |
* I/O | Задает | Направление | (вход/выход) применительно к принтеру. |
Интерфейс Centronics поддерживается большинством принтеров с параллельным интерфейсом, его отечественным аналогом является интерфейс ИРПР-М.
Традиционный LPT-порт
Традиционный порт SPP (Standard Parallel Port) является однонаправленным портом, на базе которого программно реализуется протокол обмена Centronics. Порт обеспечивает возможность вырабатывания запроса аппаратного прерывания по импульсу на входе АСК#. Сигналы порта выводятся на разъем DB-25S (розетка), установленный непосредственно на плате адаптера (или системной плате) или соединяемый с ней плоским шлейфом. Название и назначение сигналов разъема порта (табл. 2) соответствуют интерфейсу Centronics.
Таблица 2.
Разъем стандартного LPT-порта
Контакт DB-25S | Провод шлейфа | Назначение | ||
I/O* | Reg.Bit** | Сигнал | ||
1 | 1 | 0/1 | CR: 0\ | Strobe# |
2 | 3 | 0(1) | DR:0 | Data 0 |
3 | 5 | 0(1) | DR: 1 | Data 1 |
4 | 7 | 0(1) | DR: 2 | Data 2 |
5 | 9 | 0(1) | DR:3 | Data 3 |
6 | 11 | 0(1) | DR: 4 | Data 4 |
7 | 13 | 0(1) | DR:5 | Data 5 |
8 | 15 | 0(1) | DR:6 | Data 6 |
9 | 17 | 0(1) | DR:7 | Data 7 |
10 | 19 | I | SR: 6 | Ack# |
11 | 21 | I | SR: 7\ | Busy |
12 | 23 | I | SR: 5 | PaperEnd |
13 | 25 | I | SR: 4 | Select |
14 | 2 | 0/1 | CR: 1\ | Auto LF# |
15 | 4 | I | SR: 3 | Error# |
16 | 6 | 0/1 | CR: 2 | Init# |
17 | 8 | 0/1 | CR:3\ | Select In# |
18-25 | 10, 12, 14, 16 | 18, 20, 22, 24, 26 | - | - |
* I/O задает направление передачи (вход/выход) сигнала порта; 0/I обозначает выходные линии, состояние которых считывается при чтении из соответствующих портов вывода.
** Символом «\» отмечены инвертированные сигналы (1 в регистре соответствует низкому уровню линии).
*** Вход Ack# соединен резистором (10 кОм) с питанием +5 В.
Стандартный порт имеет три 8-битных регистра, расположенных по соседним адресам в пространстве ввода/вывода, начиная с базового адреса порта (BASE).
Data Register (DR) — регистр данных, адрес= BASE. Данные, записанные в этот порт, выводятся на выходные линии интерфейса. Данные, считанные из этого регистра, в зависимости от схемотехники адаптера соответствуют либо ранее записанным данным, либо сигналам на тех же линиях.
Status Register (SR) — регистр состояния, представляющий собой 5-битный порт ввода сигналов состояния принтера (биты SR.4-SR.7), адрес= BASE+1. Бит SR.7 инвертируется — низкому уровню сигнала соответствует единичное значению бита в регистре, и наоборот.
Назначение бит регистра состояния (в скобках даны номера контактов разъема):
SR.7—Busy — инверсные отображения состояния линии Busy (11);
SR.6 —АСК (Acknowledge) — отображения состояния линии Ack# (10).
SR.5 —РЕ (Paper End) — отображения состояния линии Paper End (12).
SR.4—Select — отображения состояния линии Select (13). Единичное значение соответствует cигналу о включении принтера.
SR.3—Error — отображения состояния линии Error (15).
SR.2 — PIRQ — флаг прерывания по сигналу Ack# (только для порта PS/2). Бит обнуляется, если сигнал Ack# вызвал аппаратное прерывание. Единичное значение устанавливается по аппаратному сбросу и после чтения регистра состояния.
SR[1:0] — зарезервированы.
Control Register (CR) — регистр управления, адрес=ВА5Е+2. Как и регистр данных, этот 4-битный порт вывода допускает запись и чтение (биты 0-3), но его выходной буфер обычно имеет тип открытый коллектор. Это позволяет более корректно использовать линии данного регистра как входные при программировании их в высокий уровень. Биты О, 1, 3 инвертируются — единичному значению в регистре соответствует низкий уровень сигнала, и наоборот.
Назначение бит регистра управления:
CR[7:6] — зарезервированы.
CR.5 — Direction — бит управления направлением передачи (только для портов PS/2). Запись единицы переводит порт данных в режим ввода.
CR.4 —ACKINTEN (Ack Interrupt Enable) — единичное значение разрешает прерывание по спаду сигнала на линии Ackff — сигнал запроса следующего байта.
CR.3 — Select In — единичное значение бита соответствует низкому уровню на выходе Selecting (17) — сигналу, разрешающему работу принтера по интерфейсу Centronics.
CR.2 — Init — нулевое значение бита соответствует низкому уровню на выходе Imt# (16) — сигнал аппаратного сброса принтера.
CR.1 — Auto LF — единичное значение бита соответствует низкому уровню на выходе Auto LF# (14) — сигналу на автоматический перевод строки (LF — Line Feed) по приему байта возврата каретки (CR — Carriage Return).
CR.O —Strobe — единичное значение бита соответствует низкому уровню на выходе Strobeff (1) — сигналу стробирования выходных данных.
Запрос аппаратного прерывания (обычно IRQ7 или IRQ5) вырабатывается по отрицательному перепаду сигнала на выводе 10 разъема интерфейса (АСК#) при установке CR.4=1. Прерывание вырабатывается, когда принтер подтверждает прием предыдущего байта.