MTB/DAUASM ;*************************************** ; ; ;DAU-Test durch internen Komparator ; ; ;10 BIT-Umsetzung ; ;Komparatorfunktion:UXUY FFH 1 ; ;*************************************** VERT EQU 0F003H ;SYSTEMVERTEILER FEHLER EQU 0C01DH ;FEHLER-UP STR EQU 0E3H ;STRUKTURBYTE ;KOMP.-WERT 0 ANFX EQU 002H ;ANFANGSWERT X ANFY EQU 008H ;ANFANGSWERT Y ANZ EQU 7F0CH ;WERTEZAEHLER ;7F=127 REF.- ;Werte ;0C=12 Ver- ;gleichswerte / ;Referenz ABR EQU 0CH ;Abbruchz{hler ;Werte/Ref. ADD EQU 08H ;REF=REF+ADD GRENZ EQU 04H ;Grenzwert X DX EQU 44H ;I/O Kanal X ;Register 1 DY EQU 45H ;I/O Kanal Y ;Register 2 DXY EQU 46H ;I/O Kanal XY ;Register 2 U. 3 DR EQU 47H ;Relais ;*************************************** ; HAUPTPROGRAMM ;*************************************** ORG XXXXH DAU: CALL INIT ;Initialisierung CALL OUT ;Kanalausgabe LD HL,ANFX LD DE,ANFY LD BC,ANZ KO1: XOR A EX AF,AF' ;AF'=0 PUSH HL ;X-Wert KO2: PUSH BC ;Z{hler PUSH HL ;X-Wert PUSH DE ;Y-Wert EX DE,HL PUSH DE LD C,000H CALL SETY ;Berechne Y-Wert POP HL CALL SETX ;Berechne X-Wert CALL OUT ;Kanalausgabe LD A,1 ;Wait CALL VERT DEFB 14H IN A,DR ;Komparatorwert ;lesen CP STR JR NZ,KOK ;UX>UY EX AF,AF' OR 1 ;AF'=1 wenn E3 EX AF,AF' POP DE POP HL ;X-Wert INC HL ;X=X+1 POP BC DEC C ;Abbruchz{hler ;-1 JR NZ,KO2 POP HL KOER: CALL FEHLER ;Fehler RET KOK: EX AF,AF' CP 1 ;war vorher E3 ? JR Z,KOK1 KOK12: POP DE POP HL POP BC JR KOER ;Fehler KOK1: POP HL ;Y POP DE ;X PUSH DE PUSH HL PUSH DE PUSH HL LD BC,GRENZ XOR A SBC HL,BC ;Y-GRENZ EX DE,HL XOR A SBC HL,DE ;X-(Y-GRENZ) JR C,KOK21 POP HL ;Y ADD HL,BC ;Y+GRENZ POP DE ;X XOR A SBC HL,DE ;(Y+GRENZ)-X JR C,KOK12 JR KOK22 KOK21: POP HL POP DE JR KOK12 KOK22: POP HL ;Y-WERT LD DE,ADD ADD HL,DE EX DE,HL ;Y=Y+40H POP HL POP BC POP HL ;X-Wert PUSH DE LD DE,ADD ADD HL,DE ;X=X+40H POP DE LD C,ABR ;Abbruchz{hler ;aktualisieren DJNZ KO1 XOR A OUT DR,A ;Relais off RET ;*************************************** ; MODUL SCHALTEN ;PE:D STEUERBYTE ;*************************************** ;MODU: LD L,MODSCH ; LD A,2 ; LD E,D ; CALL VERT ; DEFB 26H ; RET ;*************************************** ; INITIALISIERUNG ;KANAL X U. Y NULLSETZEN ;*************************************** INIT: LD D,080H LD E,D LD C,000H RET ;*************************************** ; Kanalausgabe ; ;D:=X-REGISTER ;E:=Y-REGISTER ;C:=XY-REGISTER ;*************************************** OUT: LD A,D OUT DX,A LD A,E OUT DY,A LD A,C OUT DXY,A RET ;*************************************** ; Berechne X-Kanalregisterwert ;PE:HL X-Wert ;PA:DC X-Registerwert ;*************************************** SETX: PUSH HL LD A,L SLA A RL H SLA A RL H LD B,004H SX1: RLA RL H DJNZ SX1 LD D,H LD B,004H SX2: RLCA DJNZ SX2 AND 00FH OR C LD C,A POP HL RET ;*************************************** ; Berechne Y-Kanalregisterwert ;PE:HL Y-Wert ;PA:EC Y-Registerwert ;*************************************** SETY: PUSH HL LD A,L SLA A RL H SLA A RL H LD B,004H SY1 RLA RL H DJNZ SY1 LD E,H AND 0F0H OR C LD C,A POP HL RET ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