#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主涵
void main()
{
uchar i;
P1=0xfe;
while(1) //第一个死循环
{
i=0;i++;
if(i<2)
{ for(i=0;i<7;i++)
{
P1=_crol_(P1,1); //P1 左循环
DelayMS(100);
}
for(i=0;i<7;i++)
{
P1=_cror_(P1,1); //P1 右循环
DelayMS(100);
}
}
if (i>=2) //第一个死循环跳出
{
uchar j;
P1=0xff;
while(1) //第二个死循环
{
j=0;j++;
if(j<7)
{P1=~P1;
DelayMS(150);
}
if(j>=7) //第二个死循环 跳不出
{ P1=0xff;
}
}
}
}
}
小弟是刚刚学的C程序应用,以上是一个8LED循环练习,我的想法是这样的,LED来回流水一次后全部闪烁7次,然后跳出,LED保持全部亮,试验结果是流水一次后开始闪烁,之后就一直在闪烁了。我看了一下程序,第一次进入While语句在我设的if条件跳出了,但是第二次我再用的时候就跳不出来了,这是为什么?是哪里出问题了呢? 还有一个问题就是,我想闪烁七次后又再次自动开始循环之前的步骤又应该怎么改,或者要用到什么语句?各位大神提示一下就可以了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>