智能车制作
标题:
自己写的电磁信号处理,发现点小问题
[打印本页]
作者:
浙东东
时间:
2013-4-20 00:29
标题:
自己写的电磁信号处理,发现点小问题
void ad_dealvalue(void)
{
uint8 i,j;
uint16 max,min;
uint32 temp;
for(j=0;j<4;j++)//选择ADvalue其中一行数据
{
max = ADvalue[j][0];
min = ADvalue[j][0];
for(i=1;i<4;i++)//处理ADvalue的一行数据,去最大、最小值,再取平均
{
if(max < ADvalue[j][i])
{
max = ADvalue[j][i]; //得到每行的最大值
}
if(min > ADvalue[j][i])
{
min = ADvalue[j][i];//得到每行的最小值
}
}
temp = 0;
for(i=0;i<4;i++)
{
temp = temp + ADvalue[j][i];//每行数据总和
}
temp = (temp-max-min)/2; //去掉最小值和最大值后,每行数据的平均值
Final_ADvalue[j]=(uint16)temp;
Led_flash(15);
}
}
ADvalue[j][i]为4行4列数组,LED_flash(15)为pta15引脚取反函数(其为判断程序是否正常进行)。第一条代码for(j=0;j<4;j++)改成for(j=0;j<=4;j++),该程序能正常运行。按照我的理解,四行四列数组,第一行应该为[0],第n
行为[n-1].在本程序中,在for(j=0;j<4;j++)应该能正常处理数据,但是写成这样实现不了里面的代码,主要表现为PTA15引脚小灯不亮。而将Led_flash(15);代码移到for(j=0;j<4;j++)外面,小灯正常亮。我用的是K60,100m频率。求解决
作者:
iamback
时间:
2013-4-20 00:54
首先<=那个肯定不对,下标越界。
然后Led_flash(15);在很短的时间内执行4次。
你说这个函数是取反的意思。
那进入到ad_dealvalue();之前灯是神马状态?
若之前是暗的,那 0亮1暗2亮3暗,最后就没亮呗,而之前亮的的时间太短,你肉眼可能看不到。
作者:
浙东东
时间:
2013-4-20 17:06
对对,你说的对。后来发现了这问题,只要j是偶数,就会熄,j奇数就会亮,其亮
作者:
流微·寒
时间:
2013-6-19 16:46
大神你好,能把你的ad采集程序,让我学学吗? 我刚换K60,不会
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2