Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Аппаратное обеспечение персонального компьютера

© Александр Фролов, Григорий Фролов
Том 33, М.: Диалог-МИФИ, 1997, 304 стр.

[Назад] [Содеожание] [Дальше]

7 Параллельный адаптер

Следующее очень распространенное периферийное устройстов, которое мы рассмотрим в нашей книге, это параллельный адаптер. Такой адаптер есть практически в любом компьютере и обычно применяется для подключения принтера. Только в некоторых моделях блокнотных компьютеров, где принтер подключается через асинхронный последовательный адаптер, отсутствует параллельный адаптер.

Базовая система ввода/вывода BIOS может работать с тремя параллельными адапетрами. В процессе тестирования и инициализации системы BIOS находит работоспособные адаптеры и записывает их базовые адреса в таблицу. Таблица базовых адресов располагается в области данных BIOS по адресу 0000:0408h и может содержать следующие значения:

·          378h – параллельный адаптер LPT1;

·          278h – параллельный адаптер LPT2;

·          3BCh – параллельный адаптер на плате адаптера монохромного дисплея (сейчас это уже редкость).

Параллельные адаптеры могут вырабатывать запросы на прерывание:

·          LPT1 - IRQ7, INT 0Fh;

·          LPT2 - IRQ5, INT 0Dh

Порты параллельного адаптера

Каждый параллельный адаптер обслуживается несколькими портами ввода/вывода.

Обычно программа редко работает с параллельным адапетром на уровне портов ввода/вывода, так как достаточно использовать предназначенные для этого функции BIOS или MS-DOS. Однако сведения о портах может пригодиться вам для разработки собственного драйвера принтера или программы, обслуживающей какое-либо устройство, подлкюченное к параллельному адапетру, например, аналого-цифрового преобразователь.

Порт 378h

Этот порт, доступный как для записи, так и для чтения, предназначен для вывода данных. Программа может прочитать байт, только что записанный в порт 378h.

Порт 37Ah

Порт обычно применяется для управления принтером, подключенным к параллельному адаптеру. Он доступен для чтения и записи. Ниже мы привели описание отдельных разрядов этого порта:

Поле

Описание

0

STROBE

Cтроб данных, принимает значение 1 при выводе байта, подключен к 1 контакту разъема параллельного адаптера

1

AUTO LineFeed

Автоматический перевод строки после символа возврата каретки CR, контакт 14

2

INIT

Сброс принтера, активный уровень - 0, контакт 16

3

SLCT IN

Выбор принтера для работы, контакт 17

4

IRQ Enable

Разрешение прерывания от принтера. Если прерывания от принтера разрешены, они вырабатываются когда сигнал готовности принтера ACK (контакт 10) принимает уровень логического 0

5-7

Равно 0

Порт 379h

Порт состояния принтера, доступен только для чтения:

Поле

Описание

0-2

Равно 0

3

ERROR

Сигнал ошибки, активный уровень - 0, контакт 15

4

SLCT

Принтер выбран, контакт 13

5

PE

Конец бумаги, контакт 12

6

ACK

Готовность принтера, активный уровень - 0, контакт 10

7

BUSY

0 - принтер занят, находится в состоянии offline или произошла ошибка, контакт 11

Разъем параллельного адаптера

Для тех, кто будет использовать параллельный адаптер для подключения аппаратуры, приведем таблицу назначения контактов разъемов этого адаптера , а также соответствующих контактов разъема принтера:

Контакт разъема адаптера

Контакт разъема принтера

Назначение

Вход или выход

1

1

STROBE

Строб

Выход, инверсия

2

2

Данные, бит 0

Выход

3

3

Данные, бит 1

Выход

4

4

Данные, бит 2

Выход

5

5

Данные, бит 3

Выход

6

6

Данные, бит 4

Выход

7

7

Данные, бит 5

Выход

8

8

Данные, бит 6

Выход

9

9

Данные, бит 7

Выход

10

10

ACK

Подтверждение

Вход, инверсия

11

11

BUSY

Занятость

Вход

12

12

PE

Конец бумаги

Вход

13

13

SLCT

Выбор

Вход

14

14

Auto Line Feed

Авт. перевод строки

Выход, инверсия

15

32

ERROR

Ошибка

Вход, инверсия

16

31

INIT

Сброс принтера

Выход, инверсия

17

36

SLCT IN

Принтер выбран

Выход, инверсия

18-25

16,17, 19-30,33

Земля

-

Для сигналов, отмеченных в таблице словом "инверсия", используется уровень логического нуля в активном состоянии сигнала.

Используя параллельный адаптер для управления внешними устройствами, будьте осторожны и выполняйте все правила заземления устройств. Если ваш устройство не заземлено или заземлено неправильно, параллельный адаптер может выйти из строя (и когда-нибудь он обязательно сделает это).

Следует также учитывать, что нагрузка на выходную линию параллельного адаптера не должна превышать одного входа TTL (то есть к одному выходу адаптера вы можете подключить не более одного входа микросхемы серии 155).

Вывод байта на принтер через параллельный адаптер

Для того, чтобы вывести символ на принтер, программа вначале должна убедится, что уровень сигнала на линии BUSY (бит 7 порта 379h) равен 0, а уровень сигнала на линии ACK (бит 6 порта 379h) - единице. После этого следует установить код выходного символа на линиях DATA (порт 378h).

Затем не ранее, чем через 0,5 мкс линию STROBE (бит 0 порта 37Ah) необходимо перевести в состояние логического 0. При этом выходной символ запишется во внутренний буфер принтера. Уровень логического нуля необходимо удерживать в течение как минимум 0,5 мкс. Это время нужно для того, чтобы символ записался в буфер принтера. После истечения интервала времени линию STROBE нужно опять перевести в состояние логической единицы.

После того, как программа установит линию STROBE в состояние логического нуля, выходная линия принтера BUSY устаналвивается в единицу, сигнализируя о том, что принтер занять обработкой полученного символа и временно не может принимать другие символы.

Когда принтер полность обработает выведенный символ, линия ACK перейдет в состояние 0. Приблизительно через 5 мкс после этого линия BUSY также перейдет в состояние 0.

Еще через 5 мкс линия ACK примет состояние 1. Теперь принтер готов принят следующий байт данных.

[Назад] [Содеожание] [Дальше]