Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорная техника.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
6 Мб
Скачать
☆

Подключение устройств к порту принтера.

Centronics – интерфейс.

ИРПР-М – русский аналог.

Сигналы управления:

D0 – D7 – данные.

- сигнал стробирования данных.

BUSY – занятость принтера.

- готовность принтера.

Сигналы:

- автоподача (посылает компьютер), переводится строка.

РЕ – конец бумаги.

SLCT – готовность принтера.

- могут передаваться данные (подает компьютер).

- сброс принтера.

Для подключения принтера используется стандартный разъем:

Контакт разъема ПК.

Цепь

I/O

1

0

2

D0

0

3

D1

0

9

D8

0

10

I

11

BUSY

I

12

PE

I

13

SLCT

I

14

0

15

ERROR

I

16

0

17

0

18…25

GND

-

Сигналы – ТТЛ уровня.

Нагрузочная способность ≤ 2 мА.

Длинна кабеля ≤ 2 метра.

Порты:

LPT1 – 378Н

LPT2

LPT3

Каждый характеризуется базовым адресом.

Базовый адрес +1 – это регистр состояния (порт ввода).

Базовый адрес +2 – регистр управления (порт вывода).

Достоинства Centronics:

  1. не нужно вскрывать компьютер и подключатся к шине.

  2. высокая скорость передачи (100 кбайт/сек).

Недостатки:

  1. сигналов управления мало (ограничена сложность ВУ).

  2. небольшая длина соединительного кабеля.

  3. отсутствует источник питания.

Регистр данных (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

0

0

0

0

0

1

1

1

1