Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
НЕ_1.2.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
219 Кб
Скачать
☆

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

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

Зазвичай програма рідко працює з паралельним адаптером на рівні портів вводу/виводу, так як достатньо використовувати спеціальні призначені для цього функції 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

Функції bios для роботи з принтером

В BIOS є ряд функцій, призначених для роботи з принтером, підключеним через паралельний адаптер. Це функції 00h, 01h, 02h переривання INT 17h.

Друк символу

Функція 00h призначена для друку одного символу

Регістри на вході:

AH = 00h;

AL = код ASCII символу, який потрібно надрукувати;

DX = номер паралельного адаптера: 0 – LPT1, 1 – LPT2, 2 – LPT3

Регістри на виході:

AH = слово стану принтера

Ця функція виводить на принтер один символ, заданий в регістрі AL. В регістрі DX необхідно записати номер використовуваного паралельного адаптера. Для адаптера LPT1 це 0, для LPT2 - 1 і так далі.

Після виконання переривання регістр AH буде містити слово стану, що має наступний формат:

Поле

Опис

0

Минув час очікування при виконанні операції друку, можливо, що принтер несправний

1-2

Не використовуються

3

Помилка вводу/виводу

4

1 - принтер вибрано для роботи;

0 - принтер знаходить в стані offline

5

Кінець паперу

6

Підтвердження

7

1 - принтер готовий до роботи;

0 - принтер зайнятий

Викликавши функцію 00h переривання INT 17h, програма повинна провірити біти слова стану і переконатися в тому, що вивід байту пройшов без помилок. Користувач часто забуває перевести принтер в стан online, вставити папір, чи взагалі включити принтер. В цьому випадку доцільно нагадати користувачу про необхідність виконання цих дій і потім повторити спробу друку.

Якщо принтер несправний, програма повинна надати користувачу можливість відмінити друк.

Потрібно звернути увагу на біт 1 байту стану. Якщо принтер знаходиться в режимі offline, функція 00h переривання INT 17h очікує деякий час готовності принтера, після чого, якщо принтер так і не перейшов в стан готовності, встановлює біт 1 в байті стану. Область даних BIOS за адресою 0000h:0478h містить чотири байта, які використовуються в якості лічильника часу при очікуванні готовності принтера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]