打印

IAR优化问题

[复制链接]
1957|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pkat|  楼主 | 2012-1-30 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
函数如下:
LCD_Display_unum8bit(17, Line5, timerun->Sec%100/10);//刷新秒显示
LCD_Display_unum8bit(18, Line5, timerun->Sec%100%10);
这样个位显示没问题,十位一直是0
把IAR速度优化优先级设置为中就没问题,或者是把两句中间加个1US的延时函数也可以,再或者把第二句改成
LCD_Display_unum8bit(18, Line5, timerun->Sec);
甚至是
LCD_Display_unum8bit(18, Line5, timerun->Sec%100);
都不会出问题,就是不能把"%10"加上,一加上十位就不正常显示(个位仍正常显示),十位一直显示0,仿真的时候看变量值是正确的,就是显示出来不对  
我的延时函数不是用那种循环来实现的,关于volatile的问题我已经注意了
有没有哪位遇到过相同问题的 过来讨论下

void LCD_Display_unum8bit(uint8_t Xpos,uint16_t Ypos,uint8_t num8bit)
{
  uint8_t Ascii;
  uint16_t xaddress;
  xaddress=Xpos*8;
  if(num8bit>9) num8bit=num8bit%100%10;
  Ascii=0x30+num8bit;
  LCD_DrawChar(xaddress, Ypos, &Ascii16[Ascii * 16],8);
}

相关帖子

沙发
chenxiongone| | 2012-1-30 10:45 | 只看该作者
沙发

使用特权

评论回复
板凳
yybj| | 2012-1-30 10:47 | 只看该作者
底层硬件驱动编写特别要注意延时的问题。

使用特权

评论回复
地板
sinadz| | 2012-1-31 22:10 | 只看该作者
这个难度不小

使用特权

评论回复
5
火箭球迷| | 2012-1-31 22:24 | 只看该作者
优化问题一般都比较难

使用特权

评论回复
6
czdo| | 2012-2-3 20:45 | 只看该作者
玩到这里的应该多是高手了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

2726

帖子

0

粉丝