在之前的按键扫描程序中,使用Delay进行消抖,同时按键一直按下时会进入死循环并占用机器时间。此时MCU无法处理其他事务,会造成单片机与外设的通信出现问题,因此考虑修改程序并加入长按功能。
传统的扫描程序存在无意义占用系统资源的问题,对于实时性要求较高的系统不建议使用。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15void Scan_Key()
{
if(S7==0)
{
Delay(200); //消抖
if(S7==0) //再次判断按键是否按下
{
count++;
while(S7==0) //避免按下按键不松开造成多次判断
{
Show_Count(count); //需要在死循环中加入数码管扫描程序
}
}
}
}