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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)