running_led(基础流水灯程序)
扫描二维码
随时随地手机看文章
明白了这个基础的流水灯思想,大部分流水灯程序都是这个基础流水灯演变而来的。
流水灯的流动:当开关(switch)闭合并且松开后,流水灯开始流动:
流水灯从两端向中间亮起,直至全部点亮——从中间向两端开始只有一个灭,其余都亮——全部灭掉——从两端只有一个亮灯流向中间——全部点亮(结束)
(proteus绘制原理图)
(从两端开始向中间亮起)
(流水灯全部点亮)
(从中间向两端流水灭灯)
(从两端向中间流水亮灯)
我的代码:
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit switch_led=P1^0;
void delay(uint delay_time);
void main()
{
uint i;
while(1)
{
if(switch_led==0)
{
delay(10);//防止误判
if(switch_led==0)
{
while(switch_led==0);//消抖
P0=0xfe;
P2=0x7f;
delay(1000);
for(i=0;i<7;i++)
{
P0=P0<<1;
P2=P2>>1;
delay(500);
}
P0=0x80;
P2=0x01;
delay(500);
for(i=0;i<7;i++)
{
P0=_cror_(P0,1);
P2=_crol_(P2,1);
delay(500);
}
delay(1000);
P0=0XFF;
P2=0XFF;
delay(1000);
P0=0xfe;
P2=0x7f;
delay(500);
for(i=0;i<7;i++)
{
P0=_crol_(P0,1);
P2=_cror_(P2,1);
delay(500);
}
P0=0X00;
P2=0X00;
}
}
}
}
void delay(uint delay_time)//延时1ms子程序
{
uint x,y;
for(x=delay_time;x>0;x--)
for(y=112;y>0;y--)
{;}
}