Sie sind auf Seite 1von 30

1

CONTENTS

PAGE NO

1.0 Introduction 2

2.0 Description of the Interface 2

3.0 Installation 3

4.0 Demonstration Examples 4

4.1 Demonstration Program for MPS 85-3 Trainer 5

4.2 Demonstration Program for ESA 85-2 Trainer 7

4.3 Demonstration Program for ESA-31 Trainer 10

4.4 Demonstration Program for ESA-68K Trainer 14

4.5 Demonstration Program for ESA 86/88-2 Trainer 17

4.6 Demonstration Program for ESA-51 Trainer 20

4.7 Demonstration Program for ESA 86/88-3 Trainer 23

4.8 Demonstration Program for ESA 51E Trainer 26

Appendix A : Component Layout Diagram

Appendix B : Schematic Diagram

Appendix C : Calibration

12 BIT ADC INTERFACE


2

12 BIT ADC INTERFACE

1.0 INTRODUCTION
Electro Systems Associates Private Limited (ESA) manufactures trainers for most of the popular
microprocessors viz 8085, Z-80, 6502, 8031, 8086/88 and 68000. ESA offers a variety of modules
which can be interfaced to these trainers. These modules can be effectively used for
teaching/training in the laboratories.
An Analog to Digital Converter is the basic interface between real world analog signals, and digital
systems such as microprocessors, computers and so on. The typical accuracy and resolution
requirements of almost all industrial and laboratory measurements are fully met by a 12 bit ADC.
A 12 Bit ADC Interface is offered by Electro Systems Associates, with an optional analog
multiplexer. The analog multiplexer enables data from up to eight different analog sources to be
acquired. This interface can accept either unipolar signals in the range 0 to 10 V, or bipolar signals
of -5V to +5V or -10V to +10V. By adding a single resistor in shunt with the input, current signals
of 0 to 20 mA or 4 to 20 mA can also be directly handled by this interface.
This interface is built around the industry standard fast ADC, AD1674 with built in reference, clock
and sample-hold circuit which does a conversion in as little as 10 micro sec. As such even transients
lasting for only a few milliseconds can be captured and stored using this interface. This interface
can be directly coupled to the Programmable Peripheral Interface Device, 8255 on any of the ESA
trainers. This opens up a wide range of applications to the users of these trainers, in the field of
analog measurements, transducer interfacing, Industrial monitoring and so on.

2.0 DESCRIPTION OF THE INTERFACE


Please refer to the schematic diagram of the interface presented in Appendix B.

2.1 Single channel/Multi channel operation.

Jumper JP1 decides whether the interface is intended for single channel or 8 channel operation. When
single channel operation is intended, no multiplexer is used and JP1 is open. Input is applied to
Screw terminal TP.

When 8 channel operation is desired JP1 is in closed condition. The multiplexer is populated and
eight channels are available as selected by channel select lines connected to PC2 through PC5 of
the 8255 on the corresponding trainer. Input signals are applied to screw terminals CH0 through
CH7. Note that in 8 channel mode, input should not be applied to screw terminal TP. The
multiplexed signal can however be monitored at this terminal. The channel selection is as shown in
Table I.

12 BIT ADC INTERFACE


3

TABLE I

PC5 PC4 PC3 PC2 Channel


Selected
0 * * * NONE
1 0 0 0 0
1 0 0 1 1
1 0 1 0 2
1 0 1 1 3
1 1 0 0 4
1 1 0 1 5
1 1 1 0 6
1 1 1 1 7

The interfacing of the ADC to 8255 is as follows:

The converted data DB0 through DB11 is latched at the end of conversion in to latches 74LS374
(U5 and U6). PC0 controls the condition of these latches. When PC0 is high the outputs of the
latches are tristated. When PC0 is low, data is available at port bits PA0 through PA7 and PB0
through PB3. This 8 scheme enables the user to expand the system to 16 channel utilizing the same
PPI Ports PA and PB for yet another 12 bit ADC interface.

Port bit PC1 is used to command conversion. A high to low transition initiates a conversion and STS
of ADC goes high indicating that ADC is busy. At the end of the conversion, the STS line goes
low. This transition is used to strobe the converted data in to the latches U5 and U6.

2.2 Input Voltage range

This interface can be operated with inputs of 0 to 10V, -5V to +5V or -10V to +10V. This is
determined by the location of shorting plugs in the jumpers JP3 and JP2. Details are as in Table II.

TABLE II

Input Range JP2 JP3


Unipolar 0 to 10V AB BC
Bipolar -5 to +5V AB AB
Bipolar -10 to +10V BC AB

3.0 INSTALLATION
The interface is housed in a plastic enclosure which has a locking mechanism. To open the cover,
push the locking mechanism with the finger and lift the cover to open.

12 BIT ADC INTERFACE


4

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 set. External power supplies +12V and -12V are
connected to points marked +12V and -12V respectively on the ADC card.

Table 3-1 shows the connectors on various trainers to which this interface can be connected. Some
trainers have two connectors to which this interface can be connected. The demonstration programs
presented in this manual assume that the interface is connected to connector shown in column A. If
the connectors shown in column B are used, then user has to change the port addresses
appropriately. User may refer to component layout diagrams of respective ESA trainer to locate
the connectors mentioned here.

TABLE-3.1

MICROPROCESSOR A B
TRAINER
MPS 85-3 J2 J1
ESA 85-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

4.0 DEMONSTRATION EXAMPLES


DESCRIPTION OF DEMO PROGRAMS

In keyboard mode, if we press 'NEXT' key & 'PREV' key, we can get the channel increment &
decrement respectively. Press 'EXEC' key to come to the monitor. In serial mode, if we press ','key &
'-' key, we can get the channel increment & decrement respectively. Press <CR> to come to serial
monitor.

12 BIT ADC INTERFACE


5

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.

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

RDKBD EQU 03BAH


UPDAD EQU 0440H
UPDDT EQU 044CH
GETCH EQU 0C12H
NMOUT EQU 0C41H
CROUT EQU 0C5CH
DISPM EQU 0B5BH

8800 3E 00 MVI A,00H ;Initialise channel


8802 32 00 90 STA 9000H
8805 3E 92 MVI A,92H ;Configure 8255
8807 D3 43 OUT 43H ;Port A,B & C as I/P
8809 3E 03 MVI A,03H ;Channel Number 0
880B D3 42 OUT 42H ;PC1,PC0 are high
880D 3A 00 90 CONVERT: LDA 9000H ;Load channel value
8810 07 RLC
8811 07 RLC
8812 F6 23 ORI 23H ;Enable mux,PC1,
8814 D3 42 OUT 42H ;PC0 are high
8816 C3 B6 88 JMP SETLTIME
8819 3E 02 BACK: MVI A,02H ;PC0 low as latch
881B D3 43 OUT 43H ;is edge triggered
881D 3C INR A
881E D3 43 OUT 43H ;8255 bit set mode
8820 3E 00 MVI A,00H
8822 D3 43 OUT 43H
8824 00 NOP ;Low to high
8825 00 NOP ;for ADC Chip
8826 00 NOP
8827 3C INR A
8828 D3 43 OUT 43H
882A DB 40 IN 40H ;Read lower
882C 32 01 90 STA 9001H ;byte data
882F DB 41 IN 41H ;Read higher
8831 32 02 90 STA 9002H ;byte data
8834 DB 50 IN 50H ;Read dip switch
8836 E6 08 ANI 08H ;Mode of operation

