//開關按第一次 燈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;
}
}
} |