mega64 数据开方出问题,求帮助
uint uo;ad_run()
{
float squ;
double squad=0,a;
int k;
for(k=0;k<20;k++)
{
uo=ad;
squ=uo; //强制把采得的数据量转换成双精度数,以便运算
squ=squ*5/1023; //把每点的数据转换成实际数据
a=squ*squ; //求一点电压的平方
squad=squad+a;
}
squad=squad/20;
uo=squad*100;
uo=sqrt(uo);
}仿真时执行完squad=squad/20;后
squad值为5.87。。。。
执行完uo=squad*100;后
uo值为587
执行完uo=sqrt(uo);问题出现了
uo的值为65536或者其他乱七八糟的很大的值;
问题在哪呢??
仿真试了试 发现没问题的 可以得出正确结果的 我仿真 也出错,直接运行 也出错! 蛋疼了啊 。反正就是开方运算后的结果就不对了 ,前面的结果都是正确的 。
不会是单片机坏了吧。。。
数据类型不匹配 第一句就错了,应该是float uo NemoGu 发表于 2012-11-24 02:41 static/image/common/back.gif
数据类型不匹配
应该如何改呢 i55x 发表于 2012-11-24 07:02 static/image/common/back.gif
第一句就错了,应该是float uo
改成float了还是不行 !只要开方之后就出错 编译器是ICCAVR仿真是AVRStudio 我用GCC软件仿真时没问题的
结果如下: 问题,找到了。是我SB。忘记加math.h了。
哎。。。。ICCAVR居然不报错
页:
[1]