Смекни!
smekni.com

Диагностика портов ЭВМ (стр. 2 из 2)

Рис. 2. Представление кода буквы А сигнальными уровнями ТТЛ.

Таким образом, полное асинхронно передаваемое слово состоит из 11 бит (фактически данные содержат только 7 бит) и записывается в виде 01000001011.

Используемые в интерфейсе RS–232C уровни сигналов отличаются от уровней сигналов, действующих в компьютере. Логический 0 (SPACE) представляется положительным напряжением в диапазоне от +3 до +25 В, логическая 1 (MARK) — отрицательным напряжением в диапазоне от –3 до –25 В. На рис. 3 показан сигнал в том виде, в каком он существует на линиях TXD и RXD интерфейса RS–232C.

Рис. 3. Вид кода буквы А на сигнальных линиях TXD и RXD.

Сдвиг уровня, т.е. преобразование ТТЛ–уровней в уровни интерфейса RS–232C и наоборот производится специальными микросхемами драйвера линии и приемника линии.

На рис. 4 представлен типичный микрокомпьютерный интерфейс RS–232C. Программируемая микросхема DD1 последовательного ввода осуществляет параллельно–последовательные и последовательно–параллельные преобразования данных. Микросхемы DD2 и DD3 производят сдвиг уровней для трех выходных сигналов TXD, RTS, DTR, а микросхема DD4 — для трех входных сигналов RXD, CTS, DSR. Микросхемы DD2 и DD3 требуют напряжения питания ±12 В.

Рис. 4. Типичная схема интерфейса RS–232C.

Параллельный порт

Устройство печати IBMPC-подобных компьютеров обычно подключается к параллельному интерфейсу. Для подключения используется стандартный разъем Centronix, имеющий 36 контактных выходов (отечественный аналог ИРПР-М). Допускается три варианта подключения принтеров к ПЭВМ:

- адаптер принтера может находится на одной плате с адаптером монохромного дисплея, при этом используются порты 3BCh - 3BEh;

- к ПЭВМ могут подключены два отдельных адаптера для управления принтерами, использующие порты 378h - 37Ah (первый адаптер) и 278h - 27Ah (второй адаптер).

При программировании принтера важно знать адрес базового порта ввода-вывода (первого порта из трех); адреса базовых портов хранятся в области данных BIOS, начиная с адреса 0:408h (LPT1) и далее по слову на принтер до LPT4. Дальнейшее описание предполагает, что базовый адрес принтера равен 378h.

Порт Операция Описание

----------------------------------------------------------------

378h Запись Регистр данных - сюда засылается байт, посылаемый на печать

Чтение Регистр данных - позволяет считать последний переданный в принтер байт

379h Чтение Регистр состояния принтера:

7 6 5 4 3 2 1 0

+--------------------+

¦ ¦ ¦ ¦ ¦ ¦X¦X¦X¦ Биты:

+--------------------+ -----

¦ ¦ ¦ ¦ +---------> 3: 0=при печати возникла ошибка

¦ ¦ ¦ +------------> 4: 0=принтер в автономном режиме

¦ ¦ +---------------> 5: 1=сигнал "конец бумаги"

¦ +------------------> 6: 0=принтер готов к печати

¦ следующего символа

+---------------------> 7: 0=принтер занят, находится в

автономном режиме или

произошла ошибка

37Ah Чтение/ Регистр управления принтером:

Запись

7 6 5 4 3 2 1 0

+--------------------+

¦X¦X¦X¦ ¦ ¦ ¦ ¦ ¦ Биты:

+--------------------+ -----

¦ ¦ ¦ ¦ +---> 0: бит запуска печати (см. ниже)

¦ ¦ ¦ +------> 1: 1=после возврата каретки выводить

¦ ¦ ¦ перевод строки (в MS-DOS должен

¦ ¦ ¦ быть сброшен)

¦ ¦ +---------> 2: 1=инициализировать принтер

¦ +------------> 3: 1=разрешить вывод на печать (должен

¦ быть всегда установлен)

