本帖最后由 dingwenke 于 2014-3-28 20:46 编辑
事情是这样的,小白编写了一个51
单片机驱动1602LCD的小程序,希望显示的内容是:第一行,空两格+welcome!! 第二行,空一格+I am LCD。结果程序烧入单片机后显示第一行没有空格,但第二行正常,即第一行,welcome!! 第二行,空一格+I am LCD。(这个程序是分为三个文件,一个main.c文件,一个1602.c文件,一个1602.h文件,模块化编程嘛。。结果不成功) 后来小白又重新编了一边,程序内容几乎和第一个程序完全相同,只是把所有东西都弄到main.c里面了,即只有一个main.c文件,令人意外的是这样就正确显示了。。鼓捣好几天也没有一点头绪,请大神们指点指点。。。小白把程序和1602的文档压缩成附件了。。第一次发帖,不知道合不合规矩
-
-
1602.zip
下载积分: 积分 -1 分
596.65 KB, 下载次数: 4, 下载积分: 积分 -1 分
不用了,我找到原因所在了,while(--i);和while(i--);这两者的问题。本来以来这两个语句在延时的时候差别很小,可以忽略的,所以我两次编的程序其中这地方有点不一样,开始没放心上,后来又试了下,就找到问题所在了。。。还有,我说的显示的时候空格显示不出,是因为延时不够的原因。。看到的同志们可以引以为戒 最后,while(--i);和while(i--)这两个语句差别怎么会这么大?希望有懂得大神解释下 唉,让这个问题纠结了好几天,结果居然是这么不起眼的地方出错误。。。。
单单说while(--i);和while(i--)的话
while(--i)是i自减1后执行后面的,while(i--)是执行完后面的语句再自减;
举个例子,i初值为2时,while(--i)则语句循环一次;while(i--)循环两次(当然前提是while循环语句里面不改变i的值)。
一周热门 更多>