本帖最后由 supertankhzt 于 2016-7-22 10:22 编辑
方法有多种,要做得完美,细节方面比较多,我只说个大体:
//再一个定义标志变量
static bit sf=0;
//一个计时(计次)变量
static uchar tcount=0;
//一个上次的稳定值
static u16 lastavr=0;
/***********************
if(max-min<=1) //小于
{
avr=sum/n;
return avr;
}
else
return (sum-max-min)/8;
*******************************/
以上改为if(max-min<=1) {
if(sf) { //十次采样时间内不更新新数据
if(++tcount>10) {
tcount=0; //十次计时完成,清零标志
sf=0;
}
} else {
sf=1;
lastavr=(sum-max-min)/8; //保存好第一次的稳定值,并置位标志位防止重复保存。
}
return lastavr;
} else {
return (sum-max-min)/8;
}
|