GLCD an LPT

Gast #200218
Lesenswert?

Hi!

Im Internet habe ich ein kleines Programm gefunden für die Ansteuerung
eines Displays T6963 an die LPT.

Ich verstehe nicht, warum hier "PortReadB(printerport+$402);"
verwendet wird. Was genau soll das bezwecken?

procedure TForm1.WaitDispRdy;
// Warten, bis das Display bereit ist
var tmp: byte;
    t: TDateTime;

begin
  if BiDirLPT THEN begin
    // LPT im ECP-Control-Register auf PS/2-Mode setzen
    // nötig, falls es ein ECP-Port ist
    tmp:=PortReadB(printerport+$402);
    tmp:=tmp AND $1F;
    tmp:=tmp OR $20; // Bidirektionaler Modus = PS/2
    PortWriteB(printerport+$402,tmp);
    t:=now+(5/86400);  // Begrenzt auf 5 Sekunden
    repeat
      // Auf Eingang schalten und abfragen
      PortWriteB(printerport+2,$20+4+2); //In, CD=1, CS=0, Wr=1
      PortWriteB(printerport+2,$20+4+2+8); //In, CD=1, CS=0, Wr=1,
Rd=0
      tmp:=PortReadB(printerport);
      PortWriteB(printerport+2,$20+4+2); //In, CD=1, CS=0, Wr=1
    until ((tmp AND 3)=3) OR (now>t); // Maximal 5 Sekunden warten
    PortWriteB(printerport+2,0);
  end else
    Delay(1); // Ohne bidirektionalen Parallelport ist Handshaking
nicht möglich
end;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren