Параллельный интерфейс
LPT
Порт параллельного интерфейса был введен в
IBM PC для подключения принтера (Line Printer означает “построчный принтер”). Адаптер параллельного интерфейса представляет собой набор регистров, расположенных в пространстве ввода/вывода. Регистры порта адресуются относительно базового адреса порта, стандартными значениями которого являются 386h, 378h и 278h. Порт имеет внешнюю 8-битную шину данных, 5-битную шину сигналов состояния и 4-битную шину управляющих сигналов.BIOS поддерживает до четырех LPT-портов (LPT1-LPT4) своим сервисом – прерыванием INT 17h, обеспечивающим через них связь с принтерами по интерфейсу Centronics. Этим сервисом BIOS осуществляет вывод символа, инициализацию интерфейса и принтера, а также опрос состояния принтера.
Сигналы интерфейса
Название |
Контакт |
Назначение |
Регистр и бит* |
Шина данных: | |||
Data 0 |
2 |
Двунаправленная шина данных, по умолчанию настроена на вывод. При установке 5-го бита в регистре CR в 1 линии становятся входами. В этом случае на них установлены подтягивающие резисторы к +5 В, поэтому по умолчанию входной уровень – лог. 1. |
DR:0 |
Data 1 |
3 |
DR:1 | |
Data 2 |
4 |
DR:2 | |
Data 3 |
5 |
DR:3 | |
Data 4 |
6 |
DR:4 | |
Data 5 |
7 |
DR:5 | |
Data 6 |
8 |
DR:6 | |
Data 7 |
9 |
DR:7 | |
Выходные сигналы: | |||
Strobe |
1 |
Строб данных. Данные фиксируются по низкому уровню сигнала. |
CR:0\ |
AutoLF |
14 |
Сигнал автоматического перевода строки. |
CR:1\ |
Init |
16 |
Сигнал инициализации принтера |
CR:2 |
SelectIn |
17 |
Выбор принтера (низким уровнем). При высоком уровне принтер не воспринимает остальные сигналы интерфейса. |
CR:3\ |
Входные сигналы: | |||
Ack |
10 |
Импульс подтверждения приема байта и запрос на прием следующего. Может использоваться для формирования запроса прерывания. |
SR:6 |
Busy |
11 |
Признак занятости принтера. Принимать данные он будет только при низком уровне этого сигнала. |
SR:7\ |
PaperEnd |
12 |
Высокий уровень сигнализирует о том, что в принтере закончилась бумага |
SR:5 |
Select |
13 |
Сигнализирует о включении принтера |
SR:4 |
Error |
15 |
Указывает на ошибку в принтере |
SR:3 |
* Знак “\” означает инверсию: единичному состоянию бита соответствует низкий уровень сигнала, и наоборот.
Стандартный параллельный порт имеет три 8-битных регистра, расположенных по смежным адресам в пространстве ввода/вывода, начиная с базового адреса порта (BASE). Для порта LPT1 базовый адрес –
$378.Data Register (DR) – регистр данных, адрес – BASE. Данные, записанные в этот порт, выводятся на выходные линии Data0..Data7. Данные, считанные из этого регистра, соответствуют либо ранее записанным данным (если шина данных настроена на вывод), либо сигналам на тех же линиях (если шина данных настроена на ввод).
Status Register (SR) – регистр состояния, представляющий собой 5-битный порт ввода сигналов состояния принтера (биты SR:3–SR:7), адрес – BASE+1.
Назначение битов регистра состояния:
SR:7 – инверсное отображения состояния линии Busy;
SR:6 – отображения состояния линии Ack;
SR:5 – отображения состояния линии PaperEnd;
SR:4 – отображения состояния линии Select;
SR:3 – отображения состояния линии Error;
SR:2 – PIRQ. Флаг прерывания по сигналу Ack. Разрешено, если 4-й бит в регистре CR = 1.
SR:[1,0] – зарезервированы.
Control Register (CR) – регистр управления, адрес – ВАSЕ+2. Как и регистр данных, этот 4-битный порт вывода допускает запись и чтение (биты 0-3), но его выходной буфер обычно имеет тип “открытый коллектор”.
Назначение битов регистра управления:
CR[7:6] – зарезервированы.
CR:5 – Direction – бит управления направлением передачи (только для портов PS/2). Запись единицы переводит регистр данных в режим ввода.
CR:4 – ACKINTEN (Ack Interrupt Enable) – единичное значение разрешает прерывание по спаду сигнала на линии Ack (сигнал запроса следующего байта).
CR:3 – единичное значение бита соответствует низкому уровню на выходе SelectIn.
CR:2 – нулевое значение бита соответствует низкому уровню на выходе Init.
CR:1 единичное значение бита соответствует низкому уровню на выходе AutoLF – сигналу на автоматический перевод строки (LF – Line Feed) по приему байта возврата каретки.
CR:0 – единичное значение бита соответствует низкому уровню на выходе Strobe.