Menu Home

Бесплатная техническая библиотека для любителей и профессионалов Бесплатная техническая библиотека


Другая жизнь LPT порта. Часть 1. Энциклопедия радиоэлектроники и электротехники

Бесплатная техническая библиотека

Энциклопедия радиоэлектроники и электротехники / Компьютеры

Комментарии к статье Комментарии к статье

Не ожидал, что моя первая статья (azbukavb.narod.ru/teorie/LPT.htm) вызовет такой интерес среди программистов и электронщиков, т.к. я получил массу писем с вопросами и продолжаю их получать до сих пор, хотя прошло уже почти три года с момента написания статьи. Кроме того в первой статье был допущен ряд неточностей. Это все и побудило меня на написание более подробной статьи на эту тему, в которой я постараюсь ответить на большинство вопросов уважаемых читателей и исправить те неточности, которые были допущены в первой статье. Пусть не обижаются на меня читатели первой статьи, но мы снова рассмотрим подробно каждый контактик и битик нашего LPT порта. В первой части статьи будет рассмотрена теория, во второй и последующих (если они будут) мы будем рассматривать электронные устройства, которые можно "подцепить" к этому порту.

Ø В тексте вы встретитесь с общепринятой аббревиатурой записывания чисел.

Ø Например, 10102 - двойка в нижнем индексе указывает, что число 5 представлено в двоичном исчислении,

Ø 12410 - десятка в нижнем индексе, говорит о том, что число 124 десятичное.

Это так… на всякий случай

Как показала практика, все программы, правильно написанные и дополненные соответствующими библиотеками (vbio32.dll, inpout32.dll, dlportio.dll и т.д.) работают на большинстве компьютеров с операционными системами семейства Windows. Я проверял работу всех своих программ (Visual Basic5.0, 6.0) на Win95, 98, Me, 2000, XP HE, XP Prof и даже в DOS6.22 (QBasic) - все работает прекрасно. В DOS-е вообще никаких библиотек не надо, там все и так работает. Сразу оговорюсь, что vbio32.dll и inpout32.dll НЕ БУДУТ РАБОТАТЬ ПОД Win2000, но совершенно спокойно будут работать под Win95, 98, Me.

Кстати, взять любую из этих библиотек вы можете на sano2000.narod.ru/index.html. Мне захотелось попробовать dlportio.dll и в данный момент я работаю с этой библиотекой. Ну и последнее, перед написанием программ необходимо правильно объявить библиотеку, которую вы используете.

Ø Для inpout32.dll

Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer

Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

Ø Для dlportio.dll

Private Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte

Private Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Byte)

Чем отличается Private от Public я писать не буду.

Параллельный порт для связи с принтером (или другим устройством) имеет базовый адрес &H378 (LPT1), &H278 (LPT2), &H3BC (LPT3). В данной статье мы будем рассматривать только LPT1. Адресное пространство данного порта занимает диапазон &H378-&H37F.

· Адрес &H378 называется базовым и служит для записи (чтения, но об этом попозже) данных в порт, на линии D0-D7.

· Адрес &H379 (базовый+1) предназначен для чтения битов состояния с устройства, подключенного к LPT-порту (принтер, сканер и т.д)

· Адрес &H37A (базовый+2) служит для записи битов управления устройства, подключенного к LPT-порту (принтер, сканер и т.д.).

На приведенных ниже таблицах "расшифрованы" контакты и сигналы каждого из адресов

Другая жизнь LPT порта

Другая жизнь LPT порта

Другая жизнь LPT порта

Контакты 18-25 - "земля" (общий, GND, GROUND и т.д.)

Рассмотрим программирование каждого из адресов.

· Базовый адрес &H378 (LPT1) позволяет записывать данные в порт на линии D0-D7 в диапазоне от 0 до 255.

· Записываем в порт число 69
Код следующий. Для тех, кто использует
inpout32.dll dlportio.dll DOS
Out &H378, 69 DlPortWritePortUchar &H378, 69 OUT &H378, 69

*********************************************************************************************************

· Адрес &H379 служит для чтения битов состояния.

· Читаем состояние порта по адресу &H379

Ø  При чтении адреса &H379 необходимо помнить, что первые три бита - не используются и всегда имеют значение лог. "1", а 7-й бит - инверсный. В результате если все контакты 15, 13, 12, 10, 11 посадить на "землю", то при чтении информации вы получите на первых трех битах (которые не используются) 1+2+4 и на 7-м бите (контакт 11-инверсный, значит, при замыкании на землю будет лог. "1") +128 итого 135. Об этом не надо забывать. Во второй части статьи мы остановимся на этом более подробно.
Код следующий. Для тех, кто использует
inpout32.dll dlportio.dll DOS
Dim A as Integer A = Inp(&H379) Dim A as Integer DlPortReadPortUchar(&H379) DEFINT A-ZA=INP(&H379)

*********************************************************************************************************

· Адрес &H37A служит для записи битов управления.

· Записываем сигнал -STROBE (бит управления 0)
Код следующий. Для тех, кто использует
inpout32.dll dlportio.dll DOS
Out &H37A, 10 DlPortWritePortUchar &H37A, 10 OUT &H37A, 10

