8255 & 71055


 
PPI-Baustein mit drei 8bit TTL-Port

Programmierung
PPI heist peripherial-port-interface und ist ein universeller I/O-Schaltkreis für die 8-bit parallele Ein-Ausgabe. Der 8255 bzw. uPD71055-C enthält drei Ein-Ausgabeports (bezeichnet mit Port A, B und C), über die der digitale Datenaustausch zwischen einem Prozessor und der Peripherie erfolgt. Die Konfiguration der drei Ein-Ausgabeports erfolgt über ein zusätzliches Register, dem Control-Register bzw. auch Komandoregister oder Status-Register genannt. Die drei Ports A, B und C werden durch das Einschreiben eines Bytes in das Control-Register entsprechend konfiguriert.

Beispiel
Mit dem Befehl: OUT(Statusport, 128 + xxx) wird das Status-Register des 8255-Portbausteins programmiert. Dieses Register gibt vor, welche der drei E/A-Ports (PA, PB und PC) auf Eingabe oder Ausgabe gestellt werden. Alle Ports können sowohl als Ausgabe- oder Eingabe-Port fungieren. Der Port "PC" kann in zwei Hälften unterteilt werden, sodass 4 bit als Ein- und 4 bit als Ausgabe dienen können. Das Komandowort, dass zum Status-Port des 8255 gesendet wird, muss vor der jeweiligen Nutzung der E/As erfolgen. Das geschriebene Komandowort ist so lange gültig, bis es mit einem anderen Wert überschrieben wird. Es muss aber mindestens ein mal nach dem Einschalten des PCs erfolgen, um den 8255 grundsätzlich zu initialisieren. Die Initialisierung des Komandoregisters ist jedoch nach Wegnahme der Spannungsversorgung (PC wird abgeschaltet) wieder ungültig bzw. gelöscht.

Registerbelegungstabelle für ISA-Karten:
I/O-Adresse Lesen Schreiben 
Basisadresse + 0  8255/Port A lesen in 8255/Port A schreiben 
Basisadresse + 1  8255/Port B lesen in 8255/Port B schreiben 
Basisadresse + 2  8255/Port C lesen in 8255/Port C schreiben
Basisadresse + 3 - Betriebsart des 8255 festlegen 

Registerbelegungstabelle für PCI-Karten (bei D0-D7 Datenbus):
I/O-Adresse Lesen Schreiben 
Basisadresse + 0  8255/Port A lesen in 8255/Port A schreiben 
Basisadresse + 4  8255/Port B lesen in 8255/Port B schreiben 
Basisadresse + 8  8255/Port C lesen in 8255/Port C schreiben
Basisadresse + C - Betriebsart des 8255 festlegen 

Registerbelegungstabelle für PCI-Karten (bei D8-D15 Datenbus):
I/O-Adresse Lesen Schreiben 
Basisadresse + 1  8255/Port A lesen in 8255/Port A schreiben 
Basisadresse + 5  8255/Port B lesen in 8255/Port B schreiben 
Basisadresse + 9  8255/Port C lesen in 8255/Port C schreiben
Basisadresse + D - Betriebsart des 8255 festlegen 

Die ausführliche, deutsche Zusammenstellung zur Programmierung des Komandowortes finden Sie im Anhang der jeweiligen PC-Kartenbeschreibung oder in englischer Sprache auf unserer Web-Seite als PDF-Dokument unter:

Datenblatt 8255 Port-Baustein von INTEL
Datenblatt 8255 Port-Baustein von HARRIS
PCI-Dekoder und I/O-Port-Adressierung



Einfache I/O-Port-Ansteuerung unter Windows NT
Windows NT verbietet standardmäßig den Zugriff auf Ein-Ausgabeadressen (Ports). Es ist aber möglich, einzelne Ports oder auch alle Ports für eine Anwendung freizugeben. Ein entsprechendes Programm, ein Device-Treiber, stammt aus dem Internet bzw. ist auch als Source-Beispiel auf der MSDN DDK-CD von Microsoft enthalten.

Die Literaturstelle dazu ist:
Dale Roberts
Direct Port I/O and Windows NT
Dr.Dobb's Journal

Von Dale Roberts wird der Treiber GIVEIO.SYS und ein Treiber -Installationsprogramm für Windows NT - INSTDRV.EXE zur Verfügung gestellt. In einem DOS-Consolen-Fenster ( unter NT ) erfolgt dann die Installation mit: INSTDRV GIVEIO <Pfadname>\GIVEIO.SYS

Da unter NT die Hardwaretreiber normalerweise im Verzeichnis %SystemRoot%\system32\drivers stehen, ist es üblich, den Treiber GIVEIO.SYS vorher auch dorthin zu kopieren. Für <Pfadname> ist dann folglich %SystemRoot%\system32\drivers einzusetzen. Damit der Treiber nach jedem Rechnerstart automatisch zur Verfügung steht, ist er mit der Systemsteuerung entsprechend einzustellen: Control Panel->Devices->GIVEIO->Start Up->Automatic. Ein Programm, das Portzugriffe ausführen will, muß den Treiber zuvor aufrufen, damit für dieses Programm die Ports entsprechend freigegeben werden. Folgende Programmzeilen sind in das eigene Programm einzufügen:

#include <windows.h>
int main (void )
{
.....
HANDLE h;
h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(h == INVALID_HANDLE_VALUE)
{
printf("giveio nicht installiert!\n");
return (-1);
}
CloseHandle(h);
......
}
 

Die Original-Pinbelegung des 40pol. 8255 :


KOLTER ELECTRONIC ist nicht für die Inhalte fremder Seiten verantwortlich.
Es gelten ausschließlich die AGB der Firma KOLTER ELECTRONIC.
Für die Richtigkeit der Angaben wird keine Gewähr übernommen.
Alle Preisangaben sind gewerblich. Das Zahlungsmittel ist EURO.
Alle Rechte vorbehalten. (c) copyright H.Kolter

[ Zur KOLTER ELECTRONIC® Hauptseite ]