Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Удаленная работа
Помощь проекту

Основы программирования LPT для DOS и Win9x

Как и обещал, попробую рассказать про программирование LPT порта. Почти все описаные ниже примеры будут работать только в DOS и Win9x. В системах WinNT, Win2K и WinXP это работать не будет, тк. они не разрешают напрямую общаться с портом. Теоретическая часть одинакова для всех систем.

Теория:

Как я уже говорил, у lpt порта есть 8 основных выходов - выводы 2-9. Управлять ими не сложно, нужно просто посылать в порт определенное число:
1 выход  -  1
2 выход  -  2
3 выход  -  4
4 выход  -  8
5 выход  - 16
6 выход  - 32
7 выход  - 64
8 выход  - 128
Чтобы запитать первый выход, нужно послать в порт единицу. Чтобы запитать пятый посылаем 16 и тп.. Ноль посланный в порт "погасит" все выходы, а число 256 запитает все сразу.

Сразу напрашивается вопрос - как запитать несколько выходов сразу. Ответ - просто сложить коды выходов: Например, нам нужно запитать выходы 3, 6 и 8, берем и складываем коды этих выводов: 4+32+128=164, посылаем в порт число 164. Так, а теперь погасим один из выходов... например, 6. Сейчас на порт у нас послано 164, отнимем от этого код шестерки(32). Считаем 164-32=132, посылаем в порт число 132 и 6й выход гаснет.

Сложно? Тогда ещё вариант без вычислений вобще:
Берем обычный калькулятор из windows(calc.exe), выбираем инженерный вариант в меню "вид". Переходим на двоичную систему (bin). Так, теперь если нам нужно запитать выходы 3 и 5:
распологаем выходы по порядку от 8 до 1
8-7-6-5-4-3-2-1
теперь заменяем всё, что нужно запитать, на  1, а что должно быть погашено - на 0.
0-0-0-1-0-1-0-0
вводим в калькулятор полученую комбинацию 00010100 и переключаемся назад на десятичную систему(Dec), введеное нами число меняется на 20. Значит, чтобы запитать выходы 3 и 5 нам нужно послать в порт число 20.

Практика:

Для того чтобы послать в порт какое-то число, нужно знать базовый адрес порта. Обычно первый LPT порт находится по адресу 378.

Адрес знаем, попробуем послать туда что-нибудь. Для примера возьмем Pascal. Новички, не пугайтесь, язык очень простой. Профи, не ругайтесь - он ещё не слишком стар и для доса писать на нем очень удобно.

Uses Dos;
Var   data:byte; {переменная DATA типа byte}   
Begin   
Readln(data);  {читаем переменную -ввод ентером}   
Port[378]:=data; {посылаем в порт}
End.

Если этот код набрать в Pascal 7.0 и скомпилировать, то получим простейшую программу для управления портом. В программе нужно ввести нужное число и нажать Enter. Прога пошлет введеное число в порт и закрется.

Чтобы узнать какое число сейчас присвоено порту (что там сейчас лежит) можно использовать такой код:

Uses Dos;
Var   data:byte; {переменная DATA типа byte}   
Begin   
data:=Port[378]; {читаем значение порта}   
writeln(data); {выводим на экран полученое значение}
End.

Это был пример на Pascal и работать он будет под DOS. В Win9x программа откроется в окне, в режиме эмуляции MSDOS.

Если такой вариант не устраивает и знания позволяют программировать на Delphi, вот пример управления портом из Delphi.Стандартных функций для работы с портом я не нашел и использовал вставки на ассемблере:

asm
MOV DX,0378H
MOV AL,data //data - то, что послать.
OUT DX,AL
end;

Этот код можно вставить в программу предварительно присвоив переменной data нужное значение.


Думаю, что этого пока хватит. Для экспериментов советую собрать простую линейку из светодиодов описаную в статье "Примеры схем для LPT", так будет проще понять что происходит.

Источник: zps-electronics.com


C этой схемой также часто просматривают:

ЗАЖИГАЛКА ДЛЯ ГАЗА
Зарядное устройство для автомобильных и мотоциклетных батарей
Зарядное устройство для автомобильных аккумуляторов
Имитатор для проверки телефонных аппаратов
Простые датчики для охранной сигнализации
Что такое LPT-порт ?
Примеры схем для LPT
Регулируемый блок питания на LM317T
Задний фонарь для мотоцикла/велосипеда.

Главные категории

Arduino


Аудио


В Вашу мастерскую


Видео


Для автомобиля


Для дома и быта


Для начинающих


Зарядные устройства


Измерительные приборы


Источники питания


Компьютер


Медицина и здоровье


Микроконтроллеры


Музыкантам


Опасные, но интересные конструкции


Охранные устройства


Программаторы


Радио и связь


Радиоуправление моделями


Световые эффекты


Связь по проводам и не только...


Телевидение


Телефония


Узлы цифровой электроники


Фототехника


Шпионская техника



Реклама на KAZUS.RU


Последние поступления

USB генератор пароля в виде флешки

Самодельная USB-гарнитура

Защита от помех устройства, питаемого от разъёма USB

Простое управление куллером компьютера

Переходник для подключения к USB-порту устройства с большим потребляемым током

1-wire шлюз для компьютера (через com-порт) на ATTiny2313

SPI шлюз для компьютера (через com-порт) на ATTiny2313

I2C шлюз для компьютера (через com-порт) на ATTiny2313

Стрелочный индикатор загрузки ЦП и оперативной памяти ПК

Sim Card Reader SOLO GWR


Bet Boom || прогнозы на спорт

© 2003—2024 «KAZUS.RU - Электронный портал»