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


Digitalvoltmeter

;===================================================
;---- Experiment: Digitalvoltmeter -----------------
;===================================================
;
            .GLOBAL DVM
DVM:        CALL    SETMUX      ;Multiplexer setzen
            CALL    GETADC      ;Wert von ADC holen
            IN      A,(DIPSW)   ;Verstärkungsfaktor
            AND     07          ;Wert anpassen
            JR      Z,$7
            LD      B,A
$3:         SRA     H           ;durch Schieben
            RR      L
            DJNZ    $3
$7:         EX      DE,HL
            LD      BC,20000    ;skalieren
            CALL    MLT32S
            EX      DE,HL
            CALL    DSPHL       ;Ausgabe auf Display
            LD      C,4         ;Dezimalpunkt
            CALL    SETDP
            LD      HL,50000    ;350 ms warten
            CALL    DELAY
            JR      DVM
;
;===================================================
;---- MUX-Kanal und Verstärkung einstellen ---------
;===================================================
;
;ENTRY:     DIP-switch
;                       Bit 0..2: Verstärkungsfaktor
;                       Bit 4..6: Kanalnummer
;EXIT:      MUX entsprechend eingestellt, S&H gestartet
;
SETMUX:     PUSH    AF
            PUSH    BC
            IN      A,(DIPSW)   ;Kanaladr. berechnen
            LD      C,MUXBAS
            AND     0F0H
            SRL     A
            SRL     A
            SRL     A
            SRL     A
            ADD     A,C
            LD      C,A
            IN      A,(DIPSW)   ;Verstärkungsfaktor
            AND     07H
            OUT     (C),A       ;MUX einstellen,
            POP     BC          ;  S&H starten
            POP     AF
            RET
;
;===================================================
;---- AD-Wandler starten, Ergebnis lesen -----------
;===================================================
;
;ENTRY:     -
;EXIT:      Wert vom ADC x16 als 2er-Komplement
;
GETADC:     PUSH    AF
            PUSH    DE
            LD      A,0
            OUT     (ADCHI),A   ;ADC (12 bit) starten
            BIT     0,(IX)      ;warten bis ADC fertig
            BIT     0,(IX)
            BIT     0,(IX)
            BIT     0,(IX)
            BIT     0,(IX)
            IN      A,(ADCHI)   ;Wert holen
            XOR     80H         ;2er-Kompl. erzeugen
            LD      H,A
            IN      A,(ADCLO)
            LD      L,A
            POP     DE
            POP     AF
            RET


Last Update: 2008-05-31