问题找到了:AD转换后return ADC没有&0x3ff;还有我用积分形式滤波算法,初始化时参数都没有附初值0;
不过还是不明白:为什么要赋初始值?
unsigned int temp=0; //中间量
unsigned int TSenTotl=0; //总和
unsigned int TSArr[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
。
。
。
ADMUX&= ~(1 <<MUX0); //Ñ¡ADµÄ0ͨµÀ
ADMUX&= ~(1 <<MUX1);
temp=AD_GetData(); //¶ÁÈë´«¸ÐÆ÷ζÈÖµ
TSenTotl=TSenTotl+temp-TSArr[0]; //¼ÓÉÏ×îÐÂÒ»´Î£¬¼õÈ¥×îǰһ´Î
temSen=TSenTotl>>4; //除16
data[3]=(unsigned char)(temSen/20); //显示值
if (data[3]>50) //·Àֹζȳ¬50
{
data[3]=50;
}
for(unsigned char i=0;i<15;i++)
{
TSArr=TSArr[i+1];
}
TSArr[15]=temp;
|