HT46R46/HT46C46/HT46R47/HT46C47
Rev. 1.00
20
December 28, 2004
The following two programming examples illustrate how to setup and implement an A/D conversion. In the first exam-
ple, the method of polling the EOCB bit in the ADCR register is used to detect when the conversion cycle is complete,
whereas in the second example, the A/D interrupt is used to determine when the conversion is complete.
Example: using EOCB Polling Method to detect end of conversion
clr INTC.3
mov a,00100000B
mov ADCR,a
; disable A/D interrupt in interrupt control register
; setup ADCR register to configure Port PB0~PB3 as A/D inputs and select
; AN0 to be connected to the A/D converter
mov a,00000001B
mov ACSR,a
; setup the ACSR register to select f
SYS
/8 as the A/D clock
Start_conversion:
clr ADCR.7
set ADCR.7
clr ADCR.7
; reset A/D
; start A/D
Polling_EOC:
sz ADCR.6
jmp polling_EOC
mov a,ADR
; poll the ADCR register EOCB bit to detect end of A/D conversion
; continue polling
; read conversion result from the ADR (HT46R46/HT46C46) or
; ADRH, ADRL (HT46R47/HT46C47) register
; save result to user defined register
mov adr_buffer,a
:
:
jmp start_conversion
; start next A/D conversion
Example: using Interrupt method to detect end of conversion
set INTC.0
set INTC.3
mov a,00100000B
mov ADCR,a
; interrupt global enable
; enable A/D interrupt in interrupt control register
; setup ADCR register to configure Port PB0~PB3 as A/D inputs and select
; AN0 to be connected to the A/D converter
mov a,00000001B
mov ACSR,a
; setup the ACSR register to select f
SYS
/8 as the A/D clock
start_conversion:
clr ADCR.7
set ADCR.7
clr ADCR.7
; reset A/D
; start A/D
:
:
; interrupt service routine
EOC_service routine:
mov a_buffer,a
mov a,ADR
; save ACC to user defined register
; read conversion result from the ADR (HT46R46/HT46C46) or
; ADRH, ADRL (HT46R47/HT46C47) register
; save result to user defined register
mov adr_buffer,a
clr ADCR.7
set ADCR.7
clr ADCR.7
; reset A/D
; start A/D
mov a,a_buffer
reti
; restore ACC from temporary storage