12 BIT ADC INTERFACE


6

8838 C2 76 88 JNZ KBD


883B 21 C2 88 LXI H,CHANNEL
883E CD 5B 0B CALL 0B5BH ;Display "CHANNEL = "
8841 3A 00 90 LDA 9000H ;Move Channel value
8844 CD 41 0C CALL 0C41H
8847 21 CB 88 LXI H,DIGITAL
884A CD 5B 0B CALL 0B5BH
884D 3A 02 90 LDA 9002H ;Move M.S byte of
;digital value
8850 CD 41 0C CALL 0C41H
8853 3A 01 90 LDA 9001H ;Move L.S byte of
;digital value
8856 CD 41 0C CALL 0C41H
8859 CD 5C 0C CALL 0C5CH ;Carriage return
885C CD 5C 0C CALL 0C5CH
885F CD 12 0C S2: CALL 0C12H ;Read character
8862 79 MOV A,C
8863 FE 0D CPI 0DH ;Is it "CR" key
8865 C2 69 88 JNZ S1 ;No Try again
8868 DF RST 3 ;Return to monitor
8869 FE 2C S1: CPI 2CH ;Is it "," key
886B CA AA 88 JZ CHINR ;Yes goto chan
;increment
886E FE 2D CPI 2DH ;Is it "-" key
8870 CA A3 88 JZ CHDCR ;Yes go to channel
;decrement
8873 C3 5F 88 JMP S2
8876 06 00 KBD: MVI B,00H ;Display without dot
8878 3A 00 90 LDA 9000H ;Move channel value
887B 32 F1 8F STA 8FF1H ;Display in
;data field
887E CD 4C 04 CALL 044CH
8881 3A 01 90 LDA 9001H ;Digital value of
;L.S byte in
8884 32 EF 8F STA 8FEFH ;Address field
8887 3A 02 90 LDA 9002H ;Digital value of
;M.S byte in
888A 32 F0 8F STA 8FF0H ;address field
888D CD 40 04 CALL 0440H
8890 CD BA 03 S3: CALL 03BAH ;Read a character
8893 FE 1C CPI 1CH ;Is it "next" key
8895 CA AA 88 JZ CHINR ;Yes go to channel
;increment
8898 FE 17 CPI 17H ;Is it "prev" key
889A CA A3 88 JZ CHDCR ;yes go to channel

12 BIT ADC INTERFACE


7

;decrement
889D FE 1D CPI 1DH ;Is it "EXEC" key
889F C2 90 88 JNZ S3 ;No try again
88A2 EF RST 5 ;Go to serial
;monitor routine
88A3 3A 00 90 CHDCR: LDA 9000H ;Move channel
;value to Acc
88A6 3D DCR A ;decrement and jump
88A7 C3 AE 88 JMP S4
88AA 3A 00 90 CHINR: LDA 9000H ;Move channel
;value to Acc
88AD 3C INR A ;increment
;channel value
88AE E6 07 S4: ANI 07H ;Comparing for
;eight channels
88B0 32 00 90 STA 9000H ;Store current
;channel value
88B3 C3 0D 88 JMP CONVERT ;Jump to convert

88B6 00 SETLTIME: NOP


88B7 00 NOP
88B8 00 NOP
88B9 00 NOP
88BA 00 NOP
88BB 00 NOP
88BC 00 NOP
88BD 00 NOP
88BE 00 NOP
88BF C3 19 88 JMP BACK
88C2 43 48 41 4E 4E CHANNEL: DB 'CHANNEL = ', 0
88C7 45 4C 3D 00
88CB 20 20 44 49 47 DIGITAL DB ' DIGITAL VALUE = ', 0
88D0 49 54 41 4C 20 56
88D6 41 4C 55 45 3D
88DB 20 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.

RDKBD EQU 0514H


UPDAD EQU 056CH
UPDDT EQU 0578H

12 BIT ADC INTERFACE


8

GETCH EQU 0B97H


NMOUT EQU 0C11H
CROUT EQU 0C37H
DISPM EQU 0B04H
RDKBD EQU 0514H

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

8800 3E 00 MVI A,00H ;Initialise channel


8802 32 00 90 STA 9000H
8805 3E 92 MVI A,92H ;Configure 8255
8807 D3 43 OUT 43H ;Port A,B & C as I/P
8809 3E 03 MVI A,03H ;Channel Number 0
880B D3 42 OUT 42H ;PC1,PC0 are high
880D 3A 00 90 CONVERT: LDA 9000H ;Load channel value
8810 07 RLC
8811 07 RLC
8812 F6 23 ORI 23H ;Enable mux,PC1,
8814 D3 42 OUT 42H ;PC0 are high
8816 C3 B6 88 JMP SETLTIME
8819 3E 02 BACK: MVI A,02H ;PC0 low as latch
881B D3 43 OUT 43H ;is edge triggered
881D 3C INR A
881E D3 43 OUT 43H
8820 3E 00 MVI A,00H
8822 D3 43 OUT 43H
8824 00 NOP ;Low to high
8825 00 NOP ;for ADC Chip
8826 00 NOP
8827 3C INR A
8828 D3 43 OUT 43H
882A DB 40 IN 40H ;Read lower
882C 32 01 90 STA 9001H ;byte data
882F DB 41 IN 41H ;Read higher
8831 32 02 90 STA 9002H ;byte data
8834 DB 70 IN 70H ;Read dip switch
8836 E6 08 ANI 08H ;Mode of operation
8838 C2 76 88 JNZ KBD
883B 21 C2 88 LXI H,CHANNEL
883E CD 04 0B CALL DISPM ;Display "CHANNEL = "
8841 3A 00 90 LDA 9000H ;Move Channel value
8844 CD 11 0C CALL NMOUT
8847 21 CB 88 LXI H,DIGITAL
884A CD 04 0B CALL DISPM
884D 3A 02 90 LDA 9002H ;Move M.S byte of

12 BIT ADC INTERFACE


9

8850 CD 41 0C CALL 0C41H ;digital value


