搜索
bottom↓
回复: 5

外部按键中断怎样消抖?

[复制链接]

出0入0汤圆

发表于 2007-6-22 20:45:51 | 显示全部楼层 |阅读模式
马老师,我现在着急呀,要马上解决这个问题.

  如果用按键作为外部中断的接入,不论是抖动还是完整的按键都会触发中断,进入相应的中断程序,回为如果是沿触发,只要检测有沿(抖动也满足条件),就会触发中断,所以只能在中断服务程序里面消抖了,问题是如果用你讲义上的状态机消抖,在中断里面每隔10MS调用read_key函数,但是这时T/C0匹配中断被屏蔽了,自然10MS这个条件永远也满足不了,所以只能用中断嵌套了,让CPU一直执行定时器的中断,这个条件在保证10MS外部中断执行时能得到满足,就是如果两个中断同时满足,先执行定时器的中断,执行完后再响应外部中断,这时也满足10MS了,但是我在外部中断里面开了全局中断,用中断嵌套,仍然不能进行消抖.

 我又用软件延时10MS试了下,也不能在外部中断里面调用read_key函数.

马老师,帮我分析一下,急呀!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2007-6-23 07:57:16 | 显示全部楼层
你没有看懂例子,

出0入0汤圆

发表于 2007-6-23 11:57:03 | 显示全部楼层
一个中断按键的处理,假定用INT0,外部中断函数这样处理:



1。下降沿触发中断。

2。进入中断后:记录时间,关闭INT0中断允许,设置标志key_ok=1,中断返回。这样本次按键过程不在进中断了。



主程序中采用代码:



if ((key_ok) && (key_scan))

{

    key_scan = 0;

    key_v = PIND.2;    //读按键输入口

    switch (key_state)

    {

      case key_state_0:                               

        if (key_v) key_state = key_state_1;// 键被释放,转换状态

        break;

      

      case key_state_1:

        key_state = key_state_0;

         if (key_v)               // 10ms后,键还释放,该按键过程完毕

        {

            key_ok = 0;

            清INT0中断标志位;

            允许INT0中断;

          }   

        break;

     }

}



key_scan 在定时中断中每10ms被置1。

出0入0汤圆

 楼主| 发表于 2007-6-23 15:17:22 | 显示全部楼层
马老师,我反应慢,也可能我对switch语句不懂,你上面的程序是这样理解的:

 一按按键,进入中断,保存当前值,因为中断允许关了,所以马上跳出中断,到主循环,假设也刚好满足key_scan=1,自然执行你的程序,又假设现在PIND.2上的状态是释放,如果是抖动,则开始一直在key_state_0和key_state_1这两个状态循环执行,10MS进去后肯定还是释放,就结束了你的程序,但是中断还是执行过了,值也保存下来了,一次按键还是能记两个值.

 不知道我这样理解对不对?
-----此内容被6353575于2007-06-23,15:22:15编辑过

出0入0汤圆

 楼主| 发表于 2007-6-23 15:24:45 | 显示全部楼层
1楼,能不能现详细指教一下.

出0入0汤圆

发表于 2007-7-24 16:03:29 | 显示全部楼层
马老师好:

    我是陈哲飞.我用的是keil,虽然写的也是c,但是不是avr.你上面的程序许多头文件定义我不知道.我想您可否把这个程序的原理说说呢?是不是进了外部中断后把中断使能标志关闭呢?其它还有什么?多谢老师了!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 02:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表