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

如题所述

第1个回答  推荐于2020-02-28
这个程序中没有熄灭的程序,单片机当然不会有熄灭的操作。修改如下:
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;
}
}本回答被提问者采纳
第2个回答  2012-08-29
不用这么复杂,这样写就好了。
#include <reg51.h>
sbit LED1 = P1 ^ 0;
sbit LED2 = P1 ^ 1;
sbit KEY1 = P3 ^ 0;
sbit KEY2 = P3 ^ 1;
void main( void )
{
LED1 = 1;
LED2 = 1;
while(1)
{
if( KEY1 == 0 )
{
LED1 = ~LED1;
while( !KEY1 );
}
if( KEY2 == 0 )
{
LED2 = ~LED2;
while( !KEY2 );
}
}
}本回答被网友采纳