8853 3A 01 90 LDA 9001H ;Move L.S byte of
8856 CD 11 0C CALL NMOUT ;digital value
8859 CD 37 0C CALL CROUT ;Carriage return
885C CD 37 0C CALL CROUT
885F CD 97 0B S2: CALL GETCH ;Read character
8862 79 MOV A,C
8863 FE 0D CPI 0DH ;Is it "CR" key
8865 C2 69 88 JNZ S1 ;No Try again
8868 DF RST 3 ;Return to monitor
8869 FE 2C S1: CPI 2CH ;Is it "," key
886B CA AA 88 JZ CHINR ;Yes go to channel
;increment
886E FE 2D CPI 2DH ;Is it "-" key
8870 CA A3 88 JZ CHDCR ;Yes go to channel
8873 C3 5F 88 JMP S2 ;decrement
8876 06 00 KBD: MVI B,00H ;Display without dot
8878 3A 00 90 LDA 9000H ;Move channel value
887B 32 75 FE STA FE75H ;Display in
887E CD 78 05 CALL UPDDT ;data field
8881 3A 01 90 LDA 9001H ;Digital value of
;L.S byte in
8884 32 73 FE STA FE73H ;Address field
8887 3A 02 90 LDA 9002H ;Digital value of
;M.S byte in
888A 32 74 FE STA FE74H ;address field
888D CD 6C 05 CALL UPDAD
8890 CD 14 05 S3: CALL RDKBD ;Read a character
8893 FE 1C CPI 1CH ;Is it "next" key
8895 CA AA 88 JZ CHINR ;Yes go to channel
;increment
8898 FE 17 CPI 17H ;Is it "prev" key
889A CA A3 88 JZ CHDCR ;yes go to channel
;decrement
889D FE 1D CPI 1DH ;Is it "EXEC" key
889F C2 90 88 JNZ S3 ;No try again
88A2 EF RST 5 ;Go to serial
;monitor routine
88A3 3A 00 90 CHDCR: LDA 9000H ;Move channel
;value to Acc
88A6 3D DCR A ;decrement and jump
88A7 C3 AE 88 JMP S4
88AA 3A 00 90 CHINR: LDA 9000H ;Move channel
;value to Acc
88AD 3C INR A ;increment

12 BIT ADC INTERFACE


10

;channel value
88AE E6 07 S4: ANI 07H ;Comparing for
;eight channels
88B0 32 00 90 STA 9000H ;Store current
;channel value
88B3 C3 0D 88 JMP CONVERT ;Jump to convert

88B6 00 SETLTIME: NOP


88B7 00 NOP
88B8 00 NOP
88B9 00 NOP
88BA 00 NOP
88BB 00 NOP
88BC 00 NOP
88BD 00 NOP
88BE 00 NOP
88BF C3 19 88 JMP BACK
88C2 43 48 41 4E 4E CHANNEL: DB 'CHANNEL = ', 0
88C7 45 4C 3D 00
88CB 20 20 44 49 47 DIGITAL DB ' DIGITAL VALUE = ', 0
88D0 49 54 41 4C 20 56
88D6 41 4C 55 45 3D
88DB 20 00

4.3 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.

SEG EQU 0E9H


SEG8155 EQU 0E1H
DISPD16 EQU 020BH
GETCH EQU 16E0H
DISPM EQU 164BH
RDKBD EQU 02A2H
DISPD8 EQU 019BH
PUTBYTE EQU 185EH
CRLOUT EQU 1787H
PARLOW EQU 60H
PARHIGH EQU 61H
P2 EQU 0A0H
B EQU 0F0H

12 BIT ADC INTERFACE


11

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

8000 ORG 8000H


8000 E4 CLR A ;Clear
;Accumulator
8001 90 90 00 MOV DPTR,#9000H ;Data pointer set
8004 F0 MOVX @DPTR,A
8005 75 A0 E8 MOV P2,#SEG ;Configure
;8255 for mode
8008 78 03 MOV R0,#03H ;0 Port A, B
800A 74 92 MOV A,#92H ;as Input and
800C F2 MOVX @R0,A ;Port C
800D 74 03 MOV A,#03H ;as Output.
800F 18 DEC R0
8010 F2 MOVX @R0,A
8011 E0 CONVERT: MOVX A,@DPTR ;Rotate accu-
8012 23 RL A ;lator twice
8013 23 RL A
8014 44 23 ORL A,#23H ;Enable mux
8016 75 A0 E8 MOV P2,#SEG
8019 78 02 MOV R0,#02H ;8255 Bit set mode
801B F2 MOVX @R0,A ;Out at Port C
801C 08 INC R0 ;PC0 is low as
801D 02 80 F0 LJMP SETLTIME
8020 74 02 BACK: MOV A,#02H ;latch is edge
;triggered.
8022 F2 MOVX @R0,A
8023 74 03 MOV A,#03H
8025 F2 MOVX @R0,A ;Low for ADC
8026 74 00 MOV A,#00H ;conversion.
8028 F2 MOVX @R0,A
8029 00 NOP
802A 00 NOP
802B 78 00 MOV R0,#00H ;Get digital
;value through
802D E2 MOVX A,@R0 ;Port A
802E 90 90 01 MOV DPTR,#9001H
8031 F0 MOVX @DPTR,A
8032 08 INC R0
8033 E2 MOVX A,@R0 ;Get digital
;value thro
;Port B
8034 90 90 02 MOV DPTR,#9002H
8037 F0 MOVX @DPTR,A ;Move digital
;value to 9002

12 BIT ADC INTERFACE


12

8038 75 A0 E1 MOV P2,#SEG8155 ;Read DIP switch


803B 78 02 MOV R0,#02H
803D E2 MOVX A,@R0
803E 20 E3 45 JB ACC.3,KBD ;Mode of
;operation
8041 90 80 CA SRL: MOV DPTR,#CHANNEL
8044 C2 D5 CLR 0D5H
8046 12 16 4B LCALL 164BH ;Display
;"channel ="
8049 90 90 00 MOV DPTR,#9000H
804C E0 MOVX A,@DPTR
804D F5 71 MOV 71H,A
804F 12 18 5E LCALL 185EH
8052 90 80 D5 MOV DPTR,#DIGITAL ;Display "digital
8055 C2 D5 CLR 0D5H ;value ="
8057 12 16 4B LCALL 164BH
805A 90 90 02 MOV DPTR,#9002H ;Display MSB of
;digital value to
;monitor
805D E0 MOVX A,@DPTR ;Move ext. memory
;addressed by
;data pointer
805E F5 71 MOV 71H,A
8060 12 18 5E LCALL 185EH
8063 90 90 01 MOV DPTR,#9001
8066 E0 MOVX A,@DPTR
8067 F5 71 MOV 71H,A ;Move LSB of
;digital value to
;monitor
8069 12 18 5E LCALL 185EH
806C 12 17 87 LCALL 1787H
806F 12 17 87 LCALL 1787H
8072 12 16 E0 S2: LCALL 16E0H ;Read a character
8075 B4 2C 02 CJNE A,#2CH,S1 ;Is it "," Key
8078 80 45 SJMP CHINR
807A B4 2D 02 S1: CJNE A,#2DH,S6 ;Is it "-" Key
807D 80 39 SJMP CHDCR
807F 64 0D S6: XRL A,#0DH
8081 60 EF JZ S2
8083 02 00 03 LJMP 0003H
8086 75 F0 00 KBD: MOV 0F0,#00H
8089 90 90 00 MOV DPTR,#9000H
808C E0 MOVX A,@DPTR
808D F5 60 MOV PARLOW,A
808F 12 01 9B LCALL 019BH

