本帖最后由 samsunghellome 于 2013-8-17 18:02 编辑
程序实现功能:按下按键1再按下按键2,led灯亮
按下按键2再按下按键1,led灯熄灭
程序如下:
#include<reg52.h>
sbit KEY1=P3^0;
sbit KEY2=P3^1;
sbit LED1=P1^0;
int Flag=0;
void DelayUs2x(unsigned char t);
void DelayMs(unsigned char t);
void main (void)
{
KEY1=1;
KEY2=1;
while(1)
{if(Flag==0&&KEY1==0)
{DelayMs(10);
if(Flag==0&&KEY1==0)//按键1延时去抖
while(1)
{if(Flag==0&&KEY2==0)
{DelayMs(10);
if(Flag==0&&KEY2==0)
LED1=0;
Flag=1;
break;
}
}
while(Flag)
{if(Flag==1&&KEY2==0)
{DelayMs(10);
if(Flag==1&&KEY2==0)//按键1延时去抖
while(1)
{if(Flag==1&&KEY1==0)
{DelayMs(10);
if(Flag==1&&KEY1==0)
LED1=1;
Flag=0;
break;
}
}
}
}
}
}
}
void DelayUs2x(unsigned char t)
{
while(--t);
}
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
我软件调试通过,但硬件上,按下按键1再按按键2,led亮,正常。但是接下来,再按按键1(未按按键2),led灯竟然熄灭了,百思不得其解,求高手帮忙!! |