各位仁兄,随能帮我调通这个程序
各位仁兄,谁能帮我调通这个程序:我的这个程序是用keil c51编写的,在调试过程中,程序常常莫名其妙的调至非法代码空间(我用的芯片是AT89S52),并且错误通常产生在浮点数运算之后。由于毕业答辩提前,小弟万分着急,恳请各位仁兄帮忙,由于帖子的字数限制,我只能提供常出现错误的子程序。如果那位大哥有心帮我这个忙,请发邮件到我的信箱,我会尽快给你把源代码给发过去。我的邮箱地址是:yuxiang5401@sina.com
unsigned int get_tp(unsigned int j,unsigned int n,unsigned int tc,unsigned int f)
{
float kconst;
unsigned int Um;
//====================calculate Um=======================//
Um=PARA_SET[4];
if(f <PARA_SET[0])
{Um=(Um-UP_VOLTAGE)*10/PARA_SET[0]; //mutiply 10 to avoid float calculation and to make sure accuracy
Um=Um*f/10; //calculate seperately to avoid overflow
}
//==================================
kconst=2*3.1415926*f*PARA_SET[4];
switch(n)
{case 24:
{ TAB_pointer=table67_80;
break;
}
case 30:
{ TAB_pointer=table56_66;
break;
}
case 36:
{ TAB_pointer=table42_55;
break;
}
case 48:
{ TAB_pointer=table34_41;
break;
}
case 60:
{ TAB_pointer=table26_33;
break;
}
case 78:
{ TAB_pointer=table20_25;
break;
}
case 102:
{ TAB_pointer=table15_19;
break;
}
case 138:
{ TAB_pointer=table11_14;
break;
}
case 198:
{ TAB_pointer=table7_10;
break;
}
case 330:
{ TAB_pointer=table0_6;
break;
}
default:
break;
}//end switch
if(j> (n/2))
j=j-n/2;
kconst=*(TAB_pointer+j)/kconst;
Um=(unsigned int)((tc+((float)Um)*kconst)/2.0);//错误常在这句程序之后产生。
return(Um);
}
发表时间:2004年5月26日17:43:57