51单片机用两个按钮控制一个LED灯的亮灭(不是那么简单请看我要求)

用两个按钮控制一个LED灯亮灭,要求:key2按下之后松开,再按下key3并松开此时LED灯才亮,只按key2,或者只按key3灯都不会亮。(注意:key2,key3是按... 用两个按钮控制一个LED灯亮灭,要求:key2按下之后松开,再按下key3并松开 此时LED灯才亮, 只按key2,或者只按key3灯都不会亮。 (注意:key2,key3是按钮,不能用开关代替)还请各位大神给出具体的编程方式,或者看看我的程序指出哪里有问题,小弟我在这里谢谢各位了。

程序:
#include<reg52.h>
int a;
int b;
sbit switch0=P2^0;
sbit switch1=P2^1;
sbit key2=P2^2;
sbit key3=P2^3;
sbit key4=P2^4;
sbit key5=P2^5;

void main()

{

if(key2==0)
{
a=1;
}
if(key3==0)
{
b=1;
}

if(a==1&&b==1)
{
P3=0x00;
}

}
两个按钮分别接在P2^2, P2^3. led灯 阴极 接在P3口的任一口都行,就当时接在P3^0吧,
阳极外接一个高电平。 当P3口满足条件输出低电平的时候,led灯被点亮。
展开
 我来答
烟火夜空
推荐于2017-11-22 · TA获得超过6620个赞
知道大有可为答主
回答量:1678
采纳率:93%
帮助的人:547万
展开全部
对你这种编程思想,我想问是跟谁学的啦!
对你这程序,我想问①先按K3、后按K2,你觉得程序结果会如何?②如果2个按键都按住不放,结果又会如何。
考虑一下上面的问题,就能看到你的程序问题了。当然你的程序问题,跟你的题目一样,没那么简单!后面还有一堆!!
追问
先按K3,后按K2 让灯亮,如果出现这个结果我也可以接受的。(而且我个人认为以上程序就可以满足要求了) 。    对于那个2个按键都按住不放,这个问题暂时不用考虑。(没人会这么干的,如果实在要考虑我会在程序后面加一条判断。)  现在就想问一下您,以上程序实现 先按K2,再按K3(或是先按K3,再按K2) ,灯都不亮,这到底是什么原因呢?
追答
至于你怎么按都不亮的问题,那是因为,你的程序是个单次系统,不是循环系统。程序一上电,就执行结束了。你压根就没能来得及按。
解决方案:main 函数中,增加 while(1) 循环体
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式