Keil 4 C51浮点数运算问题

zufei 2011-11-13 02:14:35
float Y_Axis_Value ; //当前坐标值
float Y_Unit; //计数单位(0.00625)

if(nCurrAxis == Y_AXIS)
{ //----------------------Y轴
if(nType)
{ //轴正向操作
Y_Axis_Value += Y_Unit; //当循环加到1000.0就出问题
}
else
{ //轴反向操作
Y_Axis_Value -= Y_Unit; //当循环减到-100.0就出问题
}
Show(Y_Axis_Value); //显示坐标值
}
请问是什么原因?
...全文
539 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zufei 2011-11-13
  • 打赏
  • 举报
回复
原来是显示缓冲区设细了!

char Show_Buf[16] 改 [24] 就行了

多谢各位提点!!

schlafenhamster 2011-11-13
  • 打赏
  • 举报
回复
%4.3f mm =“1000.0,或到-100.0”
改8.3
zufei 2011-11-13
  • 打赏
  • 举报
回复
开始也以为是显示函数问题,应该不是!

char code ZB_x[]={"轴X: %4.3f mm "};
sprintf(&Show_Buf, &ZB_x, X_Axis_Value);

现象是当按住X+,X-键,坐标值从零开始计数,到1000.0,或到-100.0坐标值时就停止计数!
好像是在浮点函数里不执行混乱跳出!用_chkfloat_(X_Axis_Value);检查当前浮点数又正常!
schlafenhamster 2011-11-13
  • 打赏
  • 举报
回复
是 Show(Y_Axis_Value); //显示坐标值
有问题?
woshi_ziyu 2011-11-13
  • 打赏
  • 举报
回复
出现什么问题?

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