大佬,为什么程序执行到if(a==0x00)时(八个灯一起亮),让它置于0xff(全关)会延时很久?

2019-05-07 19:42发布

//一个灯从下往下流,再从下往上流,延时1秒。不循环。

#include<reg52.h>

#include<intrins.h>

#define uint unsigned int

void delay(uint z)

{

uint i,j;

for(i=z;i>0;i--)

for(j=50;j>0;j--);

}

void main()

{

uint a,b;

a=0xfe;//11111110

b=0x7f;//01111111

while(1)

{

P1=a;

delay(1000);

a=a<<1;

if(a==0x00)

{

P1=0xff;

delay(1000);

while(1)

{

P1=b;

delay(1000);

b=b>>1;

if(b==0x00)

{

P1=0x00;

delay(1000);

P1=0xff;

delay(1000);

while(1);

}

}

}

}

}


2条回答
yswh1978
1楼 · 2019-05-07 20:42.采纳回答

你的循环中的

delay(1000);

while (1);  //这个是多余的,是它导致P1=0xff;后无限循环了

把它删除就应该可以了


可能是你设置了延时功能

一周热门 更多>