函数如下:
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);
} |