【真跪求!】一个51单片机的软件消抖程序, 结果不正确。 小弟好学,望大虾指点。
答案:1 悬赏:20
解决时间 2021-01-24 04:36
- 提问者网友:杀生予夺
- 2021-01-23 13:31
【真跪求!】一个51单片机的软件消抖程序, 结果不正确。 小弟好学,望大虾指点。
最佳答案
- 二级知识专家网友:蓝房子
- 2021-01-23 14:04
这种按键消抖前面部分还可以接受,但是后面用while等待松键的方式不是很好,最好用成标志变量。我在下面写一段,你拿去试一下看可不可以:
unsigned char KeyDownFlag=1; // 为0表示有按键按下并还未进行处理,为1表示没有按键按下
void KeyDelay()
{
unsigned int i;
for(i=0;i<500;i++)
{
i++;
}
}
void KeyCheck()
{
if(K1 == 1) // 松键检测
{
KeyDownFlag=1;
}
if(KeyDownFlag==1) //如果没有未处理的按键
{
if(K1==0)
{
KeyDelay();
K1 = 1;
if(K1==0)
{
// 在这里添加要运行的程序
liu();
}
}
}
}
unsigned char KeyDownFlag=1; // 为0表示有按键按下并还未进行处理,为1表示没有按键按下
void KeyDelay()
{
unsigned int i;
for(i=0;i<500;i++)
{
i++;
}
}
void KeyCheck()
{
if(K1 == 1) // 松键检测
{
KeyDownFlag=1;
}
if(KeyDownFlag==1) //如果没有未处理的按键
{
if(K1==0)
{
KeyDelay();
K1 = 1;
if(K1==0)
{
// 在这里添加要运行的程序
liu();
}
}
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