12 BIT ADC INTERFACE


13

8092 90 90 01 MOV DPTR,#9001H


8095 E0 MOVX A,@DPTR
8096 F5 60 MOV PARLOW,A
8098 12 02 0B LCALL 020BH
809B 90 90 02 MOV DPTR,#9002H
809E E0 MOVX A,@DPTR
809F F5 61 MOV PARHIGH,A
80A1 12 02 0B LCALL 020BH
80A4 12 02 A2 S3: LCALL 02A2H
80A7 B4 14 02 CJNE A,#14H,GTK3 ;Is it
;"Next" Key
80AA 80 13 SJMP CHINR
80AC B4 15 02 GTK3: CJNE A,#15H,GTK4 ;Is it
;"prev" Key
80AF 80 07 SJMP CHDCR
80B1 64 17 GTK4: XRL A,#1FH
80B3 60 EF JZ S3 ;Is it
;"Exec" Key
80B5 02 00 03 LJMP 0003H
80B8 90 90 00 CHDCR: MOV DPTR,#9000H
80BB E0 MOVX A,@DPTR
80BC 14 DEC A
80BD 80 05 SJMP ST
80BF 90 90 00 CHINR: MOV DPTR,#9000H
80C2 E0 MOVX A,@DPTR
80C3 04 INC A
80C4 54 07 ST: ANL A,#07H
80C6 F0 MOVX @DPTR,A
80C7 02 80 11 LJMP CONVERT

80CA 43 48 41 4E 4E CHANNEL DB 'CHANNEL = ',00


80CF 45 4C 20 3D 20
80D4 00
80D5 44 49 47 49 54 DIGITAL DB 'DIGITAL VALUE = ',00
80DA 41 4C 20 56 41
80DF 4C 55 45 20 3D
80E4 20 00
80F0 00 NOP
80F1 00 NOP
80F2 00 NOP
80F3 00 NOP
80F4 00 NOP
80F5 00 NOP
80F6 00 NOP
80F7 00 NOP

12 BIT ADC INTERFACE


14

80F8 00 NOP
80F9 00 NOP
80FA 02 80 20 LJMP BACK

4.4 DEMONSTRATION PROGRAM FOR ESA 68K TRAINER


; Assume the interface is connected over P3 of the trainer.

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

ORG $40600
40600 45 F9 00 START: LEA.L $80300,A2 ;Port A
08 03 00
40606 47 F9 00 LEA.L $80302,A3 ;Port B
08 03 02
4060C 49 F9 00 LEA.L $80304,A4 ;Port C
08 03 04
40612 4B F9 00 LEA.L $80306,A5 ;Control
08 03 06 ;port
40618 10 3C 00 MOVE.B #$92,D0 ;Initialise
92 ;8255 port
4061C 1A 80 MOVE.B D0,(A5)
4061E 10 3C 00 MOVE.B #03,D0
03
40622 18 80 MOVE.B D0,(A4)
40624 42 80 CONVERT: CLR.L D0
40626 10 39 00 MOVE.B CHA,D0
04 07 02
4062C E5 18 ROL.B #2,D0
4062E 00 00 00 ORI.B #$23,D0
23
40632 18 80 MOVE.B D0,(A4) ;Enable Mux
;through PC5
40634 60 00 00 BRA.L SETLTIME
FC
40638 76 04 BACK: MOVEQ.L #4,D3
4063A 41 F9 00 LEA.L CTLBYT,A0
04 06 FE
40640 1A 98 LOAD: MOVE.B (A0)+,(A5)
40642 53 43 SUBQ.W #1,D3
40644 0C 03 00 CMPI.B #0,D3
00
40648 66 F6 BNE.S LOAD
4064A 10 12 MOVE.B (A2),D0 ;High Port A

12 BIT ADC INTERFACE


15

4064C 20 7C 00 MOVE.L #DIG2,A0


04 07 07
40652 10 80 MOVE.B D0,(A0) ;Store digital
;value
40654 10 13 MOVE.B (A3),D0 ;High Port B
40656 11 00 MOVE.B D0,-(A0) ;Store digital
;value
40658 4E B8 03 SERIAL: JSR.S $0304 ;send crlf
4065B 04
4065C 48 A7 E0 MOVEM.W D0-D2,-(A7) ;Save
00 ;D0,D1,D2
40660 2C 7C 00 MOVE.L #CHAMSG,A6
04 07 0A
40666 4E B8 13 JSR.S $1300 ;Display
00 ;channel msg
4066A 4C 9F 00 MOVEM.W (A7)+,D0-D2 ;Restore
07 ;D0,D1,D2
4066E 48 A7 E0 MOVEM.W D0-D2,-(A7)
00 ;Save
40672 22 79 00 MOVE.L CHA,A1
04 07 02
40678 4E B8 03 JSR.S $0324
24
4067C 20 7C 00 MOVE.L #$40354,A0
04 03 54
40682 70 02 MOVEQ.L #2,D0
40684 4E B8 00 JSR.S $008C
8C
40688 4C 9F 00 MOVEM.W (A7)+,D0-D2
07 ;Restore
4068C 48 A7 E0 MOVEM.W D0-D2,-(A7)
00 ;Save
40690 2C 7C 00 MOVE.L #DIGMSG,A6
04 07 1A
40696 4E B8 13 JSR.S $1300 ;Display digital
00 ;value msg
4069A 4C 9F 00 MOVEM.W (A7)+,D0-D2
07 ;Restore
4069E 48 A7 E0 MOVEM.W D0-D2,-(A7)
00 ;Save
406A2 22 79 00 MOVE.L DIG1,A1
04 07 06
406A8 4E B8 03 JSR.S $0324 ;Display digital
24 ;value
406AC 20 7C 00 MOVE.L #$40354,A0

12 BIT ADC INTERFACE


16

