mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PPI 8255 Initialisieren


Autor: Evans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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):
/*PPI 8255 initialisieren
PORT A -> Input
Mode 0 -> Byte Ein- und Ausgabe
Port B -> Input
Mode 0 -> Byte Ein- und Ausgabe
Port C -> Dont Care

Basisadresse 200H
*/

//Initialisierung PPI
//D7 D6 D5 D4 D3 D2 D1 D0
// 1  0  0  1  0  0  1  0  ->0x92


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ß!

Autor: xxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Evans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so?
char x,y

//Einlesen:
x=inp(0x100); //Port A
y=inp(0x101); //Port B

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

Autor: G. O. (aminox86)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.