[ПРОграммист устанавливает
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