Tech-Ecke / DOS Inhalt / INP OUT

 

LPT-Port über INP und OUT ansprechen
 

Hinweis: Die Programmierbeispiele weiter unten beziehen sich auf den LPT1 und LPT2 mit der Adresse $378h bzw. $278h. Die Adresse muss jedoch in dezimaler Schreibweise angegeben werden, also 888 beim LPT1 und 632 beim LPT2.

QBasic bietet die wohl einfachste Möglichkeit den LPT-Port anzusprechen, wobei der Rechner aber auch in einer echten DOS-Umgebung laufen muss. In der Eingabeaufforderung unter Windows ist es leider nicht möglich den LPT-Port anzusprechen.
Die Befehl zum Ansteuern lauten OUT(XXX),Y  und INP(XXX).


   LPT-Port

           
  1 Strobe 10 Acknowledge [E] 19 GND
  2 Data 0 [A] 11 Busy [E] 20 GND
  3 Data 1 [A] 12 Paper End [E] 21 GND
  4 Data 2 [A] 13 Select [E] 22 GND
  5 Data 3 [A] 14 Auto Feed 23 GND
  6 Data 4 [A] 15 Error [E] 24 GND
  7 Data 5 [A] 16 Init 25 GND
  8 Data 6 [A] 17 Select In    
  9 Data 7 [A] 18 GND    

siehe auch hier 


 

   Out(XXX),y  (Ausgang - Datenregister)

Setzt man mit OUT einen Bit im Datenregister des LPT-Ports, so kann man am entsprechenden Pin eine Spannung von +5V messen. Folgende Tabelle zeigt welcher Bit welchen Pin unter Spannung setzt.

Ausgang Nr. 1 2 3 4 5 6 7 8
OUT(888), 1 2 4 8 16 32 64 128
+5Volt an Pin 2 3 4 5 6 7 8 9
Pinbezeichnung Data 0 Data 1 Data 2 Data 3 Data 4 Data 5 Data 6 Data 7

Um demnach am LPT1 den Ausgang 1 (Pin 2) zu setzen, lautet der entsprechende Syntax im Programm.

   OUT(888),1
 

Um mehrere Ausgänge gleichzeitig zu schalten, nimmt man die Quersumme der Werte in Zeile 2. Möchte man also den Ausgang 2 und 5 Schalten so ist der Wert 18 (2 + 16)

   OUT(888),18
 

Die so gesetzten Werte bleiben immer solange erhalten bis sie durch einen anderen überschrieben werden. Um alle Ausgänge wieder auf "Null" zu setzen (alles aus) setzt man "0"

   OUT(888),0
 
Achtung!
Der LPT-Port ist eine sehr empfindliche Schnittstelle, er kann nur wenige mA verkraften. Eine stärkere LED reicht bereits aus um ihn in die "Ewigen Jagdgründe" zu schicken. Keines falls kann man hier Relais oder sonstige Verbraucher direkt anschließen. Dazu bedarf es einer Signalverstärkung die mittels Transistoren oder dem IC ULN2803 erledigt werden kann. Eine passende Schaltung hierfür werde ich demnächst auf der Tech-Ecke bereitstellen.


   INP(
XXX(Eingang - Statusregister)

Um nun Informationen von Außen in den PC und somit in sein eigenes Programm zu schleusen benutzt man die Bits des Statusregisters, welches die Pins 10-13 und 15 umfasst. Das Statusregister liegt eine Adresse oberhalb des Datenregisters, also 889 statt 888 beim LPT1 und 633 statt 632 beim LPT2.

 

X = INP(889)

 

Beanschlagt man nun einen oder mehrere Eingangspins des Statusregisters (10-13 und 15) mit Masse (GND) so wird sich der Wert der Variablen X entsprechend ändern.

Hinweis!
Wie schon oben erwähnt ist der LPT-Port eine sehr empfindliche Schnittstelle und verzeiht keine Überlastung oder gar Kurzschlüsse. Um einen Dateneingang zu realisieren empfehle ich Masse (Pin 18-25) an den entsprechenden "Eingangs-Pin" (Pin 10-13 und 15) zu legen. Es können auch mehrere Pins gleichzeitig beanschlagt werden.

"Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !"

[letzte Aktualisierung 01.02.2008]