Hallo,
ich möchte an meinen µ einen 8255 zur Porterweiterung anschließen.
Weiß jemand, wie man diesen Programmieren kann. Hat jemand dafür
Beispiele in C? Kennt jemand eine entsprechende Webseite?
mfG
Digger
Ich habe den das letzte Mal vor mehreren Jahren programmiert. Kann mal
suchen, müßte irgendwelche Beispiele finden. Allerdings in
8085-Assembler. Wenn Dir das was nützt melde Dich.
Ich kann mich daran erinnern, daß der 8255 drei Ports mit 8 Bit hat, die
Du als Ein- oder Ausgänge programmieren kannst. Jeder dieser Port hat
eine eigene Adresse, die meiner Meinung nach, fortlaufend ist. An die 4.
Adresse mußt Du das Steuerwort reinschreiben. Hiermit wird festgelegt,
ob die Ports Ein/Ausgänge sind. Wenn ich mich richtig erinnere, ist der
Port C teilbar in 2 x 4 Bit. Hier auch wieder individuell festzulegen ob
Eingang oder Ausgang. Mit dem Reset-Signal werden alle Ports als
Eingänge zurückgesetzt.
Die Eingänge RD/WR, mit denen festgelegt wird, ob der 8255 Daten liest
oder schreibt sind Low-Aktiv.
Wie bereits gesagt, alle Angaben unter Vorbehalt, da aus der Erinnerung
gekramt.
Hallo Digger,
wie du vielleicht schon weißt, benimmt sich der 8255 wie ein Speicher.
D.h. du schließt 8 Datenleitungen, Schreib- und Leseleitung an, und
baust einen kleinen "Adressdekonder", der das CE-Signal (Chip Enable)
erzeugt.
An einen AVR kannst du ihn auf zwei Arten anschließen:
1.) Als (externen) Speicher, dies funktioniert nicht mit allen AVR's.
Dazu brauchst du ein sogenanntes "XRAM" Interface. z.B. der AT90S8515
hat eins. An dieses XRAM-Interface schliesst du ein Latch an, um die 8
Datenleitungen und die unteren 8 Adressleitungen zu bekommen ...
2.) Du kannst ihn aber auch an ganz gewöhliche Portleitungen
anschließen. Dabei musst du aber alle Steuersignale selber erzeugen ...
Des weiteren benötigst du ein Datenblatt ...
Gruß
Matthias
Hallo Digger,
es stellt sich die Frage, ob die Lösung mit dem 8255 etwas bringt, denn
von den ohnehin schon knappen Portleitungen gehen ja nochmal einige
(D0-D7, IOW, IOR, A0, A1, ...) für die Ansteuerung des 8255 verloren.
D.h. der 8255 bringt zwar 24 Portleitungen, unterm Strich sind es jedoch
nur 12 Leitungen mehr.
Falls Deine µC-Anwendung nicht so zeitkritisch ist, kommt auch eine
Lösung mit Schieberegistern mit Latches (74HC49?) in Frage. So lassen
sich beispielsweise 24 weitere Ausgänge realisieren, die allerdings nur
3 Leitungen zur Ansteuerung benötigen. Bei den Eingängen verhält es sich
ähnlich.
In dem Beitrag hier findest Du noch einige weitere nützliche
Informationen zu dem Thema:
http://www.engineerbob.com/articles/digio.pdf
Siegfried
Hallo,
oder Du benutzt die I2C Schnittstelle der AVR's und pro 8 I/O Leitungen
einen PCF8574 (kostet 2 Pins SLC/SDA). Da der PCF8574 auch noch einen
INT-Ausgang hat kannst Du bei Eingangsänderungen einen Interrupt am AVR
auslösen.
Gruß
Jörg
Hallo Digger,
habe Dir mal unten einen kleinen Auszug aus einem Assembler-Programm
gepostet.
Wie Dir bereits von Matthias geschrieben wurde, brauchst Du unbedingt
ein Datenblatt.
Finde mein Handbuch über alle 8XXX Typen im Moment nicht da ich mit dem
Teil schon länger nichts mehr gemacht habe.
Früher gab es das mal von Siemens und nannte sich uP-Bausteine
Peripherie oder so ähnlich. Dort waren alle Bausteine wie
der alle Peripherie-Bausteine die zu den Prozessoren 8080/8085 gehörten,
ausführlichst beschrieben.
Daher nur das was ich in meinem Sammelsurium noch finden konnte:
D0-D7 Datenbus (Zweiweg)
RESET Rücksetzeingang
CS Bausteinauswahl (Low-Aktiv)
RD Leseeingang (Low-Aktiv)
WR Schreibeingang (Low-Aktiv)
A0,A1 Kanaladresse
Pa0 - Pa7 Kanal A (Bit 0 - 7)
Pb0 - Pb7 Kanal B (Bit 0 - 7)
Pc0 - Pc7 Kanal C (Bit 0 - 7)
Der 8255 kann in drei Betriebsarten arbeiten:
Betriebsart 0: Einfache Ein/Ausgabe
Betriebsart 1: Getastete Ein/Ausgabe
Betriebsart 2: Zweiwegbus
Es sind jeweils 12 Ports in einer Gruppe in der jeweiligen Betriebsart
zu programmieren.
Zur Gruppe A gehören Port A und Port C, höherwertige Bits (C7 - C4)
Zur Gruppe B gehören Port B und Port C, niderwertige Bits (C3 - C0)
Das Steuerwort besteht aus 8 Bit und hat folgendes Format:
D7 - Betriebsartenkennzeichen
1 = aktiv
D5/6 - Wahl der Betriebsart Gruppe A
00 = Betriebsart 0
01 = Betriebsart 1
1X = Betriebsart 2
D4 - Port A 1 = Eingabe 0 = Ausgabe Gruppe A
D3 - Port C höherwertige Bits 1 = Eingabe 0 = Ausgabe Gruppe A
D2 - Wahl der Betriebsart Gruppe B
0 = Betriebsart 0
1 = Betriebsart 1
D1 - Port B 1 = Eingabe 0 = Ausgabe Gruppe B
D0 - Port C niederwertige Bits 1 = Eingabe 0 = Ausgabe Gruppe B
cseg
porta1 equ 80h
portb1 equ porta1+1
portc1 equ porta1+2
str1 equ porta1+3
porta2 equ 60h
portb2 equ porta2+1
portc2 equ porta2+2
str2 equ porta2+3
; ********************** Initialisierung
***********************************
init: mvi a,80h ; 8255/1 in Betriebsart 0, alle Ports
Ausgaenge
out str1 ; Port A und C fuer LCD, Port B fuer
Tastatur
mvi a,83h ; 8255/2 Port A, obere 4 Bits Port C
Ausgaenge
out str2 ; fuer Drucker, Port B Eingang fuer
Tastatur
mvi a,83h ; 8255/3 alle Ports Ausgaenge A3-A5
Steuerung
out str3 ; der Zaehler
Ich hatte allerdings (wie meine Vorschreiber) von Anfang an meine
Zweifel ob der 8085 für einen
Controller das richtige ist. Aber ich weiss ja nicht, was Du damit
machen
willst, vielleicht ist es ja doch die Lösung die Du brauchst
(Betriebsart 2?)
Hallo,
ich habe das bzw. die Bücher, die Andreas beschreibt:
- "Mikrocomputer Bausteine - Mikroprozessor-System SAB 8085" von 1980/81
- "Mikrocomputer Bausteine - Peripherie" von 1979/80
falls wirklich der Bedarf besteht, bzw. sich keine Datenblätter im
Internet finden lassen, kann ich die Seiten (41!) scannen ...
Gruß
Matthias