04 03 54
406B2 70 04 MOVEQ.L #4,D0
406B4 4E B8 00 JSR.S $008C
8C
406B8 4C 9F 00 MOVEM.W (A7)+,D0-D2
07 ;Restore
406BC 4E B8 03 JSR.S $0304
04 ;Send crlf
406C0 4E B8 04 GETCHR: JSR.S $04E0 ;Get one char
E0 ;from console
406C4 0C 01 00 CMPI.B #$2C,D1 ;Is it
2C ;','key
406C8 67 00 00 BEQ.L CHINR ;Yes - go
1E ;to channel
;increment
406CC 0C 01 00 CMPI.B #$2D,D1 ;Is it
2D ;'-' key
406D0 67 00 00 BEQ.L CHDCR ;Yes - go
0A ;to channel
;decrement
406D4 0C 01 00 CMPI.B #$0D,D1 ;Is it
0D ;'CR' key
406D8 66 E6 BNE.S GETCHR ;No, try again
406DA 4A FC DC.W $4AFC ;Return to
;monitor
406DC 10 39 00 CHDCR: MOVE.B CHA,D0
04 07 02
406E2 53 00 SUBQ.B #1,D0
406E4 60 00 00 BRA.L S4
0A
406E8 10 39 00 CHINR: MOVE.B CHA,D0
04 07 02
406EE 52 40 ADDQ.W #1,D0
406F0 02 40 00 S4: AND.W #07,D0
07
406F4 13 C0 00 MOVE.B D0,CHA
04 07 02
406FA 60 00 FF BRA.L CONVERT
2C 28
406FE 02 03 CTLBYT: DC.W $0203
00 00 DC.W $0000
40702 00 00 CHA: DC.W $0000
40704 00 00 DC.W $0000
40706 00 00 DIG1:DC.W $0000
40708 00 00 DIG2:DC.W $0000

12 BIT ADC INTERFACE


17

4070A 43 48 41 4E 4E 45 CHAMSG: DB 'CHANNEL = ',00


40710 4C 20 3D 20 00
40715 20 20 20 20 20 20
4071B 20 20 44 49 47 49 DIGMSG: DB 'DIGITAL VALUE = ',00
40721 54 41 4C 20 56 41
40727 4C 55 45 20 3D 20
4072D 00

40730 4E 71 SETLTIME: NOP


40732 4E 71 NOP
40734 4E 71 NOP
40736 4E 71 NOP
40738 4E 71 NOP
4073A 4E 71 NOP
4073C 4E 71 NOP
4073E 4E 71 NOP
40740 4E 71 NOP
40742 4E 71 NOP
40744 60 00 FE F2 BRA.L BACK

4.5 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.

ORG 0:2000H

CRLF EQU 0FE00:1B5BH


GETCH EQU 0FE00:1B70H

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

2000 8C C8 START: MOVW AX,CS


2002 8E D8 MOVW DS,AX
2004 8E D0 MOVW SS,AX
2006 BC 00 30 MOVW SP,#3000H
2009 33 C0 XORW AX,AX
200B A2 E0 20 MOVB CHA,AL
200E B0 92 MOVB AL,#92H ;Configure 8255
;Port A,B as I/P
;Port C as O/P.
2010 BA E6 FF MOVW DX,#0FFE6H ;High control Port
2013 EE OUTB DX
2014 B0 03 MOVB AL,#03H ;Channels

12 BIT ADC INTERFACE


18

;Initialised
;PC1, PC0 are high
2016 4A DECW DX ;High port C.
2017 4A DECW DX
2018 EE OUTB DX
2019 A0 E0 20 CONVERT: MOVB AL,CHA ;Get channel value
201C B1 02 MOVB CL,#02H
201E D2 C0 ROLB AL,CL ;Rotate twice
2020 0C 23 ORB AL,#23H ;Enable mux
;through PC5.
2022 BA E4 FF MOVW DX,#0FFE4H
2025 EE OUTB DX
2026 51 PUSH CX
2027 B9 01 00 MOVW CX,#0001H ;SETLTIME delay
202A E2 FE LOOP 202AH
202C 59 POP CX
202D B0 02 MOVB AL,#02H ;8255 Bit set mode
202F 42 INCW DX
2030 42 INCW DX
2031 EE OUTB DX
2032 FE C0 INCB AL
2034 EE OUTB DX
2035 B0 00 MOVB AL,#00H ;Start Conversion
2037 EE OUTB DX
2038 90 NOP
2039 90 NOP
203A 90 NOP
203B BA E0 FF MOV DX,#0FFE0 ;High port A
203E EC INB DX ;Read lower
;byte data.
203F A2 E2 20 MOVB DIG2,AL ;Store digital
;values.
2042 42 INCW DX
2043 42 INCW DX ;High port B
2044 EC INB DX ;Read higher
;byte data.
2045 A2 E1 20 MOVB DIG1,AL ;Store digital
;values
2048 BA ED FF MOVW DX,#0FFED ;Read DIP switch
204B EC INB DX
204C 24 80 ANDB AL,#80 ;Find mode of
;operation
204E 74 4E JE KBD ;Keyboard mode
2050 8C C8 SERIAL: MOVW AX,CS ;Offset of string
2052 8E C0 MOVW ES,AX ;Input (ES) segment

12 BIT ADC INTERFACE


19

;where string is
;located
2054 B8 E3 20 MOVW AX,#CHAMSG
2057 9A 55 1B 00 FE CALLS 1B55,0FE00;Display routine
205C A0 E0 20 MOVB AL,20E0
205F 9A 64 1B 00 FE CALLS 1B64,0FE00;Output a byte
;to console
2064 9A 60 1B 00 FE CALLS 1B60,0FE00
2069 8C C8 MOVW AX,CS ;Offset of string
206B 8E C0 MOVW ES,AX ;Input (ES) segment
;where string is
;located
206D B8 EF 20 MOVW AX,#20EF
2070 9A 55 1B 00 FE CALLS 1B55,0FE00;Display routine
2075 A0 E2 20 MOVB AL,20E2
2078 8A 26 E1 MOVB AH,20E1 ;Get digital
20 ;value
207C 9A 69 1B 00 FE CALLS 1B69,0FE00
2081 9A 5B 1B 00 FE CALLS 1B5B,0FE00;<CR>
2086 9A 5B 1B 00 FE CALLS 1B5B,0FE00
208B 90 S2: NOP
208C 9A 70 1B 00 FE CALLS 1B70,0FE00;Get key code
2091 3C 2C CMPB AL,#2C ;Is it "," key
2093 74 3E JE CHINR ;Yes go to channel
;increment
2095 3C 2D CMPB AL,#2D ;Is it "-" key
2097 74 32 JE CHDCR ;Go to channel
;decrement
2099 3C 0D CMPB AL,#0D
209B 75 EE JNE S2
209D CC INT 3 ;Return to monitor
209E A0 E0 20 KBD: MOVB AL,CHA
20A1 B4 00 MOVB AH,#00
20A3 9A 0A 0B 00 FF CALLS 0B0A,0FF00
20A8 8A 26 E1 20 MOVB AH,DIG1
20AC A0 E2 20 MOVB AL,DIG2
20AF BB 00 01 MOVW BX,#0100 ;In address field
;No prompt
20B2 B1 00 MOVB CL,#00 ;No leading
;blanking
20B4 9A 12 0B 00 FF CALLS 0B12,0FF00 ;Displays
;Digital no.
20B9 9A 1C 0B 00 FF CALLS 0B1C,0FF00 ;Read a keycode
20BE 3C 11 S3: CMPB AL,#11 ;Is it "NEXT" key
20C0 74 11 JE CHINR

