8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。重复此过程
/#include<reg52.h> #include<intrins.h> #define uint unsigned int void delay(z) //延时函数,有返回值型 {uint x,y; for(x=100;x>0;x--) for(y=z;y>0;y--); } void xyz() //8个LED闪烁五次 函数 { uint i; for(i=0;i<5;i++) { P1=0xff; delay(600); P1=0x00; delay(600); } } void main() { uint a,b,c,d; while(1) { a=0x7f; //最高位亮 b=a; a=_crol_(a,1); //左移,最低位到最高位 while(a!=b) //A不等于B跳出函数,也就是流水到最高位的时候跳出函数 { P1=a; delay(200); a=_crol_(a,1); P1=a; } c=0xfe; //最低位亮 d=c; c=_cror_(c,1); //右移,最高位到最低位 while(c!=d) //C不等于D跳出函数,也就是流水到最低位的时候跳出函数 { P1=c; delay(200); c=_cror_(c,1); P1=c; } P1=0xff; //LED全部熄灭 delay(300); xyz(); } }