
有其他想法可以回复一起讨论。
希望我的回答能帮助到你。
原地等待10MS的话,会耽误你的程序运行。如果你程序本身不在乎,那就为所谓。但是,单片机都是死循环程序。你完全可以利用程序本身一次循环的时间,来模糊计算延时。例如,程序本身循环一次要1MS,那么计数10次,就是10MS,就行了
这种按键消抖前面部分还可以接受,但是后面用while等待松键的方式不是很好,最好用成标志变量。我在下面写一段,你拿去试一下看可不可以:unsigned char KeyDownFlag=1// 为0表示有按键按下并还未进行处理,为1表示没有按键按下
void KeyDelay()
{
unsigned int i
for(i=0i<500i++)
{
i++
}
}
void KeyCheck()
{
if(K1 == 1)// 松键检测
{
KeyDownFlag=1
}
if(KeyDownFlag==1)//如果没有未处理的按键
{
if(K1==0)
{
KeyDelay()
K1 = 1
if(K1==0)
{
// 在这里添加要运行的程序
liu()
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)