ulong FilChOne( ulong *point, ulong temp)
{
uchar i ;
xdata ulong avrVal = 0;
*(point + 7) = temp;
for(i = 0; i < 8; i++)
{
*(point + i) = *(point + i + 1);//数据平移
avrVal += *(point+i);
}
avrVal = (avrVal >> 3);
return avrVal;
}
上面函数中的*point 作用是指向一个存储temp数据的队列。我在调用该函数前会定义个ulong的数组,并且把读到的AD值传给temp.我想实现滑动滤波。我有6路AD需要滤波,所以我想在外面定义6个ulong型的数组,让读到每路Ad值放在不同的队列中,以免在调用多路是出现彼此干扰,早成数据混乱。
但是我现在用1路的Ad值来滤波达不到滤波的效果,并且数据很奇怪,请问上面的函数能实现滑动滤波吗?是不是指针使用有误啊?当我不用指针也按照这个思路写的滤波能用的。 |