c51独立按键程序,按下k1按键后对应的灯亮,但松开k1按键后灯还亮,k2也是如此,求大侠!

c51独立按键程序,按下k1按键后对应的灯亮,但松开k1按键后灯还亮,k2也是如此,求大侠!,第1张

这个程序中没有熄灭的程序,单片机当然不会有熄灭的 *** 作。修改如下:

if(k1==0)

P2=0xee

else

P2=0xff

if(k2==0)

P2=0xfd

else

P2=0xff

这是按住就亮,松开就灭的程序。

如果想实现按一次亮,再按一次熄灭。程序如下:

bit a=0,b=0//做按键点亮熄灭标志

while(1)

{

if(k1==0&&a==0)

{

P2=0xee

a=1

}

else if(k1==0&&a==1)

{

P2=0xff

a=0

}

if(k2==0&&b==0)

{

P2=0xfd

b=1

}

else if(k1==0&&b==1)

{

P2=0xff

b=0

}

}

#include "reg52.h"

typedef unsigned int u16

typedef unsigned char u8

sbit led=P2^0//把所要控制的led灯定义为p2.0这个口

sbit k1=P2^1

sbit k2=P2^2

void delay(u16 i)

{

while(i--)

}//一个延时程序

void main()

{

if(k1==1)

while(1)

{

led=1

delay(50000) //大约延时450ms

led=0

if(k2==1)

break

}

led=0

}

思路很简单,就是用检测的方法去扫描相应的按键是否被触发,然后执行相应的子程序。

while(1)

{ P1=aa

delayms(1000)

aa=_crol_(aa,1)

}

这前面的while(1)根本不会退出,也就是不会执行下面的if(key1 == 0)的语句了,所以按键按下去当然没有反应了

if(key1==0)

{

P1=0x7e


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11181783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存