home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / das_buch / ports / kabeltst.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-05-10  |  1.6 KB  |  65 lines

  1. program KabelTst;
  2.  
  3. { Programm zum Test des selbstzulötenden Druckerkabels }
  4.  
  5. uses crt;
  6.  
  7. var data,status,steuer : word;
  8.     input              : byte;
  9.     output,strobe      : byte;
  10.     ch                 : char;
  11.  
  12. function GetBase(nr : byte) : word;
  13.   { Ermittelt die Basisadresse der Schnittstelle 0 = LPT1, 1 = LPT2,... }
  14. begin
  15.   GetBase := MemW[$40:$08+2*nr];
  16. end;
  17.  
  18. function HexBit(b : byte) : string;
  19. var h : string; i : integer;
  20. begin
  21.   byte(h[0]) := 8;
  22.   for i := 1 to 8 do begin
  23.     if b > 127 then h[i] := '1' else h[i] := '0';
  24.     b := b shl 1;
  25.   end;
  26.   HexBit := h;
  27. end;
  28.  
  29. begin
  30.   { Initialisierung }
  31.   clrscr;
  32.   GotoXY(1,10); WriteLn('Beenden mit ESC');
  33.   output := $00; { andere Werte sind möglich }
  34.   strobe := 0;
  35.  
  36.   { LPT - Adresse herausfinden }
  37.   data   := GetBase(0); { LPT1, bei LPT2 hier GetBase(1) einsetzen }
  38.   status := data+1;
  39.   steuer := data+2;
  40.  
  41.   { Leitungen initialisieren, um sie lesefähig zu machen }
  42.   Port[steuer] := $4;
  43.   Port[status] := $0;
  44.  
  45.   repeat
  46.   repeat
  47.     Gotoxy(1,1);
  48.     WriteLn('Ausgabe auf Datenport (Pin 9 bis 2) : ',HexBit(output));
  49.     Port[data] := output;
  50.     input := (Port[status] and $F8) or ((Port[steuer] shr 1) and $7);
  51.     input := input xor $85;
  52.     Write('Status- und Steuerport Pins 11,10,12,13,15,17,16,14 :');
  53.     WriteLn(HexBit(input));
  54.     if odd(Port[steuer]) then WriteLn('Strobe (1)   aktiv')
  55.                          else WriteLn('Strobe (1) inaktiv');
  56.   until keypressed;
  57.   output := output +1;
  58.   if odd(strobe) then Port[steuer] := $5 else Port[steuer] := $4;
  59.   strobe := not strobe;
  60.   ch := ReadKey;
  61.   until ch = #27;
  62. end.
  63.  
  64.  
  65.