12 BIT ADC INTERFACE


20

20C2 3C 1A CMPB AL,#1A ;Is it "PREV" key


20C4 74 05 JE CHDCR ;Yes go to channel
;decrement
20C6 3C 10 CMPB AL,#10 ;Is it "EXEC" key
20C8 75 F4 JNE S3 ;No try again
20CA CC INT 3
20CB A0 E0 20 CHDCR: MOVB AL,CHA
20CE FE C8 DCB AL
20D0 EB 06 JMP 20D8
20D2 90 NOP
20D3 A0 E0 20 CHINR: MOVB AL,CHA
20D6 FE C0 INCB AL
20D8 24 07 ANDB AL,#07
20DA A2 E0 20 MOVB CHA,AL
20DD E9 39 FF JMP 2019
20E0 00 CHA
20E1 00 DIG1
20E2 00 DIG2
20E3 43 48 41 4E 4E
20E8 45 4C 20 3D 20 CHAMSG: DB 'CHANNEL = ', 00
20EC 20 00
20EF 44 49 47 49 54 DIGMSG: DB 'DIGITAL VALUE = ', 00
20F3 41 4C 2D 56 41
20F8 4C 55 45 20 3D
20FD 20 00

4.6 DEMONSTRATION PROGRAM FOR ESA-51 TRAINER

;Assume the interface is connected over J10 of the trainer.


;The trainer can be in KEYBOARD MODE or in SERIAL MODE.

SEG EQU 0E8H


SEGDIP EQU 0E9H
PUTWORD EQU 13C3H
GETCH EQU 12BBH
OUTPUT EQU 0404H
GETKB EQU 161H
PUTBYTE EQU 13D2H
SCRLF EQU 13A7H
PARLOW EQU 71H
PARHIGH EQU 72H
P2 EQU 0A0H
LCDOUT EQU 348H
CLRLCD EQU 03BBH

12 BIT ADC INTERFACE


21

NEXTLINE EQU 0303H

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

8000 ORG 8000H


8000 E4 CLR A ;Clear accumulator
8001 90 90 00 MOV DPTR,#9000H ;Data pointer set
8004 F0 MOVX @DPTR,A
8005 75 A0 E8 MOV P2,#SEG ;Configure 8255 for
8008 78 03 MOV R0,#03H ;mode 0 Port A, B
800A 74 92 MOV A,#92H ;as Input and
800C F2 MOVX @R0,A ;Port C
800D 74 03 MOV A,#03H ;as OUTSTG.
800F 18 DEC R0
8010 F2 MOVX @R0,A
8011 E0 CONVERT: MOVX A,@DPTR
8012 23 RL A ;Rotate accumulator
8013 23 RL A ;twice
8014 44 23 ORL A,#23H ;Enable mux
8016 75 A0 E8 MOV P2,#SEG
8019 78 02 MOV R0,#02H ;Out at Port C
801B F2 MOVX @R0,A
801C 08 INC R0 ;PC0 is low as
801D 02 80 AF LJMP SETLTIME
8020 74 02 BACK: MOV A,#02H ;latch is edge
;triggered.
8022 F2 MOVX @R0,A
8023 74 03 MOV A,#03H
8025 F2 MOVX @R0,A ;Low for ADC
8026 74 00 MOV A,#00H ;conversion.
8028 F2 MOVX @R0,A
8029 00 NOP
802A 00 NOP
802B 78 00 MOV R0,#00H ;Get digital
802D E2 MOVX A,@R0
802E 90 90 01 MOV DPTR,#9001H

8031 F0 MOVX @DPTR,A


8032 08 INC R0
8033 E2 MOVX A,@R0 ;Get digital value
;through Port B
8034 90 90 02 MOV DPTR,#9002H
8037 F0 MOVX @DPTR,A ;Move immediate
;value to data
;pointer

12 BIT ADC INTERFACE


22

8038 12 80 CE LCALL OUTCHAN


803B 90 90 00 MOV DPTR,#9000H
803E E0 MOVX A,@DPTR
803F F5 71 MOV 71H,A
8041 12 13 D2 LCALL PUTBYTE
8044 90 80 9A MOV DPTR,#DIGITAL ;Display 'digital
8047 C2 D5 CLR 0D5H ;value ="
8049 12 04 04 LCALL OUTPUT
804C 90 90 02 MOV DPTR,#9002H ;Move immediate
;Data to data
;pointer
804F E0 MOVX A,@DPTR ;Move ext. memory
;addressed by
;data pointer
8050 F5 71 MOV 71H,A
8052 12 13 D2 LCALL PUTBYTE
8055 90 90 01 MOV DPTR,#9001H
8058 E0 MOVX A,@DPTR
8059 F5 71 MOV 71H,A ;Move 9001 address
;to Acc
805B 12 13 D2 LCALL PUTBYTE
805E 12 13 A7 LCALL SCRLF
8061 12 13 A7 LCALL SCRLF
8064 12 80 BC S2: CALL GETKEY ;Read a character
8067 B4 2C 02 CJNE A,#2CH,S1 ;Is it "," Key
806A 80 18 SJMP CHINR
806C B4 2D 02 S1: CJNE A,#2DH,S6 ;Is it "-" Key
806F 80 0C SJMP CHDCR
8071 B4 5F 02 S6: CJNE A,#5FH,S7
8074 80 07 SJMP CHDCR
8076 64 0D S7: XRL A,#0DH
8078 60 EA JZ S2
807A 02 00 03 LJMP 0003H
807D 90 90 00 CHDCR: MOV DPTR,#9000H
8080 E0 MOVX A,@DPTR
8081 14 DEC A
8082 80 05 SJMP ST
8084 90 90 00 CHINR: MOV DPTR,#9000H
8087 E0 MOVX A,@DPTR
8088 04 INC A
8089 54 07 ST: ANL A,#07H
808B F0 MOVX @DPTR,A
808C 02 80 11 LJMP CONVERT
808F 43 48 41 4E 4E CHANNEL: DB 'CHANNEL = ',00h
8094 45 4C 20 3D 20

12 BIT ADC INTERFACE


23

