51单片机按键控制灯

来源:百度知道 编辑:UC知道 时间:2024/06/24 07:37:36
#include<at89x52.h>
void delay(unsigned char x)
{unsigned int y=200;
while(x!=0)
{ if(--y==0) --x;
}
}
void led()
{
unsigned char i,x;
i=0;
x=0xfe;
while(1)
{P1=x;
delay(2);
x<<=1;
x+=1;
if(++i==8){i=0;x=0xfe;}
}
}
mian()
{
unsigned m;
m=0;
while(1)
{
if(P2_0==0)
{m++;
while(P2_0==0);}
if(m%2==0)
{
led();
}
else P1=0xff;
}
}
程序要实现的是按一下按键灯要像流水灯的形式亮,再按一下全亮,灯的初始状态为全亮,这个程序还不能实现,需要怎么修改,请高手帮个忙!

我没看你的程序。不过大概可以给你个思路。
采集按键的次数做一个计数器。当计数器等于1的时候进入流水灯的模式。当计数器等于2的时候进入全亮的模式。
关于流水灯的模式:同样也需要一个计数器来控制这几个灯的使能! 你要做的就是计数器每加一,灯的使能就多以个有效。这样就能出现流水灯的形式了。
关于全亮模式:这个大概就不用我说了吧。就是让灯的使能全有效就OK了。
不知道我说的清楚么,要是没看明白可以给我写邮件。wyshun01@163.com