这两种做法有什么不同呢?

2019-03-24 20:02发布

大家帮看看,显示一幅图片,第二种有问题,问题出在哪里呢?
void LCD_draw_map(void)
{
    unsigned char i,n;
    LCD_set_XY(0,0);
    for (n=0;n<6;n++)
    {               
        for(i=0;i<84; i++)
            {
            LCD_write_byte(bmp[i+n*84],1);                       
            asm("CLRWDT");
        }               
    }
}

void LCD_draw_map(void)
{
    unsigned char i,n,aa;
    LCD_set_XY(0,0);
    for (n=0;n<6;n++)
    {               
        for(i=0;i<84; i++)
            {
            LCD_write_byte(bmp[aa++],1);
            asm("CLRWDT");
        }               
    }
}

[ 本帖最后由 academic 于 2011-4-10 21:23 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
maylove
1楼-- · 2019-03-25 03:15
void LCD_draw_map(void)
{
unsigned char i,n,aa;
LCD_set_XY(0,0);
for (n=0;n<6;n++)
{
for(i=0;i<84; i++)
{
LCD_write_byte(bmp[aa++],1);
asm("CLRWDT");
}
}
}

这里的的aa++有问题吧!
局部变量没初始化,他的值是不确定的。aa++就不知道跑哪里去了
scbzlijun
2楼-- · 2019-03-25 07:22
用unsigned char aa,这个定义aa会溢出吧,当aa++到255后,aa就会又从0开始加起!第三次循环就会溢出,你试试用unsiged int aa来定义aa!

一周热门 更多>