intel's mcs-51 family of microcontrollers and its derivatives are ... · execute the program...
TRANSCRIPT
DUAL SLOPE ADC INTERFACE
1
CONTENTS
PAGE NO
1.0 Introduction 2
2.0 Description of the Circuit 2
3.0 Installation 3
4.0 Demonstration Examples 4
4.1 Demonstration Program for MPS 85-3 Trainer 4
4.2 Demonstration Program for ESA 85-2 Trainer 6
4.3 Demonstration Program for ESA-65 Trainer 7
4.4 Demonstration Program for ESA-31 Trainer 8
4.5 Demonstration Program for ESA-68K Trainer 10
4.6 Demonstration Program for ESA 196 Trainer 12
4.7 Demonstration Program for ESA 86/88-2 Trainer 13
4.8 Demonstration Program for ESA 68-2 Trainer 15
4.9 Demonstration Program for ESA 68K-2 Trainer 17
4.10 Demonstration Program for ESA-51 Trainer 18
4.11 Demonstration Program for ESA 86/88-3 Trainer 20
4.12 Demonstration Program for ESA 51E Trainer 22
4.13 Demonstration Program for ESA 86/88E Trainer 24
Appendix A : Component Layout Diagram
Appendix B : Schematic Diagram
DUAL SLOPE ADC INTERFACE
2
DUAL SLOPE ADC INTERFACE
1.0 INTRODUCTION
ELECTRO SYSTEMS ASSOCIATES PVT. LTD, manufactures trainers, for popular
microcomputers viz 8085, 6502, Z-80, 8031, 8051, 8086/8088, 68000 and 6809. ESA offers a
variety of modules which can be interfaced to these trainers. This manual describes one such
interface, DUAL SLOPE ADC INTERFACE.
Analog to digital conversion can be done in many ways. One of the methods is the Dual slope
method used to achieve high noise immunity.
The input voltage Vx is integrated for a fixed time Tr. Also a known reference voltage Vr is
integrated for a time Tx. Now the input voltage Vx is given by
Vr
Vx = ---- Tx
Tr
Vr
But ---- = K (a constant)
Tr
Hence Vx = K. Tx
i.e, the input voltage is proportional to the measured time Tx.
If the integration time Tr is chosen as 20 ms, the mains hum can be suppressed. The
microprocessor measures time as the number of counts, namely
Tx = Nx. Tc
where Nx = Number of counts
Tc = Counter period.
By proper choice of the counter period Tc, scaling can be incorporated into the counter such
that a software multiplication can be avoided.
2.0 DESCRIPTION OF THE CIRCUIT
As seen from the circuit diagram, LM339 is a quad differential comparator of which three
comparators are used to trigger the bi-lateral switches present in CD4066. The LM308 OPAMP
DUAL SLOPE ADC INTERFACE
3
is used as an integrator. Finally the LM311 is used as the differential comparator. The steps
carried out by the Microprocessor for A/D conversion are as follows:
1. Switch SW1 is ON to reset the integrator. This can be accomplished by setting pin 7 of the
LM339 high (ie by sending a high on bit 1 of port A.) which inturn triggers the bilateral
switch of CD 4066, and the required delay can be introduced in software.
2. Switch SW2 on and start the counter at count N. This is done by sending a high on bit 0 of
port A and by decrementing the count to zero. It is during this that the analog input is
integrated.
3. After the counter counts down to zero, switch SW3 is ON and starts the counter again. This is
done by sending a high on bit 2 of port A. It is during this period that the reference voltage is
integrated.
4. Stop the counter when the LM311 comparator output changes its state and read the timer
count. This is done by sampling the bit 0 of port B which inputs the comparator output.
The waveforms of this dual slope ADC are as shown in the figure.
3.0 INSTALLATION
The interface is housed in a plastic enclosure which has a locking mechanism. To open the cover,
push in the locking mechanism with a finger and lift the cover to open.
The interface module has a 26-pin connector at one edge of the card. This is used for connecting
the interface to the trainer with a flat cable connector. The +5V DC power required by this
interface is drawn from the trainer via the flat cable connector.
Table 3-1 shows the connector on various trainers to which this interface can be connected. Some
trainers have two connectors and either may be used for connecting this interface. The
demonstration programs presented in this manual assume that the interface is connected to
connectors shown in column A. If the connector shown in column B is used, then user has to
DUAL SLOPE ADC INTERFACE
4
change the port addresses appropriately. User may refer to the component layout diagrams of
respective ESA trainers to locate the connectors mentioned here.
TABLE-3.1
MICROPROCESSOR
TRAINER
A B
MPS85-3 J2 J1
ESA85-2 J2 J1
ESA-80 J2 J1
ESA-65 P4
ESA-68K P3 P4
ESA 68K-2 J2 J1
ESA 68-2 J1 J6
ESA 196 J1 J2
ESA-31 J2 J1
ESA-51 J10 J7
ESA-51E J5 J3
ESA-86/88-2 J4 J5
ESA-86/88-3 J8 J9
ESA-86/88E J4 J6
Connect +12V and -12V as indicated. (The color code is yellow for +12 & green for -12). +5V
required for the interface board is taken from the trainer through the flat cable connector.
Hence no extra connection for +5V is needed. Connect the Analog voltage Vin to the tower tag
marked ANG IN (Maximum Voltage that may be given to this input is 5.6V).
4.0 DEMONSTRATION EXAMPLES.
A sample program is enclosed. Execute the program & observe the dual slope wave form at pin
number 6 of OPAMP LM308.
4.1 DEMONSTRATION PROGRAM FOR MPS 85-3 TRAINER
; Assume the interface is connected over J2 of the trainer.
; The trainer can be in KEYBOARD MODE or SERIAL MODE.
UPDAD EQU 0440H
DISPM EQU 0B5BH
UPDDT EQU 044CH
NMOUT EQU 0C41H
DUAL SLOPE ADC INTERFACE
5
SOUTPT EQU 0C2DH
ADDRESS OPCODE LABEL MNEMONIC COMMENTS
ORG 8C00H ; INITIALIZE 8255 IN
8C00 3E 82 MVI A,82H ; MODE 0. PORT A AS
8C02 D3 43 OUT 43H ; O/P, PORT B AS I/P.
8C04 DB 50 IN 50H
8C06 E6 08 ANI 08H ; CHECK FOR KEY
8C08 C2 25 8C JNZ KBD ; BOARD AND SERIAL
8C0B 21 59 8C LXI H,MSG ; MODE.
8C0E CD 5B 0B CALL DISPM ; SERIAL MODE.
8C11 CD 32 8C BACK: CALL CONVERT ; A/D CONVERSION
8C14 0E 08 MVI C,08H ; DELETE OLD VALUE
8C16 CD 2D 0C CALL SOUTPT
8C19 0E 08 MVI C,08H
8C1B CD 2D 0C CALL SOUTPT
8C1E 78 MOV A,B
8C1F CD 41 0C CALL NMOUT ; DISPLAY NEW VALUE
8C22 C3 11 8C JMP BACK
8C25 CD 32 8C KBD: CALL CONVERT ; KEY BOARD MODE
8C28 78 MOV A,B
8C29 32 F1 8F STA 8FF1H
8C2C CD 4C 04 CALL UPDDT ; DISPLAY VALUE
8C2F C3 25 8C JMP KBD
8C32 3E 02 CONVERT: MVI A,02H ; CONVERSION ROUTINE
8C34 D3 40 OUT 40H
8C36 00 NOP ; RESET INTEGRATOR
8C37 00 NOP
8C38 00 NOP
8C39 3E 01 MVI A,01H
8C3B D3 40 OUT 40H
8C3D 21 C0 02 LXI H,2C0H ; START COUNTER
8C40 2B L1: DCX H ; INTEGRATE ANALOG
8C41 7C MOV A,H ; Vin FOR KNOWN
8C42 B5 ORA L ; PERIOD OF TIME
8C43 C2 40 8C JNZ L1
8C46 3E 04 MVI A,04H ; FEED Vref
8C48 D3 40 OUT 40H
8C4A 06 00 MVI B,00H
DUAL SLOPE ADC INTERFACE
6
8C4C 04 TVAR: INR B
8C4D DB 41 IN 41H ; CHECK COMPARATOR
8C4F E6 01 ANI 01H ; FOR CHANGE OF VALUE
8C51 C2 4C 8C JNZ TVAR ; IF NO CHANGE
8C54 3E 02 MVI A,02H ; CONTINUE SAMPLING
8C56 D3 40 OUT 40H ; RESET INTEGRATOR
8C58 C9 RET
8C59 0D 0A 44 49 47 MSG: DB 0DH,0AH,'DIGITAL VALUE = ',00H
8C5E 49 54 41 4C 20
8C63 56 41 4C 55 45
8C68 20 3D 20 20 20
8C6D 00
4.2 DEMONSTRATION PROGRAM FOR ESA 85-2 TRAINER
; Assume the interface is connected over J2 of the trainer.
; The trainer can be in KEYBOARD MODE or SERIAL MODE.
UPDAD EQU 0440H
DISPM EQU 0B5BH
UPDDT EQU 044CH
NMOUT EQU 0C41H
SOUTPT EQU 0C2DH
ADDRESS OPCODE LABEL MNEMONIC COMMENTS
ORG 8C00H
8C00 3E 82 MVI A,82H ; INITIALIZE 8255 IN;
8C02 D3 43 OUT 43H ; MODE 0. PORT A AS O/P,
8C04 DB 70 IN 70H ; PORT B AS I/P.
8C06 E6 08 ANI 08H ; CHECK FOR KEY
8C08 C2 25 8C JNZ KBD ; BOARD AND SERIAL
8C0B 21 59 8C LXI H,MSG ; MODE.
8C0E CD 04 0B CALL DISPM ; SERIAL MODE.
8C11 CD 32 8C BACK: CALL CONVERT ; A/D CONVERSION
8C14 0E 08 MVI C,08H ; DELETE OLD VALUE
8C16 CD B9 0B CALL SOUTPT
8C19 0E 08 MVI C,08H
8C1B CD B9 0B CALL SOUTPT
8C1E 78 MOV A,B
8C1F CD 11 0C CALL NMOUT ; OUTPUT NEW VALUE
8C22 C3 11 8C JMP BACK
DUAL SLOPE ADC INTERFACE
7
8C25 CD 32 8C KBD: CALL CONVERT ; KEY BOARD MODE
8C28 78 MOV A,B
8C29 32 75 FE STA FE75H
8C2C CD 78 05 CALL UPDDT ; DISPLAY VALUE
8C2F C3 25 8C JMP KBD
8C32 3E 02 CONVERT: MVI A,02H ; CONVERSION ROUTINE
8C34 D3 40 OUT 40H
8C36 00 NOP ; RESET INTEGRATION
8C37 00 NOP
8C38 00 NOP
8C39 3E 01 MVI A,01H ; FEED ANALOG VIN
8C3B D3 40 OUT 40H ; FOR KNOWN PERIOD
; OF TIME
8C3D 21 E0 02 LXI H,2E0H ; START COUNTER
8C40 2B L1: DCX H
8C41 7C MOV A,H
8C42 B5 ORA L
8C43 C2 40 8C JNZ L1
8C46 3E 04 MVI A,04H ; FEED Vref
8C48 D3 40 OUT 40H
8C4A 06 00 MVI B,00H
8C4C 04 TVAR: INR B
8C4D DB 41 IN 41H ; CHECK COMPARATOR
8C4F E6 01 ANI 01H ; FOR CHANGE OF VALUE
8C51 C2 4C 8C JNZ TVAR ; IF NO CHANGE
8C54 3E 02 MVI A,02H ; CONTINUE SAMPLING
8C56 D3 40 OUT 40H ; RESET INTEGRATOR
8C58 C9 RET
8C59 0D 0A 44 49 47 MSG: DB 0DH,0AH,'DIGITAL VALUE = ',00H
8C5E 49 54 41 4C 20
8C63 56 41 4C 55 45
8C68 20 3D 20 20 20
8C6D 00
4.3 DEMONSTRATION PROGRAM FOR ESA-65 TRAINER
; Assume the interface is connected over P4 of the trainer.
; The trainer can be in KEYBOARD MODE or SERIAL MODE.
UPDDT EQU FE59H
PORT_A EQU A040H
DUAL SLOPE ADC INTERFACE
8
PORT_B EQU A041H
CTRL_PRT EQU A043H
CRDISP EQU FE6CH
ADDRESS OPCODE LABEL MNEMONIC COMMENTS
ORG 1000H ; CONFIGURE 8255 IN
1000 A2 00 LDX #$00 ; MODE 0. PORT A AS
1002 20 6C FE JSR CRDISP ; O/P. PORT B AS I/P
1005 A9 82 START: LDA #$82
1007 8D 43 A0 STA CTRL_PRT
100A A9 02 LDA #$02 ; RESET INTEGRATOR
100C 8D 40 A0 STA PORT_A
100F EA NOP
1010 EA NOP
1011 A0 FF LDY #$FF
1013 A9 01 LDA #$01 ; FEEDS ANALOG Vin TO
1015 8D 40 A0 STA PORT_A ; THE INTEGRATOR
1018 88 TCON: DEY ; INTEGRATE ANALOG Vin
1019 EA NOP ; FOR A KNOWN PERIOD
101A EA NOP ; OF TIME
101B EA NOP
101C D0 FA BNE TCON
101E A9 04 LDA #$04 ; FEED Vref
1020 8D 40 A0 STA PORT_A
1023 88 DEY
1024 C8 TVAR: INY
1025 AD 41 A0 LDA PORT_B
1028 29 01 AND #$01 ; COMPARATOR CHANGED
102A D0 F8 BNE TVAR ; O/P?
102C 98 TYA ; NO, CONTINUE
102D A2 00 LDX #$00 ; SAMPLING
102F 20 59 FE JSR UPDDT ; DISPLAY THE COUNT
102F 4C 05 10 JMP START ; REPEAT INFINETELY.
4.4 DEMONSTRATION PROGRAM FOR ESA-31 TRAINER
; Assume the interface is connected over J2 of the trainer.
; The trainer can be in KEYBOARD MODE or SERIAL MODE.
CRLOUT EQU 1787H
DISPM EQU 164BH
DUAL SLOPE ADC INTERFACE
9
SEG EQU 0E8H
DISPD8 EQU 019BH
PUTBYTE EQU 185EH
SOUTPT EQU 160EH
ADDRESS OPCODE LABEL MNEMONIC COMMENTS
ORG 8000H
8000 75 A0 E1 MOV P2,#E1H ; READ DIP SWITCH
8003 E2 MOVX A,@R0 ; AND CHECK FOR
8004 20 E3 2B JB ACC.3,KBD ; SERIAL OR KEY BOARD
8007 90 80 79 MOV DPTR,#MSG ; MODE.
800A C2 D5 CLR PSW.5
800C 12 16 4B LCALL DISPM ; DISPLAY MESSAGE IN
800F 74 08 BACK: MOV A,#08H ; SERIAL MODE
8011 12 16 0E LCALL SOUTPT ; DELETE OLD VALUE.
8014 74 08 MOV A,#08H
8016 12 16 0E LCALL SOUTPT
8019 74 08 MOV A,#08H
801B 12 16 0E LCALL SOUTPT
801E 75 A0 E8 MOV P2,#SEG
8021 78 03 MOV R0,#03H ; INITIALIZE 8255
8023 74 82 MOV A,#82H ; PORT A AS O/P
8025 F2 MOVX @R0,A ; PORT B AS I/P
8026 12 80 49 LCALL FUNC
8029 E9 MOV A,R1 ; A/D CONVERSION
802A F5 71 MOV 71H,A
802C 12 18 5E LCALL PUTBYTE ; DISPLAY DIGITAL VALUE
802F 02 80 0F LJMP BACK
8032 75 A0 E8 KBD: MOV P2,#SEG ; KEY BOARD MODE
8035 78 03 MOV R0,#03H
8037 74 82 MOV A,#82H
8039 F2 MOVX @R0,A
803A 12 80 49 LCALL FUNC ; CALL CONVERSION
803D 75 F0 00 MOV B,#00H ; ROUTINE
8040 E9 MOV A,R1
8041 F5 60 MOV 60H,A
8043 12 01 9B LCALL DISPD8 ; DISPLAY DIGITAL
8046 02 80 32 LJMP KBD ; VALUE
8049 74 02 FUNC: MOV A,#02H ; A/D CONVERSION
804B 78 00 MOV R0,#00H ; ROUTINE
804D F2 MOVX @R0,A
DUAL SLOPE ADC INTERFACE
10
804E 00 NOP ; RESET INTEGRATOR
804F 00 NOP
8050 00 NOP
8051 74 01 MOV A,#01H ; INTEGRATE ANALOG
8053 F2 MOVX @R0,A ; Vin FOR KNOWN PERIOD
8054 79 04 MOV R1,#04H ; OF TIME
8056 00 NOP ; INTEGRATION PERIOD
8057 00 NOP
8058 00 NOP
8059 00 NOP
805A 00 NOP
805B 7A FF MOV R2,#FFH
805D 19 TCON: DEC R1
805E 1A TCON1: DEC R2
805F BA 00 FC CJNE R2,#00H,TCON1
8062 B9 00 F8 CJNE R1,#00H,TCON
8065 74 04 MOV A,#04H ; FEED Vref
8067 F2 MOVX @R0,A
8068 79 00 MOV R1,#00H
806A 09 TVAR: INC R1
806B 78 01 MOV R0,#01H ; CHECK COMPARATOR
806D E2 MOVX A,@R0 ; FOR CHANGE OF
806E 54 01 ANL A,#01H ; VALUE
8070 B4 00 F7 CJNE A,#00H,TVAR
8073 74 02 MOV A,#02H ; RESET INTEGRATOR
8075 78 00 MOV R0,#00H
8077 F2 MOVX @R0,A
8078 22 RET
8079 0A 0D 44 49 47 MSG: DB 0AH,0DH,'DIGITAL VALUE = ',00H
807E 49 54 41 4C 20
8083 56 41 4C 55 45
8088 20 3D 20 20 00
4.5 DEMONSTRATION PROGRAM FOR ESA-68K TRAINER
; Assume the interface is connected over P3 of the trainer.
ADDRESS OPCODE LABEL MNEMONIC COMMENTS
DUAL SLOPE ADC INTERFACE
11
ORG 40600H
00040600 207C 0008 0306 MOVE.L #$80306,A0 ; INITIALIZE
00040606 10BC 0082 MOVE.B #$82,(A0) ; 8255 PORTS
0004060A 267C 0008 0302 MOVE.L #$80302,A3 ; PORT B I/P
00040610 247C 0008 0300 MOVE.L #$80300,A2 ; PORT A O/P
00040616 2C7C 0004 0681 MOVE.L #$MSG,A6 ; DISPLAY
0004061C 4EB8 1300 JSR $1300 ; MSEG.
00040620 2C7C 0004 067E START: MOVE.L #$SPAC,A6 ; DELETE OLD
00040626 4EB8 1300 JSR $1300 ; VALUE
0004062A 4EB9 0004 0642 JSR $FUNC ; CALL A/D
00040630 2241 MOVE.L D1,A1 ; CONVERSION
00040632 4EB8 0324 JSR $0324 ; ROUTINE
00040636 5C89 ADDQ.L #6,A1
00040638 2049 MOVE.L A1,A0 ; DISPLAY
0004063A 7002 MOVEQ #2,D0 ; DIGITAL
0004063C 4EB8 008C JSR $008C ; VALUE
00040640 60DE BRA $START
00040642 14BC 0002 FUNC: MOVEA.B #$02,(A2) ; CONVERSION
00040646 4E71 NOP ; ROUTINE
00040648 4E71 NOP ; RESET
0004064A 4E71 NOP ; INTEGRATOR
0004064C 14BC 0001 MOVE.B #$01,(A2) ; INTEGRATE
00040650 323C 0325 MOVE.W #$325,D1 ; Vin FOR A
00040654 5341 BACK: SUBQ.W #$01,D1 ; KNOWN
00040656 0C41 0000 CMPI.W #$00,D1 ; PERIOD OF
0004065A 66F8 BNE $BACK ; TIME
0004065C 14BC 0004 MOVE .B #$04,(A2) ; FEED Vref
00040660 123C 0000 MOVE.B #$00,D1
00040664 5201 TVAR: ADDQ.B #$01,D1 ; CHECK THE
00040666 1439 0008 0302 MOVE.B $80302,D2 ; COMPARATOR
0004066C 0202 0001 AND.B #$01,D2 ; OUTPUT
00040670 66F2 BNE.S $TVAR
00040672 247C 0008 0300 MOVE.L #$80300,A2 ; RESET
00040678 14BC 0002 MOVE.B #$02,(A2) ; INTEGRATOR
0004067C 4E75 RTS
0004067E 08 08 00 SPAC: .BYTE 08H,08H,00H
00040681 0D 0A 44 49 47 49 MSG:.BYTE 0DH,0AH,'DIGITAL VALUE =',00H
00040687 54 41 4C 20 56 41
0004068D 4C 55 45 20 3D 20
DUAL SLOPE ADC INTERFACE
12
00040693 20 00
4.6 DEMONSTRATION PROGRAM FOR ESA 196 TRAINER
;Assume the Interface is connected over FRC connector J1 of the
;trainer
;The trainer must be operating in SERIAL MODE
REGA EQU 52H
REGB EQU 54H
REGC EQU 56H
REGD EQU 58H
C_PRT EQU 206H
PORTA EQU 200H
PORTB EQU 202H
PORTC EQU 204H
ORG 8000H
ADDRESS OPCODE LABEL MNEMONIC COMMENTS
8000 B1 80 52 LDB REGA,#82H ;Initialize 8255 in
8003 C7 01 06 02 52 STB REGA,C_PRT ;mode 0. PORT A as
8008 A1 7A 80 2A LD 2AH,#LF_CR ;O/P,PORT B as I/P.
800C EF E6 A2 LCALL 22F5H ;LF & CR
800F A1 68 80 2A LD 2AH,#MESS ;Display Message
8013 EF DF A2 LCALL 22F5H ;”DIGITAL VALUE”
8016 EF 15 00 BACK: LCALL CONVRT ;A/D Conversion
8019 B1 08 20 LDB 20H,#08 ;Delete old value
801C EF DC A1 LCALL 21FBH
801F B1 08 20 LDB 20H,#08
8022 EF D6 A1 LCALL 21FBH ;Display new value
8025 B0 54 22 LDB 22H,REGB
8028 EF E4 A2 LCALL 230FH
802B E7 E8 FF LJMP BACK
802E B1 02 52 CONVRT: LDB REGA,#02 ;Conversion Routine
8031 C7 01 00 02 52 STB REGA,PORTA ;Reset Integrator
8036 FD NOP
8037 FD NOP
8038 FD NOP
8039 B1 01 52 LDB REGA,#01 ;Feed Analog VIN
803C C7 01 00 02 52 STB REGA,PORTA ;For known period
DUAL SLOPE ADC INTERFACE
13
8041 A1 C0 02 56 LD REGC,#12C0H ;of time
8045 E0 56 FD DLY: DJNZ REGC,DLY ;Start counter
8048 B1 04 52 LDB REGA,#04 ;Feed Vref
804B C7 01 00 02 52 STB REGA,PORTA
8050 B1 00 54 LDB REGB,#00
8053 07 54 TVAR: INC REGB ;Check Comparator
8055 B3 01 02 02 52 LDB REGA,PORTB ;For change of value
805A 71 01 52 ANDB REGA,#01 ;If no change
805D D7 F4 JNE TVAR ;continue sampling
805F B1 02 52 LDB REGA,#02 ;Reset Integrator
8062 C7 01 00 02 52 STB REGA,PORTA
8067 F0 RET
8068 0D 44 49 47 MESS: DCB 0DH,'DIGITAL VALUE ',00H
806C 49 54 41 4C
8070 20 56 41 4C
8074 55 45 20 20
8078 20 00
807A 0D 0A 00 LF_CR: DCB 0DH,0AH,00H
4.7 DEMONSTRATION PROGRAM FOR ESA 86/88-2 TRAINER
; Assume the interface is connected over J4 of the trainer.
; The trainer can be in KEYBOARD MODE or SERIAL MODE.
OUTSTR EQU FE00:1B50H
OUTBYTE EQU FF00:0B0AH
PUTBYTE EQU FE00:1B64H
DISPM EQU FE00:1B55H
ADDRESS OPCODE LABLE MNEMONIC COMMENTS
ORG 2000H
2000 B0 82 MOVB AL,82H ; INITIALIZE
2002 BA E6 FF MOVW DX,0FFE6H ; 8255 PORTS
2005 EE OUTW DX,AL ; PORT A AS O/P
; PORT B AS I/P
2006 BA ED FF MOVW DX,0FFEDH
2009 EC INB AL,DX ; CHECK FOR
200A 24 80 ANDB AL,80H ; DIP SW FOR
200C 74 27 JE KBD ; SERIAL OR
200E 8C C8 MOVW AX,CS ; KB MODE
2010 8E C0 MOVW ES,AX
2012 B8 76 20 MOVW AX,OFFSET CS:MSG1
DUAL SLOPE ADC INTERFACE
14
2015 9A 55 1B 00 FE CALLS DISPM ; DISPLAY MSG
201A B0 08 SERIAL: MOVB AL,08H
201C 9A 50 1B 00 FE CALLS OUTSTR ; DELETE OLD
2021 B0 08 MOVB AL,08H ; VALUE
2023 9A 50 1B 00 FE CALLS OUTSTR
2028 E8 17 00 CALL FUNC ; CONVERSION
202B 8B C3 MOVW AX,BX ; ROUTINE FOR
202D 9A 64 1B 00 FE CALLS PUTBYTE ; A/D.
2032 E9 E5 FF JMP SERIAL
2035 E8 0A 00 KBD: CALL FUNC ; KB MODE
2038 8A C3 MOVB AL,BL ; DISPLAY
203A 9A 0A 0B 00 FF CALLS OUTBYTE ; DIGITAL
203F E9 F3 FF JMP KBD ; VALUE
2042 B0 02 FUNC: MOVB AL,02H
2044 BA E0 FF MOVW DX,0FFE0H ; RESET
2047 EE OUTB DX,AL ; INTEGRATOR
2048 90 NOP
2049 90 NOP
204A 90 NOP
204B 90 NOP
204C 90 NOP
204D B0 01 MOVB AL,01H ; INTEGRATE
204F BA E0 FF MOVW DX,0FFE0H ; Vin FOR
2052 EE OUTB DX,AL ; KNOWN VALUE
2053 B9 C0 02 MOVW CX,02C0H ; OF TIME.
2056 49 L1: DECW CX
2057 8A C5 MOVB AL,CH
2059 0A C1 ORB AL,CL
205B 75 F9 JNZ L1
205D B0 04 MOVB AL,04H
205F BA E0 FF MOVW DX,0FFE0H
2062 EE OUTB DX,AL
2063 BA E2 FF MOVW DX,0FFE2H ; FEED Vref
2066 B3 00 MOVB BL,00H ; START COUNTER
2068 FE C3 TVAR: INCB BL
206A EC INB AL,DX
206B 24 01 ANDB AL,01H ; CHECK FOR
206D 75 F9 JNE TVAR ; COMPARATOR
206F B0 02 MOVB AL,02H ; O/P
2071 BA E0 FF MOVW DX,FFE0H ; RESET
DUAL SLOPE ADC INTERFACE
15
2074 EE OUTB DX,AL ; INTEGRATOR
2075 C3 RET
2076 0D 0A 44 49 47 49 MSG1: DB 0DH,0AH,'DIGITAL VALUE = ',00H
207C 54 41 4C 20 56 41
2082 4C 55 45 20 3D 20
2088 20 00
4.8 DEMONSTRATION PROGRAM FOR ESA 68-2 TRAINER
; Assume the interface is connected over J1 of the trainer.
; The trainer can be in Keyboard or Serial mode.
CNTLA EQU 0C801H
CNTLB EQU 0C803H
DIRA EQU 0C800H
DIRB EQU 0C802H
UPDDT EQU 0E313H
NMOUT EQU 0E518H
DISPM EQU 0E546H
SERIAL EQU 0E454H
SOUTPT EQU 0E52CH
UPDAD EQU 0440H
ADDRESS OPCODE LABLE MNEMONIC COMMENTS
ORG 400H ; USER RAM STARTS FROM
; 400H
0400 4F CLRA
0401 B7 C8 01 STA CNTLA ; INITIALISE 6821
0404 B7 C8 03 STA CNTLB ; PORT A AS O/P
0407 B7 C8 02 STA DIRB ; PORT B AS I/P.
040A 43 COMA
040B B7 C8 00 STA DIRA
040E B7 C8 01 STA CNTLA
0411 B7 C8 03 STA CNTLB
0414 0D 26 TST 26H
0416 26 02 BNE SER
0418 8D 17 BSR KBD ; KEYBOARD MODE
041A 8E 04 62 SER: LDX #MSG
041D BD E5 46 JSR DISPM
0420 8D 16 BACK: BSR CONVERT
DUAL SLOPE ADC INTERFACE
16
0422 86 08 LDA #08H
0424 BD E5 2C JSR SOUTPT
0427 86 08 LDA #08H
0429 BD E5 2C JSR SOUTPT
042C BD E5 18 JSR NMOUT
042F 20 EF BRA BACK
0431 8D 05 KBD: BSR CONVERT
0433 BD E3 13 JSR UPDDT
0436 20 F9 BRA KBD
0438 86 02 CONVERT: LDA #02H ; CONVERSION ROUTINE
043A B7 C8 00 STA DIRA
043D 12 NOP ; RESET INTEGRATOR
043E 12 NOP
043F 12 NOP
0440 86 01 LDA #01h
0442 B7 C8 00 STA DIRA
0445 CC 02 C0 LDD #2C0H ; START THE COUNTER
0448 83 00 01 L1: SUBD #1 ; INEEGRATE ANALOG VIN
044B 26 FB BNE L1 ; FOR KNOWN PERIOD OF
; TIME
044D 86 04 LDA #04H ; FEED VREF
044F B7 C8 00 STA DIRA
0452 C6 00 LDB #0H
0454 5C TVAR: INCB
0455 B6 C8 02 LDA DIRB ; CHECK COMPARATOR
0458 84 01 ANDA #01H ; FOR CHANGE OF VALUE.
045A 26 F8 BNE TVAR ; IF NO CONTINUE
045C 86 02 LDA #02H ; SAMPLING.
045E B7 C8 00 STA DIRA ; RESET INTEGRATOR
0461 39 RTS
0462 0D 0A 44 49 47 MSG: FCB 0DH,0AH,044H,049H,047H,
0467 49 54 41 4C 20 049H,054H,041H,04CH,020H,
046C 56 41 4C 55 45 056H,041H,04CH,055H,045H,
0471 20 3D 20 020H,03DH,020H,020H,00H
4.9 DEMONSTRATION PROGRAM FOR ESA 68K-2 TRAINER
DUAL SLOPE ADC INTERFACE
17
; Assume the interface is connected over J2 of the trainer.
ORG 400400H
PORTA EQU 800011H
PORTB EQU 800017H
PA_CT EQU 80000DH
PA_DI EQU 800005H
ADDRESS OPCODE LABLE MNEMONICS COMMENTS
400400 13FC 0000 MOVE.B #0,PA_CT ;Initialise
0080 000D ;8255 in mode0
400408 13FC 00FF MOVE.B #$FF,PA_DI ;Port A as an
0080 0005 ;O/P. Port B
;as an I/P.
400410 614A BACK: BSR.S DISPM ;A/D conversion.
400412 6106 BSR.S CONVERT
400414 4E4B TRAP #11
400416 00 09 DC.B 00H,09H
400418 60F6 BRA.S BACK
40041A 13FC 0002 CONVERT: MOVE.B #$02h,PORTA ;Conversion
0080 0011 ;Routine, Reset
400422 4E71 NOP ;Integrator.
400424 13FC 0001 MOVE.B #$01h,PORTA ;Start counter.
0080 0011
40042C 6124 BSR.S DELAY ;Integrate
;Analog Vin
;for known
;period of time.
40042E 13FC 0004 MOVE.B #$04h,PORTA ;Feed Vref.
0080 0011
400436 103C 0000 MOVE.B #$0,D0
40043A 5200 TVAR: ADDQ.B #01,D0 ;Check comparator
40043C 1439 0080 MOVE.B PORTB,D2 ;for change of
0017 ;value.
400442 0202 0001 ANDI.B #$01,D2 ;If no change,
;continue sampling
400446 66F2 BNE.S TVAR ;Reset
;integrator.
400448 13FC 0002 MOVE.B #$02h,PORTA
0080 0011
400450 4E75 RTS
400452 323C 0925 DELAY: MOVE.W #$925H,D1
DUAL SLOPE ADC INTERFACE
18
400456 57C9 FFFE LOOP: DBEQ D1,LOOP
40045A 4E75 RTS
40045C 2C7C 0040 DISPM: MOVEA.L #MSG,A6
0468
400462 4E4B TRAP #11
400464 00 06 DC.B 00H,06H
400466 4E75 RTS
400468 0D 20 44 49 MSG: DC.B 0DH,"DIGITAL VALUE = ",00H
47 49 END
40046E 54 41 4C 20
56 41
400474 4C 55 45 20
3D 20
40047A 00
4.10 DEMONSTRATION PROGRAM FOR ESA-51 TRAINER
;Assume the interface is connected over J10 of the trainer.
;The trainer can be in KEYBOARD MODE or SERIAL MODE
OUTSTG EQU 1200H
OUTCHR EQU 11A8H
PUTBYTE EQU 13D2H
CLRLCD EQU 03BBH
LCDOUT EQU 0348H
ADDRESS OPCODE LABEL MNEMONIC COMMENTS
ORG 8000H
8000 75 A0 E9 MOV P2,#0E9H ;Read DIP switch
8003 78 04 MOV R0,#04H
8005 E2 MOVX A,@R0 ;Check for Serial
8006 20 E3 26 JB ACC.3,KBD ;or Keyboard mode
8009 90 80 8A MOV DPTR,#MSG
800C C2 D5 CLR PSW.5
800E 12 12 00 LCALL OUTSTG
8011 74 08 BACK: MOV A,#08H
8013 12 11 A8 LCALL OUTCHR
8016 74 08 MOV A,#08H
8018 12 11 A8 LCALL OUTCHR
801B 75 A0 E8 MOV P2,#0E8H ;Initialize 8255
801E 78 03 MOV R0,#03H
8020 74 82 MOV A,#82H ;Port A as O/P
DUAL SLOPE ADC INTERFACE
19
8022 F2 MOVX @R0,A ;Port B as I/P
8023 12 80 51 LCALL FUNC ;A/D conversion
8026 E9 MOV A,R1
8027 F5 71 MOV 71H,A
8029 12 13 D2 LCALL PUTBYTE ;Display Digital
802C 02 80 11 LJMP BACK ;value
;KEY BOARD Mode
802F 12 03 BB KBD: LCALL CLRLCD
8032 90 80 8A MOV DPTR,#MSG ;Display
8035 C2 F0 CLR 0F0H ;message
8037 12 03 48 LCALL LCDOUT ;"DIGITAL VALUE="
803A 75 A0 E8 MOV P2,#0E8H ;Initialize 8255
803D 78 03 MOV R0,#03H
803F 74 82 MOV A,#82H ;Port A as O/P
8041 F2 MOVX @R0,A ;Port B as I/P
8042 12 80 51 LCALL FUNC ;A/D conversion
8045 E9 MOV A,R1 ;put DIGITAL VALUE
8046 F5 71 MOV 71H,A
8048 12 13 D2 LCALL PUTBYTE
804B 12 80 81 LCALL DLY
804E 02 80 2F LJMP KBD
;A/D Conversion Routine
8051 74 02 FUNC: MOV A,#02H
8053 78 00 MOV R0,#00H ;Reset Integrator
8055 F2 MOVX @R0,A
8056 00 NOP
8057 00 NOP
8058 00 NOP
8059 74 01 MOV A,#01H ;Integrate Analog
805B F2 MOVX @R0,A ;Vin for known
805C 79 04 MOV R1,#04H ;period of time
805E 00 NOP ;Integration
;Period
805F 00 NOP
8060 00 NOP
8061 00 NOP
8062 00 NOP
8063 7A FF MOV R2,#FFH
8065 19 TCON: DEC R1
8066 1A TCON1: DEC R2
8067 BA 00 FC CJNE R2,#00H,TCON1
DUAL SLOPE ADC INTERFACE
20
806A B9 00 F8 CJNE R1,#00H,TCON
806D 74 04 MOV A,#04H ;Feed Vref
806F F2 MOVX @R0,A
8070 79 00 MOV R1,#00H
8072 09 TVAR: INC R1
8073 78 01 MOV R0,#01H ;Check comparator
8075 E2 MOVX A,@R0 ;for change of
;value
8076 54 01 ANL A,#01H
8078 B4 00 F7 CJNE A,#00H,TVAR
807B 74 02 MOV A,#02H ;Reset Integrator
807D 78 00 MOV R0,#00H
807F F2 MOVX @R0,A
8080 22 RET
;Delay Routine
8081 7E 25 DLY: MOV R6,#25H
8083 7F FF DLY1: MOV R7,#FFH
8085 DF FE DJNZ R7,$
8087 DE FA DJNZ R6,DLY1
8089 22 RET
808A 0D 44 49 47 49 MSG: DB 0DH,'DIGITAL VALUE = ',00H
808F 54 41 4C 20 56
8094 41 4C 55 45 20
8099 3D 20 20 00
4.11 DEMONSTRATION PROGRAM FOR ESA 86/88-3 TRAINER
; Assumes the interface is connected over J8 of the trainer.
; This program displays the digital equivalent of the Analog
; voltage on the PC console in serial mode or LCD in stand-
; alone mode of operation.
; The program can be executed in STAND-ALONE MODE or SERIAL
; MODE of operation.
; The program starts at memory location 0:2000H
; Please refer ESA 86/88-3 user's manual for mnemonic syntax
; suitable to trainer
Code Segment :0000H
ADDRESS OPCODE LABEL MNEMONIC COMMENTS
DUAL SLOPE ADC INTERFACE
21
2000 B8 00 00 MOVW AX,0000H ;Initialise
2003 8E C8 MOVW CS,AX ;Segment
2005 8E C0 MOVW ES,AX ;Registers
2007 9A 31 00 00 FB CALLS 0FB00:0031H ;Newline routine
200C BA E6 FF MOVW DX,0FFE6H ;Initialise 8255
200F B0 82 MOVB AL,82H ;Port A as o/p &
2011 EE OUTB DX,AL ;Port B as i/p.
2012 EB 12 JMP START
2014 0D 44 49 47 49 54 MES: DB 0DH, 'DIGITAL VALUE = ',0H
201A 41 4C 20 56 41 4C
2020 55 45 20 3D 20 00 ; Display Message string
2026 9A 35 01 00 FB START: CALLS 0FB00:0135H ;Clear LCD if
202B 2E CS ;in Stand-alone
202C 8D 16 15 20 LEA DX,@MES ;mode
2030 8B C2 MOVB AX,DX
2032 9A 13 00 00 FB CALLS 0FB00:0013H ;Display message
2037 B0 02 STC: MOVB AL,02H ;Reset Integrator
2039 BA E0 FF MOVW DX,0FFE0H
203C EE OUTB DX,AL
203D 90 NOP
203E 90 NOP
203F 90 NOP
2040 90 NOP
2041 90 NOP
2042 B8 01 00 MOVW AX,01H ;Integrate Vin for
2045 EE OUTB DX,AL ;known value of time
2046 B9 00 10 MOVW CX,1000H
2049 E2 FE LOOP $
204B B0 04 MOVB AL,04H ;Feed Vref to
;comparator
204D EE OUTB DX,AL
204E BA E0 FF MOVW DX,0FFE0H
2051 B3 00 MOVB BL,00H ;Start Counter
2053 BA E2 FF TVAR: MOVW DX,0FFE2H
2056 EC INB AL,DX ;Check for comparator
2057 24 01 ANDB AL,01H ;output. If high,
2059 74 04 JE DISP ;display digital value
205B FE C3 INCB BL ;else increment
205D EB F4 JMP TVAR ;counter and continue
205F 8A C3 DISP: MOVB AL,BL ;Routine to output
2061 9A 52 00 00 FB CALLS 0FB00:0052H ;digital value
2066 B0 02 MOVB AL,02H ; Reset Integrator
DUAL SLOPE ADC INTERFACE
22
2068 BA E0 FF MOVW DX,0FFE0H
206B EE OUTB DX,AL
; Routine to introduce delay between successive conversions
206C BB 03 00 MOVW BX,03H
206F B9 FF FF DY: MOVW CX,0FFFFH
2072 E2 FE LOOP $
2074 4B DECW BX
2075 75 F8 JNZ DY
2077 EB AD JMP START ;Repeat continuously
4.12 DEMONSTRATION PROGRAM FOR ESA-51E TRAINER
;Assume the interface is connected over J5 of the trainer.
;The trainer can be in KEYBOARD MODE or SERIAL MODE
OUTSTG EQU 11E0H
OUTCHR EQU 11AEH
PUTBYTE EQU 139EH
CLRLCD EQU 03B1H
LCDOUT EQU 032AH
ADDRESS OPCODE LABEL MNEMONIC COMMENTS
ORG 8000H
8000 75 A0 E1 MOV P2,#0E1H ;Read DIP switch
8003 78 02 MOV R0,#02H
8005 E2 MOVX A,@R0 ;Check for Serial
8006 20 E3 26 JB ACC.3,KBD ;or Key Board mode
8009 90 80 8D MOV DPTR,#MSG
800C C2 D5 CLR PSW.5
800E 12 11 E0 LCALL OUTSTG
8011 74 08 BACK: MOV A,#08H
8013 12 11 AE LCALL OUTCHR
8016 74 08 MOV A,#08H
8018 12 11 AE LCALL OUTCHR
801B 75 A0 E8 MOV P2,#0E8H ;Initialize 8255
801E 78 03 MOV R0,#03H
8020 74 82 MOV A,#82H ;Port A as O/P
8022 F2 MOVX @R0,A ;Port B as I/P
8023 12 80 54 LCALL FUNC ;A/D conversion
8026 E9 MOV A,R1
DUAL SLOPE ADC INTERFACE
23
8027 F5 71 MOV 71H,A
8029 12 13 9E LCALL PUTBYTE ;Display Digital
802C 02 80 11 LJMP BACK ;value
;KEY BOARD Mode
802F 12 03 B1 KBD: LCALL CLRLCD
8032 90 80 8D MOV DPTR,#MSG ;Display
8035 C2 D5 CLR PSW.5 ;message
8037 12 03 2A LCALL LCDOUT ;"DIGITAL VALUE="
803A 75 A0 E8 MOV P2,#0E8H ;Initialize 8255
803D 78 03 MOV R0,#03H
803F 74 82 MOV A,#82H ;Port A as O/P
8041 F2 MOVX @R0,A ;Port B as I/P
8042 12 80 54 LCALL FUNC ;A/D conversion
8045 E9 MOV A,R1 ;put DIGITAL VALUE
8046 F5 71 MOV 71H,A
8048 12 13 9E LCALL PUTBYTE
804B 12 80 84 LCALL DLY
804E 12 80 84 LCALL DLY
8051 02 80 2F LJMP KBD
;A/D Conversion Routine
8054 74 02 FUNC: MOV A,#02H ;Reset Integrator
8056 78 00 MOV R0,#00H
8058 F2 MOVX @R0,A
8059 00 NOP
805A 00 NOP
805B 00 NOP
805C 74 01 MOV A,#01H ;Integrate Vin for
805E F2 MOVX @R0,A ;known value of
805F 79 04 MOV R1,#04H ;time
8061 00 NOP
8062 00 NOP
8063 00 NOP
8064 00 NOP
8065 00 NOP
8066 7A FF MOV R2,#FFH
8068 19 TCON: DEC R1
8069 1A TCON1: DEC R2
806A BA 00 FC CJNE R2,#00H,TCON1
806D B9 00 F8 CJNE R1,#00H,TCON
DUAL SLOPE ADC INTERFACE
24
8070 74 04 MOV A,#04H
8072 F2 MOVX @R0,A
8073 79 00 MOV R1,#00H
8075 09 TVAR: INC R1
8076 78 01 MOV R0,#01H ;Check comparator
8078 E2 MOVX A,@R0 ;for change value.
8079 54 01 ANL A,#01H ;If no change,
807B B4 00 F7 CJNE A,#00H,TVAR ;increment
807E 74 02 MOV A,#02H ;counter
8080 78 00 MOV R0,#00H
8082 F2 MOVX @R0,A
8083 22 RET
8084 7E 25 DLY: MOV R6,#25H
8086 7F FF DLY1: MOV R7,#FFH
8088 DF FE DJNZ R7,$
808A DE FA DJNZ R6,DLY1
808C 22 RET
808D 0D 44 49 47 49 MSG: DB 0DH,'DIGITAL VALUE = ',00H
8092 54 41 4C 20 56
8097 41 4C 55 45 20
809C 3D 20 20 20 00
4.13 DEMONSTRATION PROGRAM FOR ESA 86/88E TRAINER
; Assumes the interface is connected over J4 of the trainer.
; This program displays the digital equivalent of the Analog
; voltage on the PC console in serial mode or LCD in stand-
; alone mode of operation.
; The program can be executed in STAND-ALONE MODE or SERIAL
; MODE of operation.
; The program starts at memory location 0:2000H
; Please refer ESA 86/88E user's manual for mnemonic syntax
; suitable to trainer
Code Segment :0000H
ADDRESS OPCODE LABEL MNEMONIC COMMENTS
2000 B8 00 00 MOVW AX,0000H ;Initialise
2003 8E C8 MOVW CS,AX ;Segment
2005 8E C0 MOVW ES,AX ;Registers
2007 9A 31 00 00 FB CALLS 0FB00:0031H ;Newline routine
DUAL SLOPE ADC INTERFACE
25
200C BA E6 FF MOVW DX,0FFE6H ;Initialise 8255
200F B0 82 MOVB AL,82H ;Port A as o/p &
2011 EE OUTB DX,AL ;Port B as i/p.
2012 EB 12 JMP START
2014 0D 44 49 47 49 54 MES: DB 0DH, 'DIGITAL VALUE = ',0H
201A 41 4C 20 56 41 4C
2020 55 45 20 3D 20 00 ; Display Message string
2026 9A 35 01 00 FB START: CALLS 0FB00:0135H ;Clear LCD if
202B 2E CS ;in Stand-alone
202C 8D 16 15 20 LEA DX,@MES ;mode
2030 8B C2 MOVB AX,DX
2032 9A 13 00 00 FB CALLS 0FB00:0013H ;Display message
2037 B0 02 STC: MOVB AL,02H ;Reset Integrator
2039 BA E0 FF MOVW DX,0FFE0H
203C EE OUTB DX,AL
203D 90 NOP
203E 90 NOP
203F 90 NOP
2040 90 NOP
2041 90 NOP
2042 B8 01 00 MOVW AX,01H ;Integrate Vin for
2045 EE OUTB DX,AL ;known value of time
2046 B9 00 10 MOVW CX,1000H
2049 E2 FE LOOP $
204B B0 04 MOVB AL,04H ;Feed Vref to
;comparator
204D EE OUTB DX,AL
204E BA E0 FF MOVW DX,0FFE0H
2051 B3 00 MOVB BL,00H ;Start Counter
2053 BA E2 FF TVAR: MOVW DX,0FFE2H
2056 EC INB AL,DX ;Check for comparator
2057 24 01 ANDB AL,01H ;output. If high,
2059 74 04 JE DISP ;display digital value
205B FE C3 INCB BL ;else increment
205D EB F4 JMP TVAR ;counter and continue
205F 8A C3 DISP: MOVB AL,BL ;Routine to output
2061 9A 52 00 00 FB CALLS 0FB00:0052H ;digital value
2066 B0 02 MOVB AL,02H ; Reset Integrator
2068 BA E0 FF MOVW DX,0FFE0H
206B EE OUTB DX,AL
; Routine to introduce delay between successive conversions
DUAL SLOPE ADC INTERFACE
26
206C BB 03 00 MOVW BX,03H
206F B9 FF FF DY: MOVW CX,0FFFFH
2072 E2 FE LOOP $
2074 4B DECW BX
2075 75 F8 JNZ DY
2077 EB AD JMP START ;Repeat continuously