51单片机 2个独立按键控制一个led

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-29
两个按键控制一个led灯c51程序

#include
sbit led = P1^0;
sbit key1 = P2^0;
sbit key2 = P2^1;

void delay(unsigned int cnt) //简单的延时
{
while(--cnt);
}
/*------------------------------------------------
MAIN C Function
------------------------------------------------*/
void main (void)
{
while (1)
{
if(key1 == 0)/*按键1按下*/
{
led = 0; /*灯亮*/
delay(1000);
while(!key1); /*消抖*/
}
else if(key2 == 0) /*按键2按下*/
{
led = 1; /*灯灭*/
delay(1000);
while(!key2);
}
}
}

#include
#define uint unsigned int
#define uchar unsigned char
#define LED P0

sbit S1=P1^0; 按键1

void delay(uint i)
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}

void main()
{
if(s1==0)
{
delay(2);
if(s1==0)
{
LED=0;
}
}
}
这是个按键控制P0 口 当按键按下后P0口的灯会全部点亮,你的题目是控制多个led灯,太笼统了 都大同小异,你自己在看看吧。。。。。。希望能帮到你。

//k3是总开关,k1是二级开关。

//先按下k3,然后按下 k1,灯亮灭交替。

//--------------------------------------

//应该先检测二级开关 K1。

//发现 K1 按下后,再检测 K3 是不是已经在按着。

if(!k1) { //先检测二级开关
delay1(10); //消抖
if(!k1) {
while(!k1); //等待松开

//松开后,再检测 k3:

if(!k3) { //再检测总开关
delay1(10); //消抖
if(!k3) {
while(!k3);//等待松开
LED = ~LED;//亮灭交替
}
}
}
}

加一个qq吧,你的单片机要好好学习了!