本人初学FREESCALE单片机,使用的是08DZ60的MCU,调试程序时遇到以下问题.
下面程序的功能是把AD转换值通过查表法查到相应的温度值放入数组内,RES变量的值用整型时运行没有问题,但把数据类型改为浮点数时出现问题, temp_msg[i]数组里的数据经常改变,请教各位大神问题出在哪里,谢谢.
const struct temp temp_data[]={
{0,327},{1,311},{2,296},{3,282},{4,268},{5,255},{6,243},{7,231},{8,220},{9,210},
{10,200},{11,191},{12,182},{13,173},{14,165},{15,158},{16,151},{17,144},{18,137},{19,131},
{20,125},{21,119},{22,114},{23,109},{24,104},{25,100},{26,95},{27,91},{28,87},{29,83},
{30,80},{31,76},{32,73},{33,70},{34,67},{35,64},{36,61},{37,59},{38,56},{39,54},
{40,52},{41,50},{42,47},{43,46},{44,44},{45,42},{46,40},{47,39},{48,37},{49,36},
{50,34},{51,33},{52,31},{53,30},{54,29},{55,28},{56,27},{57,26},{58,25},{59,24}
};
unsigned char temp_msg[16];
void temp_value_input(void)
{
unsigned char temp_value = 255;
unsigned int AD_value;
unsigned char i;
AD_value = 1950;
if(temp_convert(&temp_value,AD_value))
temp_msg[i] = temp_value;
else
temp_msg[i] = 255;
}
}
Bool temp_convert(unsigned char *temp_value,unsigned int AD_value)
{
float res;
unsigned char i;
res = (float)100*AD_value/(4096-AD_value);
for(i=0;i<60;i++)
{
if(temp_data[i+1].resistor < res && res <= temp_data[i].resistor)
{
*temp_value = temp_data[i].tempture;
return(TRUE);
}
}
return(FALSE);
}
|