利用可快速采集
例:
/*********************************************************************** * 函数名称:void ADC_VDD_Sampling(void) * 功能描述:读取内部电压 ADC=1/4VCC * 输入参数:无 * 输出参数:ADC_12bit_VDD_Data:1/4VCC以12位数据存储电压,3v基准 * 返回值 :无 * 用法示例:无 * 注意事项:ADC读取时间44us **********************************************************************/ void ADC_VDD_Sampling(void) { ADMD = 0x90 | C_Quarter_VDD; // ADC=1/4VDD 配置内部通道 ADMDbits.START = 1; // ADC开始检测 while(ADMDbits.EOC == 0); // 延迟程序等待转换结束 R_ADC_VDD_DATA_HB = ADD; // 寄存器“R_ADC_VDD_DATA_HB”存储VDD的ADC数据位11~4 R_ADC_VDD_DATA_LB = 0x0F & ADR; // 寄存器“R_ADC_VDD_DATA_LB”bit3~0存储VDD的ADC数据位3~0 ADC_12bit_VDD_Data = (R_ADC_VDD_DATA_HB<<4) R_ADC_VDD_DATA_LB; } /*********************************************************************** * 函数名称:void ADC_VDD_Average(void) * 功能描述:多次阅读ADC,求平均 * 输入参数:ADC_12bit_VDD_Data:ADC采集数据 * 输出参数:ADC_VDD_Abergar:16次ADC收集数据平均值 * 返回值 :无 * 用法示例:无 * 注意事项:时间800us左右 44*16=704us **********************************************************************/ void ADC_VDD_Average(void) { ADC_VDD_Abergar=0; for(j=0;j<16;j ) { ADC_VDD_Sampling(); ADC_VDD_Abergar = ADC_12bit_VDD_Data; } ADC_VDD_Abergar = ADC_VDD_Abergar >> 4; ADC_12bit_VDD_Data = 0XFFFF & ADC_VDD_Abergar; }