分享到:
//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 )
回复
举报
发表回复
块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