1.ADC相关寄存器配置 void initADC(void) { _ade = 0; // disable ADC interrupt _ace8 = 1; // select AN8 _adcr0 = 0x20; //关闭ADC模块电源 _adcr1 = 3; // Fsys/8 adcCount = 0; } 2.开启ADC转换并读取ADC值
#define CONVERT_PEROID 10
static unsigned char adcCount;
bit lowbatt_flag;
void auto_conversion(void) //AD启动动作 { unsigned int temp=0; if(adcCount != 0) //每10个计数转换一次 { adcCount--; return; } adcCount = CONVERT_PEROID; _adcr0 = 0x18; //1: ADC 数据高字节是 ADRH 的 bit 3~bit 0,低字节是 ADRL 的 bit 7~bit 0 //此位控制存放在两个 A/D 数据寄存器中的 12 位 A/D 转换结果的格式,AN8输入。
_start=0; _start=1; _start=0; //0 → 1 → 0:启动 while(_eocb) //等待转换结束 { asm("nop") } temp = _adrh; //ADC高4位值 temp