今天刚编写的一个温控系统中温度采样函数,编译通过,功能实现不了。
CPU:89c52,LCD显示
经测量AD芯片工作正常,显示模块正常,怀疑是这个函数过不去,请老师们帮忙看看。
另外:编程的习惯方面有什么不好的,恳请指正。
/**************************************************************/
unsigned int sample()
{
char i,j;
int xdata samp[8];
t_sum=0;
for(i=0;i<8;i++)
{
TR1=1; //启动AD转换/T1定时10ms/结果保存在volt中,单位mV
_delay500us(200);
samp=volt/50; //xxxx mV to temperature xx;
_delay500us(1000);
_delay500us(1000); //delay 1s;
// _delay500us(1000);
// _delay500us(1000); //delay 2s;
// _delay500us(1000);
// _delay500us(1000); //delay 3s;
t_sum+=samp;
}
_delay500us(200);
t_max=samp[7];
t_min=samp[7];
for(j=8;j>1;j--)
{
while(samp[j-2]>t_max)
t_max=samp[j-2]; //get t_max;
while(samp[j-2]<t_min)
t_min=samp[j-2]; //get t_max;
}
t_suv_av=(t_sum-t_max-t_min)/6; //get the average of one survey;
return t_suv_av;
}
/**************************************************************/
1楼
0
0
回复
CPU:89c52,LCD显示
经测量AD芯片工作正常,显示模块正常,怀疑是这个函数过不去,请老师们帮忙看看。
另外:编程的习惯方面有什么不好的,恳请指正。
/**************************************************************/
unsigned int sample()
{
char i,j;
int xdata samp[8];
t_sum=0;
for(i=0;i<8;i++)
{
TR1=1; //启动AD转换/T1定时10ms/结果保存在volt中,单位mV
_delay500us(200);
samp=volt/50; //xxxx mV to temperature xx;
_delay500us(1000);
_delay500us(1000); //delay 1s;
// _delay500us(1000);
// _delay500us(1000); //delay 2s;
// _delay500us(1000);
// _delay500us(1000); //delay 3s;
t_sum+=samp;
}
_delay500us(200);
t_max=samp[7];
t_min=samp[7];
for(j=8;j>1;j--)
{
while(samp[j-2]>t_max)
t_max=samp[j-2]; //get t_max;
while(samp[j-2]<t_min)
t_min=samp[j-2]; //get t_max;
}
t_suv_av=(t_sum-t_max-t_min)/6; //get the average of one survey;
return t_suv_av;
}
/**************************************************************/