Системная поддержка принтера
Вывод на принтер через порт LPT в стандартном режиме (SPP) по интерфейсу Centronics имеет поддержку на уровне BIOS. Поддержка всех других режимов работы порта (Fast Centronics, ECP) осуществляется только дополнительными драйверами или средствами ОС. Сервисы BIOS Int 17h: обеспечивают инициализацию, вывод байта данных и опрос состояния принтера. При вызове функция задается в регистре АН, номер LPT-порта — врегистре DX.
§ АН = 00h — вывод байта из регистра AL по протоколу Centronics (без аппаратных прерываний). Данные помещаются в выходной регистр, и, дождавшись готовности принтера (снятия сигнала Busy), формируется строб.
§ АН = 01h — инициализация интерфейса и принтера (установка исходных уровней управляющих сигналов, формирование импульса Init#, запрет аппаратных прерываний и переключение на вывод двунаправленного интерфейса)
§ АН = 02h – опрос состояния принтера (чтение регистра состояния порта)
При возврате регистр АН содержит байт состояния, который собирается из бит регистра состояния SR[7:3] и программно формируемого флага тайм-аута. Биты 6 и 3 относительно байта, считанного из регистра состояния, инвертированы. Назначение бит байта состояния:
§ бит 7 — не занято (сигнал Busy); нулевое значение означает, что принтер занят (буфер полон или состояние Off-Line или ошибка);
§ бит 6 — подтверждение (сигнал Аск#); единичное значение означает, что принтер подключен;
§ бит 5 — конец бумаги (сигнал PaperEnd);
§ бит 4 — принтер готов (сигнал Select); нулевое значение означает, что принтер в состоянии Off-Line;
§ бит 3 — ошибка принтера (сигнал Error#); единичное значение соответствует ошибке;
§ биты 2:1=00 (не используются);
бит 0 — флаг тайм-аута, устанавливается при неудачной попытке вывода символа, если сигнал Busy не снимается в течение времени, определенного для данного порта в ячейках тайм-аута (в BIOS Data Area); в этом случае согласно протоколу Centronics строб данных не вырабатывается
Печать содержимого экрана (Print Screen) поддерживается прерыванием BIOS Int 05. Обработчик этого прерывания посимвольно выводит содержимое видео-памяти (в текстовом режиме) на порт LPT1. Обработчик пользуется ячейкой; 0050:0000 для отражения своего текущего состояния: 00 — неактивен, 01 — выполняется
печать, FF — во время последнего вызова произошла ошибка ввода вывода. Прерывание Int 05 вызывается обработчиком аппаратного прерывания от клавиатуры (Int 09), когда обнаруживается нажатие клавиши Print Screen (PrtSc)
Порт параллельного интерфейса был введен в PC для подключения принтера -отсюда и пошло его название LPT-порт (Line PrinTer — построчный принтер). Хотя через этот же порт подключается и большинство лазерных принтеров, которые по принципу действия не построчные, а постраничные, название «LPT» закрепилось основательно. Аппаратные средства «классического» стандартного LPT-порта позволяют программным способом реализовать протокол передачи данных Centronics (см. выше). Адаптер параллельного интерфейса представляет собой набор регистров, расположенных в пространстве ввода-вывода. Регистры порта адресуются относительно базового адреса порта, стандартными значениями которого являются 3BCh, 378h и 278h. Порт может использовать линию запроса аппаратного прерывания, обычно IRQ7 или IRQ5. С внешней стороны порт имеет 8-битную шину данных, 5-битную шину сигналов состояния и 4-битную шину управляющих сигналов, выведенные на разъем-розетку DB-25S. В LPT-пopт используются логические уровни ТТЛ, что ограничивает допустимую длину кабеля из-за невысокой помехозащищенности ТТЛ-интерфейса. Гальваническая развязка отсутствует — схемная земля подключаемого устройства соединяется со схемной землей компьютера.
Порт имеет поддержку на уровне BIOS — поиск установленных портов во время теста POST и сервисы печати Int 17h (см. п. 9.3.9) обеспечивает вывод символа (по опросу готовности без аппаратных прерываний), инициализацию интерфейса и принтера, а также опрос состояния принтера. Стандартный порт ориентирован на вывод данных, хотя с некоторыми ограничениями позволяет вводить данные. Существуют различные модификации LPT-порта — двунаправленный, ЕРР, ЕСР и др., расширяющие его функциональные возможности, повышающие производительность и снижающие нагрузку на процессор. Поначалу они являлись фирменными решениями отдельных производителей, позднее был принят стандарт IEEE 1284.
К LPT-портам подключают принтеры, плоттеры, сканеры, коммуникационные устройства и устройства хранения данных, а также электронные ключи. Иногда параллельный интерфейс используют для связи между двумя компьютерами —
получается сеть, «сделанная на коленке» (LapLink).
Практически все современные системные платы (еще начиная с PCI-плат для процессоров 486) имеют встроенный адаптер LPT-порта. Существуют карты ISA с LPT-портом, где он чаще всего соседствует с парой СОМ-портов, а также с контроллерами дисковых интерфейсов (FDC+IDE). LPT-порт обычно присутствует и на плате дисплейного адаптера MDA (монохромный текстовый) и HGC монохромный графический «Геркулес»). Есть и карты PCI с LPT-портами, но их применение может вызывать некоторые затруднения из-за их «чрезмерной интеллектуальности».
В спецификации РС'99 порт LPT пока еще разрешен для использования. Устройства,
подключаемые к LPT-порту, рекомендуется переводить на последовательные
шины USB и Fire Wire.
Адаптер LPT-порта SPP содержит три 8-битных регистра, расположенных по соседним адресам в пространстве ввода-вывода, начиная с базового адреса порта BASE (3BCh, 378h или 278h).
Data Register (DR) — регистр данных, aдpec=BASE. Данные, записанные в этот регистр, выводятся на выходные линии интерфейса. Данные, считанные из этого регистра, в зависимости от схемотехники адаптера соответствуют либо ранее записанным данным, либо сигнала на тех же линиях, что не всегда одно и то же. Если в порт записать байт с единицами во всех разрядах, а на выходные линии интерфейса через микросхемы с выходом типа «открытый коллектор» подать какой-либо код (или соединить ключами какие-то линии со схемной землей), то этот код может быть считан из того же регистра данных. Таким образом на многих старых моделях адаптеров можно реализовать порт ввода дискретных сигналов, однако выходным цепям передатчика информации придется «бороться» с выходным током логической единицы выходных буферов адаптера. Схемотехника ТТЛ такие решения не запрещает, но если внешнее устройство выполнено на микросхемах КМОП, их мощности может; не хватить для «победы» в этом шинном конфликте. Однако современные адаптеры часто имеют в выходной цепи согласующий резистор с сопротивлением до 50 Ом. Выходной ток короткого замыкания выхода на землю обычно не превышает 30 мА. Простой расчет показывает, что в случае короткого замыкания контакта разъема на землю при выводе «единицы» на этом резисторе падает напряжение 1,5 В, что входной схемой приемника
будет воспринято как «единица». Так что такой способ ввода будет работать не на всех компьютерах. На некоторых старых адаптерах портов выходной буфер отключается перемычкой на плате. Тогда порт превращается в обыкновенный порт ввода.
Status Register (SR) — регистр состояния; представляет собой 5-битный порт ввода сигналов состояния принтера (биты SR.4-SR.7), адрес=ВАSЕ+1. Бит SR.7 инвертируется — низкому уровню сигнала соответствует единичное значение бита в регистре, и наоборот.
Ниже показано назначение бит регистра состояния (в скобках даны номера контактов разъема порта).
Control Register (CR) — регистр управления, адрес=ВАSЕ+2. Как и регистр данных, этот 4-битный порт вывода допускает запись и чтение (биты 0-3), но его выходной буфер обычно имеет тип «открытый коллектор». Это позволяет корректно использовать линии данного регистра как входные при программировали их в высокий уровень.
Запрос аппаратного прерывания (обычно IRQ7 или IRQ5) 'вырабатывается по отрицательному перепаду сигнала на выводе 10 разъема интерфейса (Аск#) при установке CR.4=1. Во избежание ложных прерываний контакт 10 соединен резистором с шиной +5 В. Прерывание вырабатывается, когда принтер подтверждает прием предыдущего байта. Как уже было сказано, BIOS это прерывание не использует и не обслуживает
Стандартный порт асимметричен — при наличии 12 линий (и бит), нормально работающих на вывод, на ввод работает только 5 линий состояния. Если необходима симметричная двунаправленная связь, на всех стандартных портах работоспособен режим полубайтного обмена — Nibble Mode. В этом режиме, называемым также Hewlett Packard Bi-hvnics, по линиям состояния одновременно при нимаются 4 бита данных, пятая линия используется для квитирования. Таким образом, каждый байт передается за два цикла, а каждый цикл требует по крайней ней мере 5 операций ввода-вывода.
Дата добавления: 2015-08-11; просмотров: 902;