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 |