elo.maanders
Schaltungen,
Bilder, Pläne,
Technik, Basteln
und vieles mehr
Home
Vorwort
Vorverstärker
Transistorverstärker
IC Verstärker
Audio Schaltungen
Class-A Schaltungen
Empfänger/Sender
Röhrenschaltungen
Hiend Projekt
PC LPT Port und uP
Interessante Infos
Diverse Schaltungen
Projekte
Offene Geräte
Zerlegtes
Datenblätter
Programme
Suchen
Kontakt
Impressum


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