[原创] AD采集查询法
870 查看
0 回复
 楼主 | 发布于 2021-04-22 | 只看楼主
分享到:
//ADC采样取值
uint ADC_Collect(uchar channel)//AD采集
{
        uint ADCMaxValue=0,ADCMinValue=0xFFFF,ADC_Sum=0;
        uint ADC_ACC=0,ADC_Dat = 0;
 	uchar ADCSampleCnt=0;
   	ADCR0 &= 0x0f;//
 	ADCR0 |= (channel << 4);//打开所需通道
 	ADON = 1;//使能AD
   	for(ADCSampleCnt=0;ADCSampleCnt<12;ADCSampleCnt++)
   	{
   	   	ADEOC = 0;//start ADC
   	   	do{
   	   	   	Nop();
   	   	}while(ADEOC==0);
   	   	ADC_ACC = (ADRH << 4) | ADRL;//
 	 	if(ADCSampleCnt > 1)//舍弃前两次的AD值
 	 	{
        	   if(ADC_ACC > ADCMaxValue)
        	   {
        	   	 ADCMaxValue=ADC_ACC;
        	   }
        	   if(ADC_ACC < ADCMinValue)
        	   {
        	   	 ADCMinValue = ADC_ACC;
        	   }
        	   ADC_Sum += ADC_ACC;
                }
   	}
   	ADC_Dat = (ADC_Sum-ADCMaxValue-ADCMinValue) >> 3;//除以8
   	return ADC_Dat;   //转换完成返回AD值
}

BAT_ADC = ADC_Collect(0x0a);//读取AD值
(1 ) (0 )
回复 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部