HT45R37
Example: using an EOCB polling method to detect the end of conversion
clr EADI
; disable ADC interrupt
mov a,00000001B
mov ACSR,a
mov a,00100000B
; select fSYS/8 as A/D clock and turn on ADONB bit
; setup ADCR register to configure Port PB0~PB3
; as A/D inputs
mov ADCR,a
; and select AN0 to be connected to the A/D converter
:
:
; As the Port B channel bits have changed the
; following START
; signal (0-1-0) must be issued
; instruction cycles
:
Start_conversion:
clr START
set START
clr START
Polling_EOC:
; reset A/D
; start A/D
sz
EOCB
; poll the ADCR register EOCB bit to detect end
; of A/D conversion
; continue polling
; read low byte conversion result value
; save result to user defined register
; read high byte conversion result value
; save result to user defined register
jmp polling_EOC
mov a,ADRL
mov adrl_buffer,a
mov a,ADRH
mov adrh_buffer,a
:
jmp start_conversion
; start next A/D conversion
Example: using the interrupt method to detect the end of conversion
clr EADI
mov a,00000001B
mov ACSR,a
; disable ADC interrupt
; select fSYS/8 as A/D clock and turn on ADONB bit
mov a,00100000B
; setup ADCR register to configure Port PB0~PB3
; as A/D inputs
; and select AN0 to be connected to the A/D
mov ADCR,a
:
; As the Port B channel bits have changed the
; following START signal(0-1-0) must be issued
;
:
Start_conversion:
clr START
set START
clr START
clr ADF
set EADI
set EMFI1
set EMI
:
; reset A/D
; start A/D
; clear ADC interrupt request flag
; enable ADC interrupt
; enable multi-function 1 interrupt
; enable global interrupt
:
:
; ADC interrupt service routine
ADC_:
mov acc_stack,a
a,STATUS
mov status_stack,a
; save ACC to user defined memory
; save STATUS to user defined memory
:
:
mov a,ADRL
mov adrl_buffer,a
mov a,ADRH
mov adrh_buffer,a
:
; read low byte conversion result value
; save result to user defined register
; read high byte conversion result value
; save result to user defined register
:
EXIT__ISR:
mov a,status_stack
mov STATUS,a
mov a,acc_stack
clr ADF
; restore STATUS from user defined memory
; restore ACC from user defined memory
; clear ADC interrupt flag
reti
Rev. 1.20
37
February 25, 2011