ADμC812的数据采集子系统及其ISP技术
ORG start+100h
Begin;
mov SP,#60H
mov R0,#20H;清工作单元
mov R7,#40H
clr A
iRAM_init;
mov @R0,A
inc R0
djnz R7,iRAM_init
call Timer0_init;初始化T0为1.25ms中断一次
call ADC_init;初始化ADC为单次转换
setb EA
Controlloop:
Jnb ADC_flag,Co
ntrolloop
…… ;将AD转换的结果取走
clr ADC_flag;允许开始下一次转换
jmp Controlloop
ADC_init:
mov ADCCON1,#01101100B;上电ADC
mov ADCCON2,ADC_count;选择转换通道
ret
Timer0_interrupt:
setb SCONV;开始单次ADC转换
mov TL0,#LOW(Timer_ms_const);装入定时常数
mov TH0,#HIGH(Timer_ms_const)
push PSW
mov PSW,#00001000B;使用page1
mov R2,A;暂存A累
Timer0_int_ADC:
jb ADC_flag,Timer0_int_ADC_end;数据未取走则退出
Mov A,ADCCON3;读ADC状态
jb ACC.7,Timer0_int_ADC
mov A,ADC_count
anl A,#07H
rl A
add A,#ADC_acc
mov R0,A
mov A,ADCDATAL;将ADC转换结果加入累加单元
add A,@R0
mov @R0,A
inc R0
mov A,ADCDATAH
《ADμC812的数据采集子系统及其ISP技术(第3页)》