Паралельний порт персонального комп’ютера є одним з ранніх апаратно програмних інтерфейсів, спочатку розроблених для обміну даними з друкуючими пристроями (принтерами). В даний час паралельний порт, крім свого прямого призначення, досить часто використовується в різноманітних проектах для управління нескладний ними апаратними пристроями, а також для обробки та збору даних.

Паралельний порт дозволяє приймати 9 біт даних від пристрою або відправляти

12 біт даних пристрою. Апаратно інтерфейс реалізований за допомогою 4 х ліній управління ня, 5 ти ліній стану і 8 ми ліній даних, які підключені до 25 контактного роз’єму типу DB 25, розташованому на задній стінці комп’ютера.

Найпершим стандартом паралельного порту став інтерфейс, відомий під назва ням Centronics. Він описує сигнали, протокол обміну і розташування зовнішніх контак тів на роз’ємах в комп’ютері і принтері. З точки зору схемотехніки, інтерфейс Centronics реалізований як група з трьох регістрів введення виведення: даних, управління та стани, які доступні програмісту.

У таблиці 3.1 наведений опис сигналів інтерфейсу, нумерація висновків на роз’ем ме DB 25 в комп’ютері і напрям сигналів по відношенню до паралельного порту ком пьютера.

Зазначена специфікація сигналів, відповідна інтерфейсу Centronics, була стан дартізована під назвою SPP (Standard Parallel Port). Надалі специфікації режі мов обміну даними отримали подальший розвиток в протоколах EPP (Enhanced Parallel Port) і ECP (Extended Capabilities Port), які були розроблені і прийняті під егідою стан стандарту IEEE 1284, забезпечуючи зворотний сумісність зі стандартним режимом SPP.

Проаналізуємо спрощену тимчасову діаграму обміну для паралельного порту, працюючого в стандартному режимі SPP або, простіше кажучи, Centronics. Перед аналізом ра боти інтерфейсу слід зазначити, що при обміні даними між пристроями одне з них є ініціатором (джерелом) обміну, а інше – приймачем.

Для стандартного інтерфейсу SPP джерелом обміну є зазвичай комп’ютер, або, по-іншому, хост, а приймачем – принтер або інший пристрій. Тимчасова діаграма про мена по протоколу SPP показана на рис. 3.1.

Розглянемо приклад передачі байта даних від джерела до приймача. Передача виконан

вується в наступній послідовності:

спочатку перевіряється стан сигналу BUSY: якщо він дорівнює 0, то джерело нападу

ет до передачі байта даних, виставляючи на лініях D0-D7 біти даних, після чого

Таблиця 3.1

Рис. 3.1

Обмін даними по протоколу SPP

встановлює сигнал STROBE в низький рівень, вказуючи на те, що дані на лини

ях D0-D7 дійсні;

приймач читає байт із шини даних D0-D7, встановлюючи сигнал BUSY у високий рівень. Після закінчення обробки даних приймач встановлює сигнал ACK в низ кий рівень, підтверджуючи закінчення обробки, і знімає сигнал BUSY. Якщо в тече ние певного інтервалу часу (як правило, це 5 мікросекунд) сигнал ACK не буде встановлений, то джерело вважає, що сталася помилка тайм ауту зі сторо ни приймача. У більшості промислових розробок цей сигнал з метою еконо мії часу ігнорується.

Крім того, якщо після прийому чергового байта приймач поки не готовий приймати сле

дме байт даних, то він залишає сигнал BUSY в активному стані.

Спочатку паралельний порт персонального комп’ютера був реалізований як окремих ное пристрій, але в даний час схемотехніка порту інтегрована в материнську плату комп’ютера. Нагадаю, що базова програмна модель паралельного порту включа ет три регістра: даних, стану та управління.

Базовим адресою паралельного порту є адреса регістра даних, стосовно якого обчислюються інші адреси.

Наприклад, якщо базова адреса порту дорівнює деякому значенню Base, то регістр дан

них буде мати адресу Base, регістр стану – Base +1 і регістр управління – Base +2.

В якості базових адрес регістрів найчастіше використовуються адреси (в шістнадцяти ричной нотації) 0x3BC, 0x378, 0x278, які зазвичай прошиваються в BIOS материнської плати. Ці адреси, як і режим роботи порту, можна змінити, встановивши відповідні налаштування в BIOS.

