51单片机,用按键实现外部中断,软件如何去抖?

如题所述

外部中断的一般都是采用延时程序,而且延时程序一般是利用定时器做10~15ms的延时去抖,来实现的,而且时间不是特别精确,单片机书上和有关资料上应该都有我写一个参考一下:
void DelayMS(unsigned char a)
{int i;
for(;a>0;a--)
for(i=110;i>0;i--);
}延时约为a毫秒,不过不够准确,可以通过keil软件或者汇编来确立更精确的延时时间!
在中断执行前先做判断:用if语句看看引脚的电平,如果没有跳变,那么再延时判断,如果还没有跳变那么再延时,如此重复;
等到电平跳变了,延时看看是不是电平收其他非操作性因素引起的,比如说电源抖动,延时之后再判断如果的确是跳变了,可以进行中断后的操作了!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-19
用定时器作10ms中断,进定时中断后作个标志。在外部中断里判断标志,达到延时防抖作用。
第2个回答  2012-02-19
先判断是否低电平,然后延时15ms左右,再判断是否低电平,是的话,执行指令本回答被网友采纳
第3个回答  2012-02-19
加一段延时程序