8099 00
809A 20 20 20 20 20 DIGITAL: DB 'DIG. VALUE= ',00h,0DH,0AH
809F 20 44 49 47 2E
80A4 20 56 41 4C 55
80A9 45 3D 20 00 0D
80AE 0A
80AF 00 SETLTIME: NOP
80B0 00 NOP
80B1 00 NOP
80B2 00 NOP
80B3 00 NOP
80B4 00 NOP
80B5 00 NOP
80B6 00 NOP
80B7 00 NOP
80B8 00 NOP
80B9 02 80 20 LJMP BACK
80BC 75 A0 E9 GETKEY: MOV P2,#0E9H
80BF 78 04 MOV R0,#04H
80C1 E2 MOVX A,@R0
80C2 30 E3 05 JNB ACC.3,L1
80C5 12 01 61 LCALL GETKB
80C8 80 03 SJMP L2
80CA 12 12 BB L1: LCALL GETCH
80CD 22 L2: RET
80CE 75 A0 E9 OUTCHAN: MOV P2,#0E9H
80D1 78 04 MOV R0,#04H
80D3 E2 MOVX A,@R0
80D4 30 E3 03 JNB ACC.3,SRL1
80D7 12 03 BB LCALL CLRLCD
80DA 90 80 8F SRL1: MOV DPTR,#CHANNEL
80DD C2 D5 CLR 0D5H
80DF 12 04 04 LCALL OUTPUT ;Display
;"channel ="
80E2 22 RET

4.7 DEMONSTRATION PROGRAM FOR ESA 86/88-3 TRAINER

; Assume the interface is connected over J8 of the trainer


; This program displays the Channel No. and the digital
; equivalent of the Analog voltage at the respective channel
; on the PC console in Serial mode or on the LCD in stand
; standalone mode of operation. The same program can be used
; for both Single channel and multi-channel operating modes of

12 BIT ADC INTERFACE


24

; the interface.
; To increment channel value, the user has to enter ','
; To decrement channel value, the user has to enter '-'
; The program starts at memory location 0:2500H
; Please refer ESA 86/88-3 user's manual for mnemonic syntax
; suitable to trainer

Code Segment :0000H

ADDRESS OPCODE LABEL MNEMONIC COMMENTS

2500 B8 00 00 MOVW AX,0000H ;Initialise Segment


2503 8E C8 MOVW CS,AX ;Registers
2505 8E D8 MOVW DS,AX
2507 8E C0 MOVW ES,AX
2509 BE 00 20 MOVW SI,2000H
250C B0 00 MOVB AL,0H
250E 88 04 MOVB [SI],AL ;Start with Channel 0
2510 BA E6 FF MOVW DX,0FFE6H ;Configure 8255 Port A
2513 B0 92 MOVB AL,92H ;and Port B as I/P,
2515 EE OUTB DX,AL ;Port C as output.
2516 BA E4 FF CONVERT: MOVW DX,0FFE4H ;Disable Latches
2519 B0 03 MOVB AL,03H
251B EE OUTB DX,AL
251C 8A 04 MOVB AL,[SI]
251E B9 02 00 MOVW CX,02H
2521 D2 C0 ROLB AL,CL
2523 0C 23 ORB AL,23H ;Load channel value
2525 EE OUTB DX,AL ;and enable MUX
2526 B9 20 00 MOVW CX,20H ;Settling time delay
2529 E2 FE DY: LOOP DY
252B B0 01 MOVB AL,01H ;Start of Conversion
252D EE OUTB DX,AL ;pulse to ADC
252E B0 03 MOVB AL,03H ;Read mode to Convert
2530 EE OUTB DX,AL ;mode signal
2531 B0 00 MOVB AL,00H
2533 EE OUTB DX,AL
2534 90 NOP ;A/D conversion
2535 90 NOP ;time delay
2536 90 NOP
2537 90 NOP
2538 B0 02 MOVB AL,02H ;Enable latches
253A EE OUTB DX,AL ;for capturing data
253B 2B C0 READ: SUBW AX,AX
253D BA E2 FF MOVW DX,0FFE2H

12 BIT ADC INTERFACE


25

2540 EC INB AL,DX ;Read from latches


2541 24 0F ANDB AL,0FH
2543 8A E0 MOVB AH,AL ;Store Digital value
2545 BA E0 FF MOVW DX,0FFE0H ;in AX Register
2548 EC INB AL,DX
2549 8B D8 MOVW BX,AX
254B E8 2B 00 CALL DISP ;Display digital value
254E 8A 0C NEXT: MOVB CL,[SI]
2550 9A A9 00 00 FB CALLS 0FB00:00A9H ;Get key for Channel
2555 3C 2C CMPB AL,2CH ;','-Increment Channel
2557 74 06 JE INCR
2559 3C 2D CMPB AL,2DH ;'-'-Decrement channel
255B 74 0F JE DECR
255D EB EF JMP NEXT
255F FE C1 INCR: INCB CL ;Channel increment
2561 80 F9 08 CMPB CL,08H ;routine
2564 75 02 JNE GO
2566 B1 00 MOVB CL,00H
2568 88 0C GO: MOVB [SI],CL ;Call Convert routine
256A EB AA JMP CONVERT ;for new channel
256C 80 F9 00 DECR: CMPB CL,00H ;Channel Decrement
256F 75 04 JNE DOWN ;routine
2571 B1 07 MOVB CL,07H
2573 EB F3 JMP GO
2575 FE C9 DOWN: DECB CL
2577 EB EF JMP GO

2579 9A 31 00 00 FB DISP: CALLS 0FB00:0031H ;Newline routine


257E B8 00 21 MOVW AX,2100H ;Display 'CHANNEL NO: '
2581 9A 13 00 00 FB CALLS 0FB00:0013H
2586 8A 04 MOVB AL,[SI] ;Display Channel value
2588 9A 52 00 00 FB CALLS 0FB00:0052H
258D B8 0F 21 MOVW AX,210FH ;Display message
2590 9A 13 00 00 FB CALLS 0FB00:0013H ;for digital O/P
2595 8B C3 MOVW AX,BX
2597 9A 6A 00 00 FB CALLS 0FB00:006AH ;Display digital
;value
259C EB B0 JMP NEXT ;Repeat procedure
2100 ORG 2100H ;Display Message String
2100 0A 0D 43 48 41 4E DB AH,0DH,43H,48H,41H,
2106 4E 45 4C 20 4EH,4EH,45H,4CH,20H
210A 4E 4F 3A 20 00 20 DB 4EH,4FH,3AH,20H,00H,
2110 20 20 20 20 20H,20H,20H,20H,20H
2114 20 20 44 49 47 49 DB 20H,20H,44H,49H,47H,
211A 54 41 4C 20 49H,54H,41H,4CH,20H

12 BIT ADC INTERFACE


26

211E 56 41 4C 55 45 20 DB 56H,41H,4CH,55H,45H,
2124 3D 20 00 20H,3DH,20H,00H

4.8 DEMONSTRATION PROGRAM FOR ESA-51E TRAINER

;Assume the interface is connected over J5 of the trainer.


;The trainer can be in KEYBOARD MODE or in SERIAL MODE.

SEG EQU 0E8H


SEGDIP EQU 0E1H
PUTWORD EQU 138FH
GETCH EQU 12A5H
OUTPUT EQU 03FAH
GETKB EQU 142H
PUTBYTE EQU 139EH
SCRLF EQU 1373H
PARLOW EQU 71H
PARHIGH EQU 72H
P2 EQU 0A0H
CLRLCD EQU 03B1H

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

