PROgrammist, №3

Page 32

[ПРОграммист устанавливает

LPT ПОРТ. КОМПЬЮТЕР В РОЛИ КОНТРОЛЛЕРА. ЧАСТЬ 1

май 2010

значение

применения функций:

в

регистр.

Пример

// переменная bit принимает значение 3-го бита регистра «data» bit := Dec_Bin(Inp32($378))[3];

var val1, val2: byte;

// значение регистра «data» запишется в переменную val1

Вариант

val1:= Inp32($378);

// в регистр «data» запишется число 54 (b 0 0 1 1 0 1 1 0)

следует

учитывать,

что

утилиты

управления

и

на рисунке 4 и приведен в ресурсах к статье [1]:

Out32($378,val2);

этом

тестовой

считывания состояния регистров LPT представлен

val2:= 54;

При

var bit : byte;

состояние

уровней напряжения на выходных контактах LPT порта

соответствует

таблице

2

и

3.

При

необходимости управления отдельными битами регистров можно применить следующие функции

преобразований десятичного числа в двоичное и наоборот:

// weight (для byte(8 разр.)) = 128, j = 7;

// weight( для word (16 разр.)) = 32 768, j = 15 ; function Dec_Bin(N_dec: integer; weight: integer; _bit: byte): byte;

var i ,j : byte;

mas_bin: array[0..j] of byte; N_dec: integer;

begin

for i:= 0 to j do begin

mas_bin[i]:= N_dec div weight;

if mas_bin[i] = 1 then N_dec:= N_dec - weight; weight:= weight div 2; end;

// возвращает значение бита (0 или 1) двоичного числа, // соответствующего N_dec Result:= mas_bin[_bit]

end;

function Bin_Dec(weight: integer): integer; var i , j: byte;

mas_bin: array[0..j] of byte; N_dec: integer;

begin

N_dec:= 0;

Рис. 4. Утилита считывания контроля тояний

и

сос-

регис-

тров LPT порта Заключение

В следующей статье мы рассмотрим практические

варианты схемотехники подключения порта LPT для

ввода

смотрите

в

и

вывода

данных.

следующем

«ПРОграммист»...

Продолжение

выпуске

журнала

Ресурсы . Модули и проекты, использованные в статье http://programmersclub.ru/pro/pro3.zip

. Сайт Валерия Ковтуна с множеством интересных программ для работы с LPT портом

http://valery-us4leh.narod.ru/main.html

for i:= 0 to j do

** Комментарий автора.

N_dec:= N_dec + mas_bin[i] * weight;

ввода определяется в настройках BIOS для параллельного порта.

begin

weight:= weight div 2; end;

// возвращает десятичное число, соответствующее двоичному // в виде массива битов mas_bin [ 0 .. j ] Result:= N_dec

end;

Возможность использования регистра «data» ($378) в качестве порта Следует установить Parallel Port в EPP. Переключение регистра на

«вход» осуществляется программно, путем установки 5-го бита

регистра «control» ($37A) в «1» (при этом все биты регистра «data» устанавливаются в «1»). Следует отметить, что данная процедура возможна

не

на

каждом

компьютере

и

определяется,

кроме

настроек, еще и конструктивными особенностями порта LPT или материнской платы.

Пример применения функций:

ЛАБОРАТОРИЯ

СОДЕРЖАНИЕ

32


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.