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


Nicht initialisierte Interrupts ignorieren

;===================================================
;------ INTERRUPT: receiver DART-A full ------------
;===================================================
;
            .GLOBAL GETICA
GETICA:     PUSH    AF
            PUSH    HL
            PUSH    DE
            PUSH    BC
            IN      A,(DARTAD)  ;Zeichen einlesen
;
$5:         LD      HL,CNTRLA
            DEC     (HL)        ;Control-Bearbeitung
            INC     (HL)        ;  ein ?
            JR      Z,$2
;
            IFA.NE. 'S'-40H,$3  ;^S ?
            LD      HL,STPOTA
            LD      (HL),TRUE   ;Ausgang stoppen
            JR      $1
;
$3:         IFA.NE. 'Q'-40H,$6  ;^Q ?
            LD      HL,STPOTA
            LD      (HL),FALSE  ;Ausgang starten
            CALL    TRMDTA
            JR      $1
;
$6:         IFA.EQ. 'C'-40H,$4  ;^C ?
;
$2:         LD      HL,VARDBF   ;Zeichen in FIFO
            CALL    WRFIFO
            LD      HL,VARDBF   ;RTS gesetzt ?
            CALL    TSTFIF
            CP      0FAH        ;mehr als 250 Zeichen
            JR      C,$1        ;  im Puffer ?
            LD      A,5
            OUT     (DARTAC),A
            LD      A,(DAREG5)
            RES     1,A
            LD      (DAREG5),A
            OUT     (DARTAC),A  ;RTS rücksetzen
$1:         POP     BC
            POP     DE
            POP     HL
            POP     AF
            EI
            RETI
;
$4:         LD      HL,WARM     ;Warmstart
            PUSH    HL
            LD      HL,STPOTA   ;Ausgang ein
            LD      (HL),FALSE
            EI
            RETI
;
;===================================================
;----- read character from DART A ------------------
;===================================================
;
;ENTRY:     -
;EXIT:      CF = 1, falls kein Zeichen vorhanden
;           CF = 0, falls Zeichen gültig
;           Zeichen in Akkumulator
;
            .GLOBAL RDV24A
RDV24A:     PUSH    HL
            PUSH    BC
            LD      HL,VARDBF   ;RTS gesetzt
            CALL    TSTFIF
            CP      100         ;weniger als 100
            JR      NC,$1       ;  Zeichen im Puffer ?
            LD      A,5
            OUT     (DARTAC),A
            LD      A,(DAREG5)
            SET     1,A
            LD      (DAREG5),A
            OUT     (DARTAC),A  ;RTS rücksetzen
$1:         LD      HL,VARDBF
            CALL    RDFIFO
            POP     BC
            POP     HL
            RET


Last Update: 2008-05-31