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 <<= 8;
temp |= _adrl; // ADC低8位值
if(temp < 1829)
lowbatt_flag = 1;
else
lowbatt_flag = 0;
_adoff = 1; //关闭ADC电源
}