port_in (var port);

port_out (var port,var data);

Liest oder schreibt Daten an eine I/O Port-Adresse.

Parameters:

port Port Adresse, 0..4096.
data zu schreibendes Byte, 0..255.

Rückgabewert:

An den Port zu schreibende oder von von ihm auszulesende Daten, oder -1, wenn die Anweisung fehlgeschlagen ist.

Geschwindigkeit:

Mittel.

Bemerkungen:

Edition:

 C   P 

Beispiel:

Um den Port-Zugriff auszuprobieren, schreiben wir Daten an den parallelen Port.

Zuerst ein bisschen Parallel-Port-Theorie. Der Haupteinsatzzweck des Parallel-Ports ist die Verbindung zwischen Drucker und Computer - deswegen wird er oft auch `Drucker Port´ genannt. Er stellt 8 Output und 5 Input-Leitungen zur Verfügung, mit denen externen Geräte gestuert werden können - zum Beispiel ein EPROM Programmiergerät. Der Parallel Port Anschluss am PC ist ein 25 Pin weiblich (DB25) Anschluss. Ein Bild ist unten dargestellt.

Die Linien sind in drei Gruppen eingeteilt: Datenleitungen, Kontrolleitungen und Statusleitungen. Die schwarzen Pins sind geerdet. Wie der Name verrät, werden über die Datenleitungen Daten übertragen. Die Kontrolleitungen dienen der Steuerung der Peripherie und der Peipherie-Antwort der Status Leitungen. Diese Leitungen sind intern mit den Daten-, Kontroll- und Status-Registern verbunden. Indem man diese Register verändert, können Daten auf den Parallel-Port geschrieben oder von dort ausgelesen werden.

Jedes Register hat eine eigene I/O Port Adresse. Bei den meisten PCs liegt die Basis Adresse des LPT1 bei 888 (= 378 hex) und LPT2 bei 632 (= 278 hex). Das Daten-Register befindet sich an dieser Basis-Adresse, das Statusregister an Basisadresse + 1 und das Kontrollregister an Basisadresse + 2. Details über die Registerprogrammierung finden sich in jedem PC Hardware-Buch.

Ist der Port auf den Output-ode gesetzt, erscheint alles, was ins Datenregister geschrieben wird auf den zugehörigen Leitungen als Spannung und kann mit einem Multimeter gemessen werden. Wenn wir zum Beispiel die 1 in das Datenregister schreiben, wird Pin 2 des Anschlusses auf einen TTL High Level von +5V gesetzt. Auf diese Weise können wir die Datenleitungen an- und ausschalten. Nach dieser langen Einführung ist das Skript, das alle Datenleitungen des Paralell-Ports auslöst doch sehr einfach:

while(1) {
  port_out(888,255); // set all data lines to +5V
  sleep(1);
  port_out(888,0);   // set all data lines to 0V
  sleep(1);
}

Das Messen mit dem Multimeter kann zwischen den Pins25 (Erde) und 2 (Data0) erfolgen. Beachten Sie, dass nicht bei allen PCs alle Pins 18..25 geerdet sind.

► Aktuelle Version Online