Немного теории

  Параллельный порт для связи с принтером (или другим устройством) имеет базовый адрес &H378. Адресное пространство порта занимает диапазон &H378-&H37F.

  Адрес &H378 служит для передачи или чтения данных. Имеется возможность записать в этот порт какой-либо байт (значение от 0 до 255 или от &H00 до &HFF), включив или выключив соответствующие биты порта, которые выведены на разъем LPT-порта через контакты 2-9. Записанное в порт значение сохраняется до тех пор, пока в порт не будет записано любое другое значение. Считать с этого порта можно только последний выведенный через него байт. То есть байт выведенный из PC, а не состояние линий, подключенных к нему в данный момент.

  Адрес &H379 предназначен для приема сигналов с устройства, подключенного к этому порту именно в данный момент, то есть, опрашивая порт &H379, можно узнать его состояние в режиме реального времени.

  Адрес &H37A служит для передачи сигналов к устройству, подключенного к этому порту. Все сказанное для порта с адресом &H378 справедливо и для этого порта.

  Если в порту с адресом &H378 пользователь может использовать все 8 бит, то в порту с адресом &H379 ему предоставлены только 5 старших бит, а в порту с адресом &H37A только 4 младших бита.

  Суммируя все сказанное, получаем, что пользователь имеет в своём распоряжении двенадцать выходов и пять входов. При использовании различных внешних шифраторов и дешифраторов эти числа можно увеличить многократно. Но так как за все приходится платить, уменьшатся функциональные возможности управления. Однако все зависит от конкретной задачи и в некоторых случаях это не так важно.

  Вот распайка разъема порта принтера и таблица с описанием сигналов.
  Последняя колонка таблицы требует некоторого пояснения. "Да" означает, что сигнал инверсный (обратный). Что это такое? Когда мы передаём данные, мы отправляем (программно) логическую единицу в тот или иной бит порта. Для того, чтобы установить в единицу контакт 1 разъема, (D0 порта 37A) мы должны записать в порт логический ноль. Контроллер проинвертирует этот сигнал, т.е. изменит на противоположный (на лог.1) и установит единицу на контакте 1 разъёма. Подали 0 получили 1, подали 1 получили 0.
Аналогично для бита D7 входного порта 379.Если на этом входе присутствует логический ноль, то при считывании данных из порта мы получим 1 в бите D7 и наоборот.



НогаСигналБитПортИнверсия
1OutD037AДа
2OutD0378Нет
3OutD1378Нет
4OutD2378Нет
5OutD3378Нет
6OutD4378Нет
7OutD5378Нет
8OutD6378Нет
9OutD7378Нет
10InD6379Нет
11InD7379Да
12InD5379Нет
13InD4379Нет
14OutD137AДа
15InD3379Нет
16OutD237AНет
17OutD337AДа
18-25GND---

Главная Оглавление Вперед
Hosted by uCoz