c51独立按键程序,按下k1按键后对应的灯亮,但松开k1按键后灯还亮,k2也是如此,求大侠!
2个回答
展开全部
这个程序中没有熄灭的程序,单片机当然不会有熄灭的操作。修改如下:
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;
}
}
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;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
硕博电子
2026-03-17 广告
长沙硕博电子科技股份有限公司,创立于2007年7月,致力于为特种装备客户提供控制器、显示屏、操作面板等控制系统核心电子产品及整车电控系统整体解决方案。产品广泛应用于环卫机械、农用机械、矿山机械、应急救援装备、机场地勤装备、港口机械、高空作业...
点击进入详情页
本回答由硕博电子提供
展开全部
不用这么复杂,这样写就好了。
#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 );
}
}
}
#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 );
}
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询