Digital Poti - Pascal Quelltext:
{================================================================================}
{ }
{ PROGRAM : Einfaches Steuerprogramm f?r Digitalpoties der Serie X9C_nnn }
{ Ausgabe erfolgt ?ber den Printerport des Rechners }
{ }
{ AUTHOR : M. Anders, 12.2006 }
{ }
{================================================================================}
program DigiPoti;
uses Crt;
const
LPT1 = 1;
LPT2 = 2;
LPT3 = 3;
CLK_1 = $01;
CLK_0 = $00;
SEL_UP = $02;
SEL_DN = $00;
CS_VOL = $80;
MIN_VOL = 0;
MAX_VOL = 100;
var
LPT_Addr : Word;
Volume : Byte;
C : Char;
procedure LPTOpenPort(lptnr:Byte);
begin
LPT_Addr := MemW[$40 : 6 + lptnr * 2];
end;
procedure LPTSendData(P:Byte);
begin
Port[LPT_Addr] := P;
{ Write(' C:',P);}
end;
procedure IncVolume;
begin
Inc(Volume);
gotoxy(1, 7);
Write('VOL: [+] ', Volume:4);
LPTSendData(CS_VOL or SEL_UP or CLK_1);
LPTSendData(CS_VOL or SEL_UP or CLK_0);
end;
procedure DecVolume;
begin
Dec(Volume);
gotoxy(1, 7);
Write('VOL: [-] ', Volume:4);
LPTSendData(CS_VOL or SEL_DN or CLK_1);
LPTSendData(CS_VOL or SEL_DN or CLK_0);
end;
procedure InitVolume;
var
I : Byte;
begin
Volume := MAX_VOL;
for I := 1 to MAX_VOL do
DecVolume;
end;
begin
ClrScr;
WriteLn('DIGIPOTI.PAS - Digital Poti Test Programm ');
WriteLn;
WriteLn(' [UP] Volume +');
WriteLn(' [DN] Volume -');
WriteLn(' [ESC] Beenden');
WriteLn;
LPTOpenPort(LPT1);
InitVolume;
repeat
C := ReadKey;
if C = #0 then
begin
C:= ReadKey;
case C of
#72: if (Volume < MAX_VOL) then IncVolume;
#80: if (Volume > MIN_VOL) then DecVolume;
end;
end;
until C = #27;
WriteLn('EXIT');
end.
|
Nach oben
elo.maanders.de - CMS Engine v1.0 - Copyright (C) by M. Anders, 08.2011
