各位朋友,大家好!小编整理了有关为什么单片机delay不准确的解答,顺便拓展几个相关知识点,希望能解决你的问题,我们现在开始阅读吧!
...流水灯while(1){P0=K;K=1;delay_1s();}为什么不能正确执行?_百度...
单片机的流水灯程序,因为程序就这么写的,决定了流水灯左移7次,再右移7次,结束两个循环后,才能执行下面的while(!key),按键才有效,而在循环过程中,不执行while(!key),所以按键无效。下图画红框内的两个循环。
单片机启动时,端口为高电平即P1 = 0xff,时间比较的短,则会刚开始运行时八个灯全都亮。可以50ms定时20次,即TH0 = 0x3c,TL0 = 0xb0,这样误差会小一点。
char define uint unsigned int void main(){ uint i;uchar temp;temp=0xFE;P0=temp;while(1){ temp=_crol_(temp,1);P0=temp;for(i=0;i5000;i++);} } 这样试试。P0不是一个数。不能用来左移的。
while循环的用法是 while(判断条件)如果判断条件为真,则实行循环内部代码;如果判断条件为假,则跳出循环,执行后续代码。
应该是已经走了。但是你Keyscan后就调用另外两个函数。而两个函数也没有个执行的显示,所以看上去就象是一直在执行keyscan函数一样。而且你的while(1)这个执行条件,一直就是真。所以,你这个程序,首先是无法跳出循环。
各位小伙伴们,我刚刚为大家分享了有关为什么单片机delay不准确的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!