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


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:

Einfache 16-Bit-Parallelschnittstelle

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.

Die Leuchtdiodensegmente werden über Widerstände zur Strombegrenzung direkt an die Ausgänge der Register angeschlossen. Die 7-Segment-Anzeigen müssen Typen mit gemeinsamer Anode sein, da nur in dieser Konfiguration die Register genügend Strom liefern können (der vom Baustein LS574 lieferbare Strom im LOW-Zustand beträgt maximal 24 mA pro Ausgang, im HIGH-Zustand jedoch nur 2.6 mA). Dies bedingt, dass die Ausgänge invertiert angesteuert werden müssen (LOW = Leuchtdiode ein), was aber mit Hilfe des Mikroprozessors ohne Probleme bewältigt werden kann.

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
;


Last Update: 2008-05-31