
Philips Semiconductors
Preliminary specification
87LPC768
Low power, low price, low pin count (20 pin) microcontroller with
4 kB OTP 8-bit A/D, Pulse Width Modulator
2000 May 02
12
Code Examples for the A/D
The first piece of sample code shows an example of port configuration for use with the A/D. This example sets up the pins so that all four A/D
channels may be used. Port configuration for analog functions is described in the section Analog Functions.
; Set up port pins for A/D conversion, without affecting other pins.
mov
PT0AD,#78h
; Disable digital inputs on A/D input pins.
anl
P0M2,#87h
; Disable digital outputs on A/D input pins.
orl
P0M1,#78h
; Disable digital outputs on A/D input pins.
Following is an example of using the A/D with interrupts. The routine ADStart begins an A/D conversion using the A/D channel number supplied
in the accumulator. The channel number is not checked for validity. The A/D must previously have been enabled with sufficient time to allow for
stabilization.
The interrupt handler routine reads the conversion value and returns it in memory address ADResult. The interrupt should be enabled prior to
starting the conversion.
; Start A/D conversion.
ADStart:
orl
ADCON,A
setb
ADCS
;
orl
PCON,#01h
;
orl
PCON,#02h
ret
; Add in the new channel number.
; Start an A/D conversion.
; The CPU could be put into Idle mode here.
; The CPU could be put into Power Down mode here if RCCLK = 1.
; A/D interrupt handler.
ADInt:
push
ACC
mov
A,DAC0
mov
ADResult,A
clr
ADCI
anl
ADCON,#0fch
pop
ACC
reti
; Save accumulator.
; Get A/D result,
; and save it in memory.
; Clear the A/D completion flag.
; Clear the A/D channel number.
; Restore accumulator.
Following is an example of using the A/D with polling. An A/D conversion is started using the channel number supplied in the accumulator. The
channel number is not checked for validity. The A/D must previously have been enabled with sufficient time to allow for stabilization. The
conversion result is returned in the accumulator.
ADRead:
orl
setb
ADChk:
jnb
mov
clr
anl
ret
ADCON,A
ADCS
; Add in the new channel number.
; Start A/D conversion.
ADCI,ADChk
A,DAC0
ADCI
ADCON,#0fch
; Wait for ADCI to be set.
; Get A/D result.
; Clear the A/D completion flag.
; Clear the A/D channel number.