Вчимося працювати з lpt портом, vr-online - безкоштовний електронний журнал для всіх

Доброго времени суток кодери, і інші маніяки комп'ютерної індустрії. Сьогодні я розповім тобі як можна управляти LPT портом і використовувати його в своїх цілях. Так що запасайся сникерсамі і терпінням. В кінці я покажу цікавий приклад його використання.

LPT порт має 25 контактів на яких може бути встановлено 0 або +5 В (0 або 1). Встановлювати значення можна програмним шляхом або за допомогою зовнішнього пристрою. Давайте розглянемо наступний малюнок який допоможе нам в роботі.
(Відразу зізнаюся, малюнок не мій, він узятий з сайту www.pcports.ru. Де є багато інформації на дану тему).

n акумулятор, порт.

in акумулятор, dx.

Тепер обьясню чого ми добилися. Давай подивимося на наш малюнок, а точніше на червоні роз'єми які відповідають бітам від D0 до D7 регістру Data. А тепер вгадай який з них ми встановили в 1. Правильно, біт D0, а отже і контакт №2 встановлений в 1. А це означає, що на цьому контакті зараз знаходиться +5 Вольт. Перевіряється легко. Потрібно взяти світлодіод і його "+" засунути в другій контакт, а його "-" в 25-й (тобто заземлити). Ось тут я повинен тебе попередити, що підключення до LPT порту всяких саморобних пристроїв (зроблено не грамотно) може обернуться виходом з ладу материнської плати. Зазвичай довгий вусик світлодіода - це "+" (краще перевірити це за допомогою батарейки). Наш світлодіод повинен загорітися. Але от не задача. Наша програма при натисканні на кнопку лається. Дай вгадаю, у тебе вінда НЕ 9х.

Inp32 (PortAdr: word): byte.

Out32 (PortAdr: word; Data: byte): byte.


Тут ми оголосили дві функції. Вказали, що викликатися вони будуть стандартним способом (написавши stdcall), а також ми вказали, що процедура зовнішня і знаходиться в бібліотеці (external 'inpout32.dll'). До речі, ця бібліотека повинна знаходитися в папці разом з виконуваним файлом. Далі кидаємо на форму кнопку і за її натискання пишемо:

Компілюємо, запускаємо і про чудо, загорівся наш світлодіод. А тепер давай згадаємо "маску" (00000001) з попереднього прикладу. Наша одиниця, яка передається в другому параметрі в порт 888 (реєстр Data) в 10-чной сис. рівносильна 00000001 в 2-чной. Тобто, якщо взяти ще два світлодіода, і "+" одного засунути в 3-й контакт LPT порту, а "+" іншого, наприклад в п'ятий, а їхні мінуси звичайно заземлити підключивши до 25-му висновку, то для того що б їх все запалити, треба в другому параметрі функції Out32 відправити на порт 11: Out32 (888,11), тому що 11, в двійковій системі буде виглядати так 00001011. Незрозуміло? Спробуй ці нулики і одинички візуально накласти на малюнок, починаючи з дев'ятого контакту і до 2-го. Тепер не складно здогадатися, що на контактах 5,3 і 2 буде встановлено напруга + 5В і наші світлодіоди, які ми туди засунули, будуть горіти. Тепер ми можемо зробити що-небудь по цікавіше, наприклад мигалку. Використовуючи таймер це не складно зробити. Спробуй сам.

Ну ось начебто і все, що я хотів тобі розповісти сьогодні. У наступній статті я розповім як зробити так, що б радіокерована машинка керувалася не за пульта, а з клавіатури. Вдалою компіляції.

Written by: Kastor

Схожі статті