本次代码目的是实现中断函数中扫描函数,每按一次按键,按键数加一,同时不影响其他代码的运行
if(SW1==0)
{
SW1TimCnt10ms++;
if(SW1TimCnt10ms>=10) //消抖
{
SW1TimCnt10ms=0;
if(SW1==0)
{
while(!SW1); //等待按键松开
SW1EN=1; //使能按键1
}
}
}
以上代码会导致在等待按键松开时,其它代码无法执行,影响到LED灯的扫描,所以我对以上代码进行了改进,把延时放到按键判断代码外面进行,如果按键超过10ms就证明有按键按下,此时将延时是能标志位置1,这样代码就能往后面执行,不会堵在while函数里,在延时使能里判断按键是否松开就可以了,以下是改进代码。
if(SW1==0)
{
SW1TimCnt10ms++;
if(SW1TimCnt10ms>=10)
{
SW1TimCnt10ms=0;
if(SW1==0)
bSW1Delay=1;
}
}
if(bSW1Delay) //延时部分,等待按键松开
{
if(SW1!=0) //判断按键1是否松开
{
SW1EN=1;
bSW1Delay =0;
}
}