Радиоэлектроника начинающим и не только!
Уроки начинающим.
НОВОСТИ
Главная
Введение
Урок-1
Урок-2
Урок-3
Урок-4
Урок-5
Урок-6
Урок-7
Урок-8
Урок-9
Урок-10
Уроки по темам.
Транзисторные УНЧ
Ламповые УНЧ-УМ
Мультивибратор
Схемы начинающим
Библиотека начинающего радиолюбителя
Начинающим
Радио КВ - УКВ
Справочники по радиоэлементам.
Диоды
Стабилитроны

Маркировка

Резисторы-Конденсаторы
Диоды
Стабилитроны
Транзисторы
Измерение параметров электрических цепей.
Измерение напряжения
Проверка транзистора
Радиолюбительские технологии.
Основы пайки
Изготов. печатных плат
Связь КВ-УКВ.
Азбука коротких волн
Приемник прямого усил.
КВ-приемник начинающим
Микроконтроллеры начинающим.
Светодиодное информ. табло на PIC контроллере
Программатор “ICProg 105”
Осваиваем LPT порт
Программирование LPT под DOS
Программирование LPT под Windows
Программирование LPT под WinNT
Вспомогательные радиолюбительские программы.
Вспомогательные программы
Радиолюбительский калькулятор
Онлайн расчет антенн
Рассчет КФ
Мастерская радиолюбителя.
Лабораторный БП
Консультации-предложения.
Форум
Связь с автором

Основы программирования 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.

Практика:

Давайте для начала выполним несложные примерчики, так сказать для закрепления знаний. Для этого нам понадобится среда программирования Turbo Pascal, которая так же прекрасно работает и под Windows XP, и уже известное нам устройство для тестирования наших программ.

LPT-порт

Для того чтобы послать в порт какое-то число, нужно знать базовый адрес порта. Обычно первый LPT порт находится по адресу 378. Адрес знаем, попробуем послать туда что-нибудь. Запускаем среду программирования Turbo Pascal (перед работой, желательно изучить эту среду программирования). Новички, не пугайтесь, язык очень простой. Профи, не ругайтесь - он ещё не слишком стар и для ДОСа, писать на нем очень удобно.

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

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

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

Это был пример на Pascal и работать он будет под DOS. В Win9x, а так же последующих клонах, операционной системы Windows. Программа откроется в окне, в режиме эмуляции MSDOS. Для дальнейших экспериментов, предлагаю скачать исходный и исполняемый код программы, "бегущих огней", попробовать в ней разобраться. Программа не сложная, разобравшись с ней, вы получите не плохие навыки работы в среде Turbo Pascal. Исходный код этой программы, представляет собой практически готовый набор используемых возможностей порта, который можно использовать в дальнейшем, в своих разработках.

Вверх | Главная | Далее..



Hosted by uCoz