Драйвер паралельного порту для обробки даних може використовувати апаратне переривання; як правило, це лінія IRQ7 або IRQ9 контролера переривань. Базова адреса

0x3BC використовувався в більш ранніх моделях комбінованих відеокарт, а в даний час нерідко використовується як варіант вибору для інтегрованого на материнській пла ті паралельного порту. В операційних системах Windows і Linux паралельним портам присвоюються символічні імена в вигляді «LPTn», де n – номер порта (1, 2 і т. д.), причому

«LPT1» зазвичай присвоюється порту з базовою адресою 0x378, а «LPT2» – порту з базовою адресою 0x278h, як показано в таблиці 3.2.

Таблиця 3.2

Базові адреси паралельного порту

При включенні комп’ютера BIOS спочатку виконує перевірку за адресою 0x3BC, і якщо виявляє, що він належить паралельного порту, то привласнює порту ім’я

«LPT1». Далі виконується перевірка адрес 0x378 і 0x278; і якщо адреси виявлені, їм ставляться відповідно імена «LPT2» і «LPT3». Оскільки в більшості сучасних мате ринських плат адресу 0x3BC для паралельного порту не використовується, то базовою адресою

«LPT1» встановлюється 0x378, а базовою адресою «LPT2» – 0x278.

Паралельні порти сучасних комп’ютерів можуть працювати в різних режимах, по

цьому в більшості версій BIOS передбачена установка наступних режимів:

Printer (іноді цей режим називається Default або Normal);

    Standard & Bi directional (SPP);

EPP1.7 і SPP;

EPP1.9 і SPP;

    ECP;

ECP і EPP1.7;

ECP і EPP1.9.

Наведемо їх короткий опис:

Printer – це назва базового режиму, відповідного стандарту SPP. В даному

режимі паралельний порт працює тільки як односпрямований, тому біт

5 го регістру управління в цій конфігурації не задіяний;

Standard & Bidirectional – порт працює як двонаправлений. В цьому режимі біт

5 го регістру управління дозволяє встановлювати двосторонній обмін даними, що дозволяє джерела прочитати біти на лініях даних;

EPP1.7 і SPP – цей режим являє собою комбінацію режимів EPP 1.7 і SPP.

В цьому випадку доступні як стандартні регістри режиму SPP (даних, стану і управління), так і EPP регістри. Напрямок передачі сигналів порту можна ме нять, використовуючи біт 5 го регістру управління. Стандарт EPP 1.7 є більш ран ній версією EPP, тому в ньому не передбачений біт тайм ауту;

EPP1.9 and SPP – цей режим нагадує попередній, з тією лише різницею, що використовується версія EPP 1.9.

Інтерфейс Centronics завдяки його простоті можна успішно використовувати в влас них розробках пристроїв введення виведення або лабораторних системах управління устатку ванням.

Слід зазначити, що пряме програмування портів введення висновку за допомогою до манд асемблера можливо тільки в операційних системах Windows 98/Me, але неможливо можна в захищених системах Windows 2000/XP/2003. Тим не менш, навіть в таких систе мах можна отримати доступ до апаратних ресурсів паралельного порту, якщо використовувати вільно поширюваний драйвер PortTalk (один із сайтів, звідки його можна скачати, www.beyondlogic.org). Цей драйвер нескладний у застосуванні, і ми будемо його застосовувати при розробці проектів цієї глави.

При розробці власних проектів з використанням паралельного порту вам не

необхідно враховувати наступні фактори:

адреси базових регістрів паралельного порту на вашій машині можуть відрізнятися від використовуваних в прикладах цієї глави, тому потрібно їх додатково перевірити і встановити коректні значення у вихідному тексті програми;

виходи паралельного порту є слабкострумовими, що допускають підключення навантаження зі споживанням струму всього в декілька міліампер, тому безпосередній але до них не можна підключати електричні ланцюга, що споживають значний струм!

У всіх прикладах цього розділу базовою адресою паралельного порту є стан дротяні за замовчуванням адреса в BIOS, що дорівнює 0x378, тому якщо ви використовуєте в проек тах іншу адресу, то внесіть відповідні зміни в тексти програм, де це необ ходимо!

Джерело: Магда Ю. С. Комп’ютер в домашній лабораторії. – М.: ДМК Пресс, 2008. – 200 с.: Іл.