8000 ORG 8000H


8000 E4 CLR A ;Clear
;Accumulator
8001 90 90 00 MOV DPTR,#9000H ;Data pointer
;set
8004 F0 MOVX @DPTR,A
8005 75 A0 E8 MOV P2,#SEG ;Configure 8255
8008 78 03 MOV R0,#03H ;for mode 0
800A 74 92 MOV A,#92H ;Port A, B as
800C F2 MOVX @R0,A ;I/P and Port C
800D 74 03 MOV A,#03H ;as output.
800F 18 DEC R0
8010 F2 MOVX @R0,A
8011 E0 CONVERT: MOVX A,@DPTR
8012 23 RL A ;Rotate
8013 23 RL A ;accumulator
;twice
8014 44 23 ORL A,#23H ;Enable mux
8016 75 A0 E8 MOV P2,#SEG
8019 78 02 MOV R0,#02H ;Out at Port C
801B F2 MOVX @R0,A

12 BIT ADC INTERFACE


27

801C 08 INC R0 ;PC0 is low as


801D 02 80 AF LJMP SETLTIME
8020 74 02 BACK: MOV A,#02H ;latch is edge
8022 F2 MOVX @R0,A ;triggered.
8023 74 03 MOV A,#03H
8025 F2 MOVX @R0,A ;Low for ADC
8026 74 00 MOV A,#00H ;conversion.
8028 F2 MOVX @R0,A
8029 00 NOP
802A 00 NOP
802B 78 00 MOV R0,#00H
802D E2 MOVX A,@R0
802E 90 90 01 MOV DPTR,#9001H
8031
8031 F0 MOVX @DPTR,A
8032 08 INC R0
8033 E2 MOVX A,@R0 ;Get digital
;value thro PortB
8034 90 90 02 MOV DPTR,#9002H
8037 F0 MOVX @DPTR,A ;Move digital
;value to 9002H
8038 12 80 CE LCALL OUTCHAN
803B 90 90 00 MOV DPTR,#9000H
803E E0 MOVX A,@DPTR
803F F5 71 MOV 71H,A
8041 12 13 9E LCALL PUTBYTE
8044 90 80 9A MOV DPTR,#DIGITAL ;Display
;"digital
8047 C2 D5 CLR 0D5H ;value ="
8049 12 03 FA LCALL OUTPUT
804C 90 90 02 MOV DPTR,#9002H ;Move digital
;Data to ACC
804F E0 MOVX A,@DPTR
8050 F5 71 MOV 71H,A
8052 12 13 9E LCALL PUTBYTE
8055 90 90 01 MOV DPTR,#9001H
8058 E0 MOVX A,@DPTR
8059 F5 71 MOV 71H,A ;Display digital
;value
805B 12 13 9E LCALL PUTBYTE
805E 12 13 73 LCALL SCRLF
8061 12 13 73 LCALL SCRLF
8064 12 80 BC S2: CALL GETKEY ;Read a character
8067 B4 2C 02 CJNE A,#2CH,S1 ;Is it "," Key
806A 80 18 SJMP CHINR

12 BIT ADC INTERFACE


28

806C B4 2D 02 S1: CJNE A,#2DH,S6 ;Is it "-" Key


806F 80 0C SJMP CHDCR
8071 B4 5F 02 S6: CJNE A,#5FH,S7
8074 80 07 SJMP CHDCR
8076 64 0D S7: XRL A,#0DH
8078 60 EA JZ S2
807A 02 00 03 LJMP 0003H
807D 90 90 00 CHDCR: MOV DPTR,#9000H
8080 E0 MOVX A,@DPTR
8081 14 DEC A
8082 80 05 SJMP ST
8084 90 90 00 CHINR: MOV DPTR,#9000H
8087 E0 MOVX A,@DPTR
8088 04 INC A
8089 54 07 ST: ANL A,#07H
808B F0 MOVX @DPTR,A
808C 02 80 11 LJMP CONVERT

808F 43 48 41 4E 4E CHANNEL: DB 'CHANNEL = ',00h


8094 45 4C 20 3D 20
8099 00

809A 20 20 20 20 20 DIGITAL: DB 'DIG. VALUE= ',00h,0DH,0AH


809F 20 44 49 47 2E
80A4 20 56 41 4C 55
80A9 45 3D 20 00 0D
80AE 0A
80AF 00 SETLTIME:NOP
80B0 00 NOP
80B1 00 NOP
80B2 00 NOP
80B3 00 NOP
80B4 00 NOP
80B5 00 NOP
80B6 00 NOP
80B7 00 NOP
80B8 00 NOP
80B9 02 80 20 LJMP BACK
80BC 75 A0 E1 GETKEY: MOV P2,#0E1H
80BF 78 02 MOV R0,#02H
80C1 E2 MOVX A,@R0
80C2 30 E3 05 JNB ACC.3,L1
80C5 12 01 42 LCALL GETKB
80C8 80 03 SJMP L2
80CA 12 12 A5 L1: LCALL GETCH

12 BIT ADC INTERFACE


29

80CD 22 L2: RET


80CE 75 A0 E1 OUTCHAN: MOV P2,#0E1H
80D1 78 02 MOV R0,#02H
80D3 E2 MOVX A,@R0
80D4 30 E3 03 JNB ACC.3,SRL1
80D7 12 03 B1 LCALL CLRLCD
80DA 90 80 8F SRL1: MOV DPTR,#CHANNEL
80DD C2 D5 CLR 0D5H
80DF 12 03 FA LCALL OUTPUT ;Display
;"channel ="
80E2 22 RET

12 BIT ADC INTERFACE


30

APPENDIX C

CALIBRATION

A. Unipolar Offset Calibration :

Short jumper JP3 at BC, keep JP1 and JP2 open. The first output transition (from 0000 0000 0000 to
0000 0000 0001) should nominally occur for an input level of 1 LSB (1.22mV above ground for
10V range). To trim unipolar offset to this nominal value, apply a 1 LSB signal between PIN 13
and ground (10V range) and adjust VR3 until the first transition is located. The full-scale trim is done
by applying a signal 1 LSB below the nominal full-scale (9.9963V for 10V range) and adjusting
VR1 until the last transition is located (1111 1111 1110 to 1111 1111 1111).

B. Bipolar Offset Calibration :

Short jumper JP3 at AB, keep JP1 and JP2 open. To trim bipolar offset to its nominal value, supply
PIN 13 with a signal LSB below midrange (-1.22mV for a 5V range) and adjust VR2 until the
major carry transition is located (0111 1111 1111 to 1000 0000 0000). To trim full-scale (+4.9963V
for a 5V range) and adjust VR1 to give the last positive transition (1111 1111 1110 to 1111 1111
1111) these trims are interactive so several iterations may be necessary to convergence.

12 BIT ADC INTERFACE

Das könnte Ihnen auch gefallen