单片机外中断消抖的问题 我的方法为什么不行?

程序如下:我的想法是在进入外中断的时候把这个中断关了,然后返回主程序的时候再开开,但是这样不行啊?为什么啊?如果用if(KEY==0){delay_ms(10);if(K... 程序如下:
我的想法是 在进入外中断的时候把这个中断关了, 然后返回主程序的时候再开开 ,但是这样不行啊?为什么啊 ?如果用
if(KEY==0)
{
delay_ms(10);
if(KYE==0)
}的方法 那不就和扫描按键的方式差不多了吗?如果中断也需要在主程序中不断的检测 那多麻烦啊?软件消抖的方法难道只有这种方法么?
#include <reg52.h>
#include <absacc.h>
#include "k_dis.h"
unsigned char i=0;
void int_0(void) interrupt 2
{
EX1=0;
if(i<100)
{
i++;
}
else
{
i=0;
}
}
void main(void)
{
i=0;

EX1=1;
IT1=1;
EA=1;
while(1)
{
EX1=1;
dis_num(i);

}

}
展开
 我来答
joyoustech
推荐于2017-11-25 · TA获得超过1874个赞
知道小有建树答主
回答量:1465
采纳率:71%
帮助的人:1313万
展开全部
不建议用外部中断来检测按键。
外部中断是用来检测要求响应速度高(微秒级)的外设的,而按键的动作时间都大于40毫秒,你可以测试一下。
虽然还是有很多做开发板的把按键做在中断上,但那只是验证是否好用,产品上尽量不要这样做。
按键消抖也不要用延时10ms再检测一次的办法,延时的这10ms实在是浪费控制器的资源,要知道时间对微控制器来说是非常宝贵的。
在做按键检测时,建议设置一个10ms的定时器中断作为时钟节拍,并在中断中设置标志。
程序的主循环中检测时钟节拍标志,检测到标志后清除标志并扫描按键,记录当前按键状态并和上次检测的结果做比较,并记录相同的次数,连续三次检测到同一个按键按下,则确认按键按下。
这样既可以消抖保证按键的准确,又较少的占用了微控制器的时间资源,稍微增加了点程序的空间,在单片机做的人机界面的系统中,应该是最合算的。
下面两个问题,你可以参考一下。
http://zhidao.baidu.com/question/518522337?&oldq=1
http://zhidao.baidu.com/question/520571012?&oldq=1
更多追问追答
追问
您好  你说得在中断中设置标志的方法,我稍稍有点思路!  但是我也不理解我设想的那种方法啊 我不用延时 但是在刚进入外部中断的时候 外部中断就已经被关了啊  为什么  还会有按键抖动计数增加呢   既然关了外部中断 ,那么抖动的时候外部中断没有被触发啊 为什么还会有这样的是发生呢
追答
你可以测试一下按键动作的情况,抖动主要发生在按键按下的瞬间和抬起的瞬间,时间一般都小于1ms,你的中断服务程序时间很短,只有几个微秒,退出中断前还要再使能中断,消除不了1ms左右的抖动,更消除不了按键抬起时的抖动。
单片机系统一定要对每个外设都有时间的概念,外设时间跨度从微秒级到秒级,哪种时间跨度的外设处理的频率是什么样的要先算好,才能使程序稳定可靠。
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机复位电路问题可能会出现以下几种原因:1. 复位电路引脚接触不良或损坏。2. 复位电路设计不合理或参数未定义好。3. 电路接线错误,导致不能正确复位。4. 复位电路与其他电路有干扰,导致复位电路误动作。5. 单片机系统有故障,导致复位电... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
zhxiufan
2013-02-01 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38387
国家科技进步奖

向TA提问 私信TA
展开全部
进入中断后,不用关中断,因为你没退出中断(没有遇到RETI)是不会再次中断的。先延时10毫秒,再判断外部中断脚是否为低,这样来去抖,其实跟不采用中断的方式一样,只是更“灵敏”了,不会丢失有按键的机会。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友268bbee642
2013-03-01 · TA获得超过359个赞
知道答主
回答量:41
采纳率:0%
帮助的人:21.1万
展开全部
基于中断的按键消抖代码,中断设置跳沿触发,没有连续按键

void KeyPress(void) interrupt 0 using 0
{
Delay(3000);
if (!P3_2)
{
//按键响应代码
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式