+---------------> 4: 1=разрешить прерывания от принтера

Примечания.

1. Для запуска печати символа нужно на короткое время установить бит 0 регистра управления, а затем сбросить его.

2. Прерывание происходит по окончании вывода символа на печать: для первого принтера на седьмом уровне контроллера прерываний (IRQ7, вектор прерывания 0Fh), для второго принтера - на пятом уровне (IRQ5, вектор 0Dh). Следует отметить также, что IRQ5 используется XT-контроллером жестких дисков для генерации своих прерываний. Обычно этот бит не используется (сбрасывается), а проверка готовности принтера производится на основании опроса регистра состояния.

Типичная последовательность действий для вывода на печать одного символа такова:

- вывести передаваемый байт в регистр данных;

- в цикле проверять состояние принтера до устaновки бита 7 регистра состояния (здесь возможно использование таймаута);

- проверить биты 3-5 регистра состояния на наличие ошибки;

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

movdx,37Ah ;адрес регистра управления

moval,00001101b ;установить биты 0,2 и 3

outdx,al ;вывести команду

xoral,1 ;сбросить бит 0

outdx,al ;повторно вывести команду

- далее можно прочитать и запрограммировать регистр состояния и перейти к печати следуюего символа.

Несмотря на простоту управления, принтер представляет из себя достаточно сложное устройство, имеющее свой микропроцессор,

ПЗУ и ОЗУ. Микропроцессор используется для обработки управляющих

последовательностей и управления печатью. ПЗУ содержит описание рисунков символов в зависимости от их кода и выбранной таблицы и программы на языке используемого микропроцессора. ОЗУ используется для временного хранения введенных данных и спроектированных пользователем символов. Ряд принтеров, помимо интерфейса Centronix, могут поключаться и к последовательному интерфейсу. Принтер обрабатывает ряд спецсимволов (таких, как звонок, забой, горизонтальная и вертикальная табуляция), а также имеет достаточно сложную систему команд для изменения режимов работы и управления печатью.

Обычно команды начинаются с символа ESC (шестнадцатиричный код 1Bh) и имеют длину от двух байт и более (существуют командные последовательности, включающие по несколько килобайт информации, например команды загрузки спроектированных пользователем шрифтов). Спецсимволы и байты команд передаются принтеру так же, как и обычные символы, предназначеные для печати, описанным выше способом. Подобный способ управления удобен для программного изменения режимов работы устройства. Учитывая, что выпуском принтеров для ПЭВМ занимается достаточно большое число компаний и возможности принтеров постоянно совершенствуются, нет смысла приводить полностью какую-либо систему команд, так как, во-первых, она в разных марках и моделях принтеров различна, и, во-вторых, достаточно полно описывается в документации на каждый конкретный принтер.

Существует 2 основных стандарта на систему команд и таблицу используемых символов (стандарты IBM и EPSON), которых в основном придерживаются фирмы-изготовители, оставляя за собой право вносить в них изменения и дополнения. Единого стандарта как на систему команд, так и на расположение и рисунки символов второй половины таблицы ASCII (коды 129-255) нет. Наиболее часто используемые команды:

- установка вида шрифта и режима печати;

- черновой текстовый (draft) нормальной ширины (pica), узкий (condensed) или средней ширины (elita).

- качественный шрифт (NLQ, Proportional, Orator, Script и т. д.);

-выбор таблицы символов из ПЗУ (обычно имеется несколько таблиц, отличающихся расположением управляющих кодов, наличием и расположением псевдографических символов или курсива);

- загрузка в ОЗУ принтера спроектированных пользователем шрифтов и работа с ОЗУ принтера (именно в этой группе команд, имеются наибольшие различия между разными моделями);

- управление принтером в режиме точечной графики;

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

Ряд характеристик и режимов работы может выбираться как программно, так и аппаратно с использованием кнопок и клавиш на лицевой панели и DIP-переключателей. Существуют характеристики, изменить которые можно только аппаратно (например, возможность загрузки шрифтов или размер используемого ОЗУ).