Почему 10? Давайте посмотрим в табличку.
(-StrOBE) 20 (-AUTO) 21 (INIT) 22 (-SELECT IN) 23 (Сигналы) биты
Контакт 1 Контакт 14 Контакт 16 Контакт 17  
0 1 0 1 01012
0 2 0 8 0+2+0+8=10

Сигналы STROBE, AUTO, SELECT IN - инверсные, значит, чтобы на выходе контактов разъема 1, 14, 17 получить логическую "1" надо подать на эти биты логический "0", т.е. подали одно - получили противоположное. Сигнал INIT прямой (не инверсный), поэтому логическая "1" на контакте 16 появится тогда, когда мы подадим на этот бит логическую "1", т.е. что подали, то и получили.

Попытаемся получить на контактах 1,17 - низкий уровень сигнала "0", а на контактах 14 и 16 высокий уровень сигнала "1", т.е. на выходе контактов 1,14,16,17 будет присутствовать 0 1 1 0 (610).

На нулевой бит (-STROBE) подаем "1" (на контакте 1 будет "0"), на первый бит (-AUTO) подаем "0" (на контакте 14 будет "1"), на второй бит (INIT) подаем "1" (на контакте 1 будет "1") и, наконец, на третий бит (-SELECT IN) подаем "1" (на контакте 17 будет "0"), т.е. мы записали по адресу &H37A число 10112,-это 1310. Значит, чтобы на выходе получить 6 надо подать 13.

Для удобства привожу таблицу со всеми возможными комбинациями чисел от 0 до 15

Подаваемый сигнал Получаемый сигнал
Десятичное число (-StrOBE) 20 (-AUTO) 21 (INIT) 22 (-SELECT IN) 23 контакт 1 контакт 14 контакт 16 контакт 17 Десятичное число
  1 2 4 8 1 2 4 8  
0 0 0 0 0 1 1 0 1 11
1 1 0 0 0 0 1 0 1 10
2 0 1 0 0 1 0 0 1 9
3 1 1 0 0 0 0 0 1 8
4 0 0 1 0 1 1 1 1 15
5 1 0 1 0 0 1 1 1 14
6 0 1 1 0 1 0 1 1 13
7 1 1 1 0 0 0 1 1 12
8 0 0 0 1 1 1 0 0 3
9 1 0 0 1 0 1 0 0 2
10 0 1 0 1 1 0 0 0 1
11 1 1 0 1 0 0 0 0 0
12 0 0 1 1 1 1 1 0 7
13 1 0 1 1 0 1 1 0 6
14 0 1 1 1 1 0 1 0 5
15 1 1 1 1 0 0 1 0 4

Ну и, наконец, последнее в этой части статьи. Если ваш компьютер поддерживает стандарт EPP, то четвертым битом по адресу &H37A вы сможете разрешить прерывание (для LPT1 это IRQ7) от принтера, только не спрашивайте меня что это такое, я все равно ничего не знаю про прерывания. А вот пятым битом 1101012, например, подав число 4310, вы устанавливаете шину D0-D7 в режим ПРИЕМА данных. При этом все разряды (контакты 2-9) принимают значение логической "1". Чтобы подать на нужный контакт логический "0" надо замкнуть его через сопротивление 240 - 360 Ом на "землю". Таким образом, через LPT порт компьютера мы получаем в стандартном виде устройство с 12-ю выходными сигналами и 5-ю входными, а при переводе порта в режим EPP мы получаем 4 выходных сигнала и 13 входных сигналов.

Режим SPP (12 выходов и 5 входов)   Режим EPP (4 входа и 13 выходов)
Сигнал Направление   Сигнал Направление
D0 Выход   D0 Вход
D1 Выход   D1 Вход
D2 Выход   D2 Вход
D3 Выход   D3 Вход
D4 Выход   D4 Вход
D5 Выход   D5 Вход
D6 Выход   D6 Вход
D7 Выход   D7 Вход
ERROR Вход   ERROR Вход
SELECT Вход   SELECT Вход
PAPER END Вход   PAPER END Вход
ACK Вход   ACK Вход
-BUSY Вход   -BUSY Вход
-StrOBE Выход   -StrOBE Выход
-AUTO Выход   -AUTO Выход
INIT Выход   INIT Выход
-SELECT IN Выход   -SELECT IN Выход

Автор: Клюшников Алексей, г. Иваново; Публикация: cxem.net

Смотрите другие статьи раздела Компьютеры.

Читайте и пишите полезные комментарии к этой статье.

<< Назад

Последние новости науки и техники, новинки электроники:

Токсичность интернета преувеличена 07.01.2026

