//一个灯从下往下流,再从下往上流,延时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);
}
}
}
}
}
你的循环中的
delay(1000);
while (1); //这个是多余的,是它导致P1=0xff;后无限循环了
把它删除就应该可以了
一周热门 更多>