1. 程式人生 > >合泰微控制器AD採集濾波程式

合泰微控制器AD採集濾波程式

/**************************************************************
函式名稱:NtcAD_Testing()
函式功能:溫度感測器取樣函式
入口引數:
出口引數:Flag_Ntc_OneAd,AdResult
備    注:取樣NTC的AD值,取樣6次,去掉最大及最小求算術平均值 
**************************************************************/
void NtcAD_Testing(unsigned char i)
{
	//static volatile unsigned char	admin,admax,adtimes;	
	//static volatile unsigned int	adsum;
	//static volatile bit Flag_ADFrist;
    if(Flag_AD&&ADIF)
	{  
		Flag_AD=0;
		if(!Flag_ADFrist)
		{
			admax = ADRESH;
			admin = ADRESH;
			Flag_ADFrist=1;
		}
		else if(ADRESH > admax)
			admax = ADRESH;				//AD取樣最大值
		else if(ADRESH < admin)
			admin = ADRESH;				//AD取樣最小值
		
		adsum += ADRESH;
		if(++adtimes >= 6)
		{
			adsum -= admax;
			adsum -= admin;	
			AdResult = adsum >> 2;		//8次平均值作為最終結果
			Flag_ADFrist=0;
			if(admax>(admin+20))       
			{   //最大值及最小值差20個8BITAD則當前取樣資料作廢
				
    			adsum = 0;
    			admin = 0;
    			admax = 0;
    			adtimes = 0;
		    }
		    else
		    {
		     	adsum = 0;
    			admin = 0;
    			admax = 0;
    			adtimes = 0;
				ADnex++;
				Flag_Ntc_OneAd=1;
    			   
		    }	
		}
	}
	
}