Centronics – интерфейс.
ИРПР-М – русский аналог.
Сигналы управления:
D0 – D7 – данные.
- сигнал стробирования данных.
BUSY – занятость принтера.
- готовность принтера.
Сигналы:
- автоподача (посылает компьютер), переводится строка.
РЕ – конец бумаги.
SLCT – готовность принтера.
- могут передаваться данные (подает компьютер).
- сброс принтера.
Для подключения принтера используется стандартный разъем:
Контакт разъема ПК.
| Цепь
| I/O
|
|
|
|
| D0
|
|
| D1
|
|
M
| M
| M
|
| D8
|
|
|
| I
|
| BUSY
| I
|
| PE
| I
|
| SLCT
| I
|
|
|
|
| ERROR
| I
|
|
|
|
|
|
|
18…25
| GND
| -
|
Сигналы – ТТЛ уровня.
Нагрузочная способность ≤ 2 мА.
Длинна кабеля ≤ 2 метра.
Порты:
LPT1 – 378Н
LPT2
LPT3
Каждый характеризуется базовым адресом.
Базовый адрес +1 – это регистр состояния (порт ввода).
Базовый адрес +2 – регистр управления (порт вывода).
Достоинства Centronics:
- не нужно вскрывать компьютер и подключатся к шине.
- высокая скорость передачи (100 кбайт/сек).
Недостатки:
- сигналов управления мало (ограничена сложность ВУ).
- небольшая длина соединительного кабеля.
- отсутствует источник питания.
Регистр данных (BASE)
| D7
| D6
| D5
| D4
| D3
| D2
| D1
| D0
|
| Порт вывода
|
Регистр состояния (BASE+1)
| BUSY
| ACKNLG
| PE
| SLCT
| ERROR
| -
| -
| -
|
| ¯
| Порт ввода
|
| Инверсный, остальные прямые.
|
Регистр управления (BASE+2)
| -
| -
| -
| -
| SLCT IN
| INIT
| AUTO FD
| STROBE
|
|
|
|
|
|
| ¯
|
|
|
| Прямой, остальные инверсные.
|
Набор лампочек и кнопок: 8 светодиодов и 8 переключателей.
- на выходе регистра шум и VD погаснут (INIT = 0 – гашение VD0).
С = 1 – разрешается запись данных в регистр (STROBE = 1 – запись разрешена).
С = 0 – защелкивание (запоминание информации, STROBE =0).
При S = 0 – работает верхняя секция, то есть Y=A.
S = 1 – Y = B.
SLCT IN – переключает секции мультиплексора.
# include <stdio.h>
# include <dos.h>
# include <conio.h>
# define BASE 0x378
# define STROBE 0x01
# define INIT 0x04
# define SLCT_IN 0x08
# define MASK 0x0F
void control_drv (unsigned char control)
{
outportb (BASE+2, control^0x0B);
} //драйвер вывода.
//драйвер ввода из регистра состоит:
unsigned char status_drv ( )
{
return ((inportb (BASE+1)>>3)^0x10);
}
//функция вывода в регистр светодиодов
void write_VD (unsigned char data)
{
outportb (BASE, data); //вывод данных
control_drv (STROBE\INIT); //строб С=1
control_drv (INIT); //строб С=0
}
//функция чтения состояния переключателя
unsigned char read_SA ( )
{
unsigned char data;
data = status_drv ( )&MASK;
//чтение младшей тетрады SA0…SA3
control_drv (SLCT_IN | INIT); //выбор SA4…SA7
data+=(status_drv&MASK)<<4;
return data;
}
main ( )
{
control_drv (0); //гашение светодиодов
control_drv (INIT); //разрешить прием данных
while (!kbhit ( ))
write_VD (read_sa ( ));
return 0;
}
INIT
| AUTO FD
| STROBE
|
|
|
|
|
|
|
|
|
|
M
| M
| M
| M
|
|
|
|
|