Социальные сети нередко воспринимаются как арена постоянной агрессии, оскорблений и распространения фейковой информации. Новое исследование Стэнфордского университета показывает, что реальность значительно отличается от популярного представления: интернет гораздо менее токсичен, чем многие пользователи считают. Ученые опросили более тысячи американцев, попросив их оценить долю пользователей соцсетей, которые ведут себя агрессивно или распространяют ненависть. Оказалось, что впечатления людей сильно преувеличивают масштабы проблемы. Например, респонденты считали, что почти половина пользователей Reddit хотя бы раз оставляла оскорбительные комментарии, тогда как фактические данные платформы показывают, что таких людей не более 3%. Аналогичная ситуация наблюдается с дезинформацией. Опрос показал, что большинство участников считали почти половину аудитории Facebook распространителями фейковых новостей, однако статистика говорит об обратном: фактическая доля таких пользователей состав ...>>

Процессоры Ryzen AI 400 07.01.2026

Современные вычисления все больше ориентируются на интеграцию искусственного интеллекта и высокую производительность в компактных устройствах, таких как ноутбуки и мини-ПК. Новая линейка процессоров AMD Ryzen AI 400 демонстрирует, как разработчики объединяют мощные центральные ядра, графику и нейросетевые ускорители в одном чипе, чтобы удовлетворять растущие потребности пользователей в играх, контенте и ИИ-приложениях. AMD представила процессоры серии Gorgon Point, которые включают до 12 ядер Zen 5 и до 24 потоков вычислений. Чипы поддерживают интегрированную графику RDNA 3.5, обеспечивают максимальную тактовую частоту до 5,2 ГГц и имеют энергопотребление от 15 Вт до 54 Вт. Особое внимание уделено NPU, способному обрабатывать до 60 триллионов операций в секунду (TOPS), что делает эти процессоры эффективными для задач с искусственным интеллектом. Конструкция Ryzen AI 400 сочетает ядра Zen 5 и Zen 5c, обеспечивая высокую гибкость и производительность. Несмотря на то, что архитектур ...>>

Женщины лучше распознают признаки болезни по лицу 06.01.2026

Способность распознавать, что кто-то нездоров, часто проявляется интуитивно: бледная кожа, опущенные веки, уставшее выражение лица могут сигнализировать о недомогании. Новое исследование международной группы ученых показало, что женщины в среднем точнее мужчин улавливают такие тонкие невербальные признаки болезни, что может иметь эволюционные и социальные объяснения. В отличие от предыдущих работ, где использовались отредактированные фотографии или имитация больных лиц, ученые решили проверить, насколько люди способны распознавать естественные признаки недомогания. Такой подход позволил оценить реальную чувствительность к изменениям в лицах, возникающим при болезни. В исследовании приняли участие 280 студентов, поровну мужчин и женщин. Участникам предложили оценить 24 фотографии, на которых изображены люди как в здоровом состоянии, так и во время болезни. Это дало возможность сравнить восприятие естественных признаков недомогания в реальных лицах. Для анализа состояния каждого ...>>

Случайная новость из Архива

Кардиопринтер 09.01.2015

Создана технология для печати трехмерных моделей сердца.

До сих пор при подготовке операции мы работали с двумерными изображениями сердца, созданными с помощью томографии. А теперь времена изменились, и мы получили новое мощное средство исследований", - говорит профессор Патричио Ланселотти, президент Европейской ассоциации изображений в кардиологии. Это средство - технология печати трехмерных моделей сердца пациента, представленная в Вене на конгрессе ассоциации.

В общем-то, при современных технических возможностях это не столь уж сложно, ведь томограф дает серию двумерных срезов тканей и органов, а методы превращения наборов таких срезов в трехмерные модели хорошо разработаны создателями программного обеспечения для проектирования деталей. Теперь дело дошло и до моделирования живых тканей. А дать задание принтеру воспроизвести трехмерную модель в пластике - и вовсе не проблема.

Получив в свое распоряжение пластиковое сердце, по форме точно такое же, как и то, что в груди у пациента, кардиохирург может заранее подготовиться к операции, выбрать инструмент и вообще разработать план действий. А при случае провести несколько предварительных операций и выбрать оптимальную тактику.

Другие интересные новости:

▪ MDMEDH V в корпусе PowerFlat

▪ Музейная аллергия

▪ В городах осадков выпадает больше, чем в селах

▪ Ветромобиль

▪ Новый двунаправленный датчик потока газа

Лента новостей науки и техники, новинок электроники

 

Интересные материалы Бесплатной технической библиотеки:

▪ раздел сайта Радиоэлектроника и электротехника. Подборка статей

▪ статья Экологические опасности. Основы безопасной жизнедеятельности

▪ статья Почему первый трансатлантический телеграфный кабель проработал всего месяц? Подробный ответ

▪ статья Повязки на верхнюю и нижнюю конечности. Медицинская помощь

▪ статья Антенна W3DZZ Трехдиапазонный диполь. Энциклопедия радиоэлектроники и электротехники

▪ статья Электроустановки зрелищных предприятий, клубных учреждений и спортивных сооружений. Электрическое освещение. Энциклопедия радиоэлектроники и электротехники

Оставьте свой комментарий к этой статье:

Имя:


E-mail (не обязательно):


Комментарий:





Главная страница | Библиотека | Статьи | Карта сайта | Отзывы о сайте

www.diagram.com.ua

www.diagram.com.ua
2000-2026