//开关按第一次 灯1亮,按等二次灯1关灯2亮,按第三次灯1和2同时亮,再按一次关闭
#include<reg52.h>
sbit led1=P0^0;
sbit led2=P0^1;
sbit K1=P3^2;
sbit SJ=P1^4; //LED发光管的使能端
void delayms(unsigned int xms) //延时子程序
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--); //i=xms即延时约xms毫秒
}
void main() //主函数
{
unsigned char a=0;
SJ=0; //开LED总使能
while(1) //大循环
{
if(K1==0) //检测按键是否按下
{
delayms(10); //稍作延时
if(K1==0) //再次检测按键是否按下即消除按键抖动
{
a++;
if(a>=4)
a=0;
}
while(!K1); //松手检测
delayms(10);
while(!K1);
}
switch(a)
{
case 1:
led1=0,led2=1;
break;
case 2:
led1=1,led2=0;
break;
case 3:
led1=0,led2=0;
break;
case 4:
led1=1,led2=1;
break;
default:
led1=led2=1,a=0;
break;
}
}
} |