ADμC812的数据采集子系统及其系统编程技术
;mov @R0,Ainc R0djnz R7,iRAM_initcall Timer0_init;初始化T0为1.25ms中断一次call ADC_init;初始化ADC为单次转换setb EAControlloop:Jnb ADC_flag,Controlloop…… ;将AD转换的结果取走clr ADC_flag;允许开始下一次转换jmp ControlloopADC_init:mov ADCCON1,#01101100B;
上电ADCmov ADCCON2,ADC_count;选择转换通道retTimer0_interrupt:
setb SCONV;开始单次ADC转换mov TL0,#LOW(Timer_ms_const);装入定时常数mov TH0,#HIGH(Timer_ms_const)push PSWmov PSW,#00001000B;使用page1mov R2,A;暂存A累Timer0_int_ADC:jb ADC_flag,Timer0_int_ADC_end;数据未取走则退出Mov A,ADCCON3;
读ADC状态jb ACC.7,Timer0_int_ADCmov A,ADC_countanl A,#07Hrl Aadd A,#ADC_accmov R0,Amov A,ADCDATAL;将ADC转换结果加入累加单元add A,@R0mov @R0,Ainc R0mov A,ADCDATAHanl A,#0FHaddc A,@R0mov #R0,Ainc ADC_countmov A,ADC_countanl A,#07Hmov ADCCON2,A;选择下一通道mov A,ADC_countcjne A,#80H,Timer0_int_ADC_endmov ADC_count,#0mov R0,#ADC_acc;数字滤波后存入ADC结果mov R1,#ADC_resultmov R7,#08Timer0_int_save_ADC:
clr Amov #R0,Ainc R0xch A,#R0mov @R1,Ainc R0inc R1djnz,R7,Timer0_int_save_ADCsetb ADC_flagTimer0_int_ADC_end:Mov A,R2Pop PSWRetiTimer0_init;mov TH0,#HIGH(Timer_ms_const);装入定时常数mov TL0,#LOW(Timer_ms_const)anl TMOD,#11110000Borl TMDD,#00000001BSetb ET0;允许T0中断Setb TR0;T0开始运行RetEND
系统 编程 技术 及其 子系统 C812 数据采集 AD 相关文章:
- Linux嵌入式系统开发平台选型探讨(11-09)
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- VXWORKS内核分析(11-11)
- Linux内核解读入门(11-09)
- linux文件系统基础(02-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)