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

//一个灯从下往下流,再从下往上流,延时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个回答

你的循环中的

delay(1000);

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

把它删除就应该可以了


发布于 2019-05-07 20:42
查看更多

可能是你设置了延时功能

发布于 2019-05-07 20:31
查看更多
外卖券领取

相关问题

支持语音或者文本回复

语音最长一分钟

点击录音开始,最短不低于3秒