FÜHRENDE PROGRAMMIER- UND MESSLÖSUNGEN

Grundlagen der Parallelport Programmierung

Wollten sie schon immer mal etwas mit Ihrem PC anzusteuern? Schaltungen, Relais, Modelleisenbahnen, Lauflichter,... Es gibt eine Menge Anwendungsmöglichkeiten. Viele, selbst gelernte Elektroniker, denken das dies ziemlich kompliziert ist, aber das ist es wirklich nicht.

Die parallele Schnittstelle des PCs ist mit insgesamt 12 Ausgängen und 5 Eingängen besonders für eigene Entwicklungen geeignet. Die Signale entsprechen den TTL Pegeln, wobei die Ausgänge nicht sonderlich belastet werden können. Man sollte diese sowieso nur über ein Treiber-IC für Experimente nutzen, um bei einem Kurzschluss das Motherboard nicht zu gefährden. Mit einer Programmiersprache wie Basic kann man mit einfachen Befehlen wie "Out (Adresse),Byte" oder "Variable = Inp (Adresse)" Daten an eine Schnittstelle senden bzw. von ihr empfangen.

Hinweis: Alle folgenden Zahlenangaben ohne Kennzeichnung sind Dezimalzahlen! Hexadezimal Zahlen sind mit einem (h) hinter der Zahl gekennzeichnet.

Die Anschlußbelegung

Bezeichnung Register bit SUB-D Stecker Centronics
Pinnummer GND Pinnummer GND
Data bit 0 D0 2 19 2 20
Data bit 1 D1 3 19 3 21
Data bit 2 D2 4 20 4 22
Data bit 3 D3 5 20 5 23
Data bit 4 D4 6 21 6 24
Data bit 5 D5 7 21 7 25
Data bit 6 D6 8 22 8 26
Data bit 7 D7 9 22 9 27
nError (nFault) S3 15 23 32 29
Select S4 13 24 13 28
PaperEnd S5 12 24 12 28
nAck S6 10 24 10 28
Busy S7 11 23 11 29
nStrobe C0 1 18 1 19
nAutoLF C1 14 25 14 30
nInit C2 16 25 31 30
nSelectIn C3 17 25 36 30
Ground GND 18-25   19-30  

Die Portadresse

Die Parallele Schnittstelle befindet sich meistens an der Adresse 378(h). Bei Windows findet man die Angabe der Adresse in der Systemsteuerung unter System -> Gerätemanager -> Anschlüsse -> LPT -> Ressourcen. Der Eintrag E/A-Bereich 378-37F bedeutet, dass die Basisadresse des Ports 378(h) ist. Über die Basisadresse erreicht man den Datenport, über die Basisadresse+1 den Statusport und über die Basisadresse+2 den Kontrollport.

Visual Basic

In Visual-Basic ist es leider nicht vorgesehen, direkt wie in Q-Basic mit den Inp/Out Befehlen auf die Schnittstellen zuzugreifen. Jan Axelson hat zwei DLL´s programmiert die den Einsatz dieser Befehle ermöglichen. Auf der Seite http://www.janaxelson.com/parport.htm kann man die Datei Inpout16.dll für den 16 bit Einsatz (Win3.x) und Inpout32.dll für den 32 bit Einsatz (Win 95/98) kostenlos herunterladen.

Das Lesen und Schreiben des Ports

In Quick Basic sowie in Visual Basic(mit DLL´s - siehe oben) erfolgt der Zugriff folgendermaßen:

Schreiben: OUT (Adresse),Byte
Lesen: Variable=INP(Adresse)

Bei den folgenden Beispielen gehe ich davon aus, dass der Parallelport an der Basisadresse 378(h) = 888 Dezimal liegt.

Der Datenport (Basisadresse) besteht aus den acht Ausgängen, D0 bis D7, wobei D7 das höchstwertige Bit darstellt und D0 das niederwertigste Bit. Der Befehl Out (888),85 setzt den ersten, dritten, fünften und siebten Ausgang auf high und den Rest auf low (85 Dezimal = Binär 01010101). Mit dem Out(888),00 setzt man alle acht Ausgänge auf low-Signal, mit dem Befehl Out(888),255 alle Ausgänge auf high-Signal.

Der Statusport (Basisadresse+1) besteht aus fünf Eingängen, S3 bis S7. S0 bis S2 sind unbenutzt und werden als Nullen gelesen. S7 wird invertiert gelesen. Wenn nach dem Befehl "Variable= Inp(889)" die Variable den Wert 120 hat, bedeutet dies, dass alle fünf Eingänge auf High Signal liegen. (Dezimal 120=Binär 01111000, S7 invertiert ergibt 11111000).
Ein Schreiben auf den Statusport wird ignoriert.

Der Kontrollport (Basisadresse+2) besteht aus vier Ausgängen, C0 bis C3, wobei C0,C1 und C3 invertiert ausgegeben werden. Mit dem Befehl Out(890),04 setzt man alle vier Ausgänge auf High Signal. (Dezimal 04 =Binär 00000100, C0,C1,C3 invertiert ergibt 00001111) Mit dem Befehl Out(890),11 setzt man alle vier Ausgänge auf low Signal (Dezimal 11 =Binär 00001011-C0,C1,C3 inv. ergibt 00000000).