中级会员
- 积分
- 443
- 威望
- 232
- 贡献
- 123
- 兑换币
- 122
- 注册时间
- 2012-11-21
- 在线时间
- 44 小时
- 毕业学校
- 长春工程学院
|
我也用了强制转换。但是不好使啊,采集的值应该是2000多才对,但是出来的只有200多。这是程序,先看第二个函数。
uchar middle_data(uchar h1,uchar h2,uchar h3,uchar h4,uchar h5) //中值选择
{ uchar t=0,s=0;
uchar out_data,data_temp[5]={0},d_temp;
data_temp[0]=h1; data_temp[1]=h2; data_temp[2]=h3; data_temp[3]=h4; data_temp[4]=h5;
for(t=0;t<5;t++)
{ for(s=0;s<4-t;s++)
{ if(data_temp[s]>data_temp[s+1])
{ d_temp=data_temp[s]; data_temp[s]=data_temp[s+1]; data_temp[s+1]=d_temp; }
}
}
out_data=data_temp[3];
return out_data; }
uint Mult_covert(uchar num)
{uchar result[5];
uint ss;
uint i,j;
switch(num)
{
case 0:
{for(j=0;j<5;j++)
{ for(i=0;i<5;i++)
{while(!ATD0STAT0_SCF) //等待当前队列转换完成
result[i]=(uchar)ATD0DR0;
ATD0STAT0_SCF=1;//清除队列完成标志
}
pp[j]=middle_data(result[0],result[1],result[2],result[3],result[4]);
}
ss=(pp[0]+pp[1]+pp[2]+pp[3]+pp[4])/5;
} break;
case 1:
{ for(j=0;j<5;j++)
{ for(i=0;i<5;i++)
{while(!ATD0STAT0_SCF) //等待当前队列转换完成
result[i]=(uchar)ATD0DR1;
ATD0STAT0_SCF=1; //清除队列完成标志
}
pp[j]=middle_data(result[0],result[1],result[2],result[3],result[4]);
}
ss=(pp[0]+pp[1]+pp[2]+pp[3]+pp[4])/5;
}break;
case 2:
{for(j=0;j<5;j++)
{ for(i=0;i<5;i++)
{while(!ATD0STAT0_SCF) //等待当前队列转换完成
result[i]=(uchar)ATD0DR2;
ATD0STAT0_SCF=1;//清除队列完成标志
}
pp[j]=middle_data(result[0],result[1],result[2],result[3],result[4]);
}
ss=(pp[0]+pp[1]+pp[2]+pp[3]+pp[4])/5;
}break;
default: break;
}
return ss;
}
|
|