Forum: Mikrocontroller und Digitale Elektronik PPI 8255 Initialisieren


von Evans (Gast)


Lesenswert?

Hallo Leute,

ich stehe gerade etwas auf dem Schlauch:
ich möchte einen PPI 8255 Initialisieren.

Port A und B sollen einlesen. Port C wird nicht verwendet.
Basisvektor lautet: 100H
Ich habe das wie folgt (grob):
1
/*PPI 8255 initialisieren
2
PORT A -> Input
3
Mode 0 -> Byte Ein- und Ausgabe
4
Port B -> Input
5
Mode 0 -> Byte Ein- und Ausgabe
6
Port C -> Dont Care
7
8
Basisadresse 200H
9
*/
10
11
//Initialisierung PPI
12
//D7 D6 D5 D4 D3 D2 D1 D0
13
// 1  0  0  1  0  0  1  0  ->0x92
14
15
16
outp(0x200,...)

ich bin mir jetzt nicht mehr so sicher,wie ich das Statusregster 
initialisiere,also welche port auf In oder Out, welche Mode jeweils und 
so weiter.
Vielleicht habt ihr einen kleinen Hinweis

Besten Gruß!

von xxx (Gast)


Lesenswert?


von Evans (Gast)


Lesenswert?

so?
1
char x,y
2
3
//Einlesen:
4
x=inp(0x100); //Port A
5
y=inp(0x101); //Port B

was mache ich mit dem Steuerwort?Muss ich das nicht,ähnlich wie bei 
einem PIT ,ausgeben?

von G. O. (aminox86)


Lesenswert?

82X55, der gute alte Parallelbus läßt grüßen.
Die Initialisierung bei den Peripheriebausteinen der 82XX-Serie läuft 
immer nach dem gleichen Muster ab:
  - Baustein für die gewünschte Betriebsart vorbereiten, dh in
    das Kommandoregister wird ein passendes Steuerwort(-Bitkombination)
    eingeschrieben
  - Arbeit mit dem Baustein aufnehmen
Wenn Daten über Port A und B eingelesen werden sollen und Port C 
ignoriert werden kann , muß der 8255 in Betriebsart 0 konfiguriert 
werden. Für das Kommandobyte sind daher folgende Bitkombinationen ltd 
Datenblatt(Siemens Datenbuch 1979/80) möglich:
  Bit 7, 6, 5, 4, 3, 2, 1, 0
      1  0  0  1  0  0  1  0  -> 0x92
      1  0  0  1  0  0  1  1  -> 0x93
      1  0  0  1  1  0  1  0  -> 0x9a
      1  0  0  1  1  0  1  1  -> 0x9b
In Betriebsart 0 gilt: Ein gesetztes Bit konfiguriert den entsprechenden 
Port als Eingang und vice versa, wobei Bit 4 Port A, Bit 3 Port C MSB, 
Bit 1 Port B, Bit 0 Port C LSB zugeordnet ist. Das gesetzte Bit7 ist für 
die Funktion "Betriebsart-Setzen" notwendig, alle übrigen Bit müssen 0 
sein.

Die Port A, B, C und das Kommandoregister lassen sich über interne 
Register ansprechen, die in Bezug auf die Basisadresse 'hintereinander' 
angeordnet sind.

.
.
#define PPI_Basis Basisadresse
#define Port_A    0
#define Port_B    1
#define Port_C    2
#define Kommand   3
#define PAB_IN    0x92  /*oder... s.o.*/
.
.
/*8255 in Betriebsart 0 konfigurieren: Dateneingabe über Port A,B */
*(unsigned char *)(PPI_Basis+Kommand)=PAB_IN;
/* Daten von Port A einlesen*/
pa=*(unsigned char*)(PPI_Basis+Port_A);
.
.
usw
Zu beachten bleibt noch, dass die aktiven Steuer- und Datensignale 
Mindestzeiten von ca 500ns nicht unterschreiten sollten, 'sind halt 
betagte Teile.
mfg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.