Код: Выделить всё
procedure WriteToPort(Port: Word; Data: Byte);
asm
mov DX, Port;
mov AL, Data;
out DX, AL;
end;
function ReadFromPort(Port: Word): Byte;
asm
mov DX, Port;
in AL, DX;
end;
LPT1:
Регистр входных данных: 0378h
Регистр статуса: 0379h
Регистр управления: 037Ah
LPT2: соответственно 0278h 0279h 027Ah
Пример: чтобы узнать что у нас на шине данных LPT1 надо
Код: Выделить всё
ShowMessage(IntToStr(ReadFromPort($0378)));
Регистр управления
бит 0 0 = нормальная установка 1 = вызывает вывод байта данных
бит 1 0 = нормальная установка 1 = автоматический перевод строки после возврата каретки
бит 2 0 = инициализировать порт принтера 1 = нормальная установка
бит 3 0 = отмена выбора принтера 1 = нормальная установка
бит 4 0 = прерывание принтера запрещено 1 = разрешено
бит 5-7 не используются
Регистр статуса
бит 0-2 не используются
бит 3 0 = ошибка принтера 1 = нет ошибки
бит 4 0 = принтер off-line 1 = принтер on-line
бит 5 0 = бумага вставлена 1 = нет бумаги
бит 6 0 = принтер подтверждает прием символа 1= нормальная установки
бит 7 0 = принтер занят 1 = принтер свободен
Назначение контактов:
1 STROBE - Строб (НИЗКИЙ означает что можно читать данные)
2 DATA 1 - линия данных 1
3 DATA 2 - " 2
4 DATA 3 - " 3
5 DATA 4 - " 4
6 DATA 5 - " 5
7 DATA 6 - " 6
8 DATA 7 - " 7
9 DATA 8 - " 8
10 ACKNLG - Принято (НИЗКИЙ показывает что данные считаны устройством)
11 BUSY - Занято (ВЫСКОЙ в следующих случаях:
(a) прием данных
(b) печать
(c) принтер офф-лайн
(d) ошибка принтера)
12 PE - Нет бумаги (ВЫСОКИЙ если в принтере не бумаги)
13 SLCT - Выбор (ВЫСОКИЙ если принтер выбран)
14 AUTO FEED XT - Авто-перевод строки (НИЗКИЙ показывает принтер будет автоматически переводить строку
после знака "возврат каретки". Зависит от установки DIP переключателей принтера.
15 n.c.
16 0V - Логичексая земля
17 CHASSIS GND - Шасси (земля)
18 n.c.
19-30 GND - Сигнальная земля (оплетки жил от контактов 1-12)
31 INIT - Инициализация (НИЗКИЙ импульс для сброса принтера)
32 ERROR - Ошибка (НИЗКИЙ если:
(a) кончилась бумага
(b) устройство офф-лайн
(c) состояние ошибки)
33 GND - Сигнальная земля
34 n.c.
35 LOGIC 1 - Логический ВЫСОКИЙ (обычно от источника +5 В через 3.3 кОм)
36 SLCT IN - Разрешение ввода (данные вводятся в принтер только если на линии НИЗКИЙ,
однако зависит от установки DIP переключателей)