有关单片机 for循环语句 控制 流水灯 的问题

void main(void)
{
unsigned char i;
for(i=0;i<255;i++) //注意i的值不能超过255
{
P0=i; //将i的值送P0口
delay(); //调用延时函数
}
}
当255次循环执行完后应当跳出循环的,可是为什么我在实验板上运行时8个灯一直循环,没有跳出循环?(而是循环完255次后,又自动装初值i=0,再次进行循环?)难道是我对for循环理解有误?求各位帮帮忙!谢谢啦!

void main(void) {}主程序是一直循环的,当i=255循环完255次后,主程序又从头开始,进入for循环i=0,再次进行循环,其实for已经完成一个循环了,你可以在for循环结束后加入while(1);在当前语句循环
void main(void)
{
unsigned char i;
for(i=0;i<255;i++) //注意i的值不能超过255
{
P0=i; //将i的值送P0口
delay(); //调用延时函数
}
while(1); //在这里循环,当然你也可以在这里加入其他语句或子程序
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-04
void main(void) // 因为循环结束后 又返回到开始处 继续执行了。
{
unsigned char i;
for(i=0;i<255;i++) //注意i的值不能超过255
{
P0=i; //将i的值送P0口
delay(); //调用延时函数
}
while(1) // 这样循环就不会 返回 上面再执行了。
{ // 停在这里了。
}
}
第2个回答  2013-02-04
void main(void)
{
unsigned char i;
for(i=0;i<255;i++) //注意i的值不能超过255
{
P0=i; //将i的值送P0口
delay(); //调用延时函数
}
while(1); //跳出循环死等在这
}

在main里执行的函数会反复执行,
第3个回答  2013-02-04
按照你这个程序,是没错的。
出现循环估计就像wolf_lhy说的那样,你for循环里结束条件不小心写成i<=255了,实际上应该是i<255或者i<=254
第4个回答  2013-02-04
因为255+1=0,所以进入了反复循环。你把程序改为254就不会了

有关单片机 for循环语句 控制 流水灯 的问题
void main(void) {}主程序是一直循环的,当i=255循环完255次后,主程序又从头开始,进入for循环i=0,再次进行循环,其实for已经完成一个循环了,你可以在for循环结束后加入while(1);在当前语句循环 void main(void){ unsigned char i;for(i=0;i<255;i++) \/\/注意i的值不能超过255 { P0=...

如何用单片机控制流水灯闪烁?
可以用for循环试试unsingned char i;for(i=0;i<5;i++)\/\/流水灯闪烁程序。若干个灯泡依次点亮就叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处...

用51单片机写了一个流水灯程序,有一点问题,请高手解惑
单片机的流水灯程序,因为程序就这么写的,决定了流水灯左移7次,再右移7次,结束两个循环后,才能执行下面的while(!key),按键才有效,而在循环过程中,不执行while(!key),所以按键无效。下图画红框内的两个循环。要想按键随时有效,应该把两个移位函数_cror_,_crol_ 放在主程中,检测key也放在...

单片机流水灯全亮在灭在亮的程序怎么写
你流水灯都写好了 全亮全灭还不简单啊,设置 P0=0X00 (假设低电平亮,高电平灭) 在延迟一下 在P0=0XFF 在延时 不就OK了 把这几个指令打包下放到一个子程序里 你用按键控制的时候就让按键执行这个子程序 如果是 主程序循环的 话就放进主程序 ...

关于单片机流水灯左移右移的问题?
for(k=250;k>0;k--);理解这三句,第一句是指:m=20;m>0然后m--是真就执行:for(n=20;n>0;n--)for(k=250;k>0;k--);这两句,m--一直减,减一次,里面就执行一次,这里是20次。流水灯的左右移,第一用"intrins.h"的文件包,第二要要会定义赋值变量,第三延时,这是关键。

51单片机:流水灯每循环一次,都让一个灯常亮
for(j=0;j<8;j++){ m<<=1; P1=m;\/\/第一位for(k=j;k<8;k++){delay(2000);\/\/延时P1=_crol_(P1,1);\/\/左移1位} } while(1); \/\/ 如果要周而复始变化,就注释掉本行 }

单片机流水灯代码
一般来说,实现流水灯功能需要以下步骤:首先确定单片机型号和开发环境,并熟悉指令集和寄存器配置。然后确定LED灯的连接方式,并编写程序来控制LED灯的亮灭状态。最后在程序中添加延时函数来实现LED灯的亮灭延迟。在编写程序时,需要注意语法错误和逻辑错误,并进行测试和调试,以确保程序能够正确运行并实现...

单片机的流水灯一个不亮,程序有问题吗?
第二个for语句嵌套的时候都要最后有分号,而第一个没有,是因为第二个是作为第一个的循环体。程序小改一下就好了:void main(){ while(1) { \/\/ { while(0) 改这行 P2=0X80;for(i=1000;i>0;i--)for(j=100;j>0;j--);P2=0X40;for(i=1000;i>0;i--)for(j=100;j>0;...

单片机 流水灯怎样全部闪烁 五次之后停止
可以用for循环试试unsingned char i;for(i=0;i<5;i++)\/\/流水灯闪烁程序。若干个灯泡依次点亮就叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据...

单片机做流水灯时,怎么使灯亮的时间长点,而延时到下一盏灯亮的时间短...
加一个for循环,定义一个值为100,或者更大,让循环里面是灯的亮,循环完事后立即去点亮另个灯,一直循环,这样看你控制几个灯,有点麻烦,最好和上面说的那样,定义几个延时子程序,灯亮调用这个,灭调用另一个时间短的。这样程序量会少些。

相似回答