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