本帖最后由 yfpc2006 于 2019-2-15 13:21 编辑
没有用中断,用查询的方法,能实现,但偶尔还是有些不稳定,看一下还需要优化什么?
u8 KEY1,KEY2,KEY1_F=0,KEY2_F=0,OUT1=0,OUT2=0,i=0;
void Scan_KEY(void)
{
if(KEY1==1 && KEY2==1 && KEY1_F==0 && KEY2_F==0)
{
OUT1=0;
OUT2=0;
}
else if(KEY1==0 && KEY2==1 && KEY1_F==0 && KEY2_F==0)
{
OUT1=1;
OUT2=0;
KEY1_F=1;
}
else if(KEY1==1 && KEY2==1 && KEY1_F==1 && KEY2_F==0)
{
for(i=0;i<50;i++) //根据响应需求进行调节
{
if(KEY2==0)
{
OUT2=1;
KEY2_F=1;
KEY1_F=0;
break;
}
delay_ms(10); //根据响应需求进行调节
}
KEY1_F=0;
OUT1=0;
}
else if(KEY2==0)
{
OUT1=1;
OUT2=1;
KEY2_F=1;
}
else if(KEY1==1 && KEY2==1 && KEY1_F==0 && KEY2_F==1)
{
OUT1=1;
OUT2=0;
}
else if(KEY1==0 && KEY2==1 && KEY1_F==0 && KEY2_F==1)
{
OUT1=1;
OUT2=0;
KEY1_F=1;
}
else if(KEY1==1 && KEY2==1 && KEY1_F==1 && KEY2_F==1)
{
OUT1=0;
OUT2=0;
KEY1_F=0;
KEY2_F=0;
}
} |