本人菜鸟,最近出了这么档子事:
我的某段程序如下:
void Write_LCD_GDRAM(uchar Row, uchar Line)
{
uchar i, dir, y, x;
y = 0x80+(Line%2)*0x10;
x = 0x80+(Line>1)*0x08+Row/2;
Write_LCD_Cmd(0x24); //扩充指令集
....
当Row和Line分别赋值14和1时,x应为0x87,以前程序计算也对。但现在此段程序一直没改过。x的运算结果变为0xA0.
如果将x = 0x80+(Line>1)*0x08+Row/2;改为x = 0x80+(Line>1)*0x08; x += Row/2; 计算便恢复正常,运行结果为0x87。
实在不明白哪出的问题,百思不得其解,求指点。 |