| Das eBook Angewandte Mikroelektronik wurde von Hans Lohninger zur Unterstützung verschiedener Lehrveranstaltungen geschrieben. Weitere Informationen finden sie hier. |
|

Home Periphere Bausteine Parallele Schnittstelle 16-Bit-Parallelschnittstelle mit Registern |
||||
| Siehe auch: Parallele Schnittstelle, Z80-PIO (Z8420) | ||||
|
||||
16-Bit-Parallelschnittstelle mit Registern
Im Folgenden soll die einfache Realisierung einer 16-Bit-Parallelschnittstelle gezeigt werden, die nur eine Richtung der Datenübertragung ermöglicht und mit der zwei 7-Segment-Ziffern angesteuert werden. Die Schnittstelle wird durch zwei 8-Bit-Latches vom Typ 74LS574 konstruiert, die vom 8-Bit-Mikroprozessor mit zwei verschiedenen I/O-Adressen angesteuert werden. Die entsprechende Schaltung:
Das Select-Signal und die Adressleitung A0 decodieren zwei aufeinanderfolgende Adressen im I/O-Adressraum des Mikroprozessors. Man beachte, dass auf eine gesonderte Read/Write-Umschaltung verzichtet wurde, da mit dieser Schnittstelle Daten ohnehin nur in eine Richtung übertragen werden können. Ein Lesebefehl würde die Register zwar ansprechen, jedoch wäre der Zustand der Ausgänge nicht definiert.
Ein mögliches Programm zur Ansteuerung dieser Schnittstelle ist unten aufgelistet. Es erlaubt, eine beliebige 8-Bit-Zahl als zweistellige hexadezimale Zahl auf dem Display auszugeben. Die Ausgabe geschieht in zwei Schritten: Zuerst wird die niederwertige Ziffer ausgegeben, dann die höherwertige. Jede Ziffer wird über eine Tabelle (DIGTAB) in die entsprechenden 7-Segmentkombinationen umgesetzt und dann an die Parallelschnittstelle ausgegeben. Die Ansteuerungsroutine ist als Unterprogramm geschrieben, das als Parameter die auszugebende Zahl im AKKU erhalten muss.
;
DIG1 EQU $xx ;Adresse LOW digit
DIG2 EQU $xx ;Adresse HIGH digit
;
;====================================================
;--- Ausgabe einer hexadezimalen Zahl ---------------
;====================================================
;
;ENTRY: AKKU enthält Zahl (0-255)
;EXIT: Hexadezimale Repräsentation am Display
;
OUTA: PUSH AF ;high digit sichern
AND $0F ;low digit maskieren
LD HL,DIGTAB ;Zifferntabelle
ADD A,L ;Einspringpunkt
LD L,A ; berechnen
LD A,0
ADC A,H
LD H,A
LD A,(HL) ;7-Segmentcode laden
CPL
OUT (DIG1),A ;Ziffer ausgeben
POP AF ;ursprüngliche Zahl
AND $F0 ;high digit maskieren
RRCA
RRCA
RRCA
RRCA
LD HL,DIGTAB ;Einspringpunkt
ADD A,L ; berechnen
LD L,A
LD A,0
ADC A,H
LD H,A
LD A,(HL) ;7-Segmentcode
CPL
OUT (DIG2),A ;Ziffer ausgeben
RET
;
DIGTAB: DEFB $3F,$06,$5B,$4F,$66,$6D,$7D,$07
DEFB $7F,$6F,$77,$7C,$39,$5E,$79,$71
;
|
||||
Home Periphere Bausteine Parallele Schnittstelle 16-Bit-Parallelschnittstelle mit Registern |
||||