独闷闷网

 找回密码
 立即注册
搜索
查看: 2440|回复: 0
收起左侧

[原创] 利用外部中断按键唤醒掉电模式,如何在外部中断函数里去抖动?已解答。

[复制链接]
发表于 2015-1-17 14:09:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 jianhong_wu 于 2015-1-17 14:31 编辑

威-广州:
我设置了外部中断为下降沿触发,
1.png

是这样子的,我要实现通过按键对单片机的工作状态进行取反,也就是睡眠和唤醒功能。因为单片机工作于掉电模式的时候需要外部中断触发才能唤醒,当唤醒的时候是点亮液晶的背光,否则背光灯关闭。当我按下按键的时候会出现抖动。

鸿哥-深圳:
毫无疑问,你在按键IO口处加的0.1uF是犯了江湖大忌,绝对不行。按键一般不能加电容,即使加电容,也不能那么大,那个0.1uF电容改成20p的电容吧。否则真的太大了。我今年曾经把李总解决过一个大的技术问题,这个问题在鸿哥还没出手前,李总的美国客户都为了这个问题专门过来,而且还相互扯皮僵持了三个月,最后鸿哥一出手,发现是他们的材料清单物料给错了,把按键的下拉电阻换成了一个104电容,引起按键不灵敏。这个问题被我发现后,从此李总对我刮目相看。

威-广州:
2.jpg
在外部中断服务函数是这么写,延时一会。但是不加电容去抖动效果也不行,怎么处理比较好?


鸿哥-深圳:
主要依靠软件去抖动的。你可以在外部中断里加一个标志位置1(而不是取反),然后通过标志把这个消息转移到主函数里进行去抖动处理,去抖动处理你可以参考我连载技术贴按键部分的内容,我的去抖不是用delay的。

威-广州:
我的矩阵键盘是移植鸿哥你的例程。我把这个开关机键独立拉出来,接到外部中断的。

鸿哥-深圳:
理解。独立按键你可以参考我的代码。主要依靠软件去抖动的。你可以在外部中断里加一个标志位置1(而不是取反),然后通过标志把这个消息转移到主函数里进行去抖动处理。这个是我的思路。

威-广州:
但是单片机进入掉电模式的时候,时钟信号都是停止的,那么定时器就没有工作了。

鸿哥-深圳:
你也可以这样加delay延时,延时后再判断一次P3.2的IO口状态。如果是51单片机,注意在判断读取P3.2之前要先把P3.2置1。

威-广州:
是在中断服务函数里面判断?

鸿哥-深圳:
对。

威-广州:
按照你这么做,正确的。已经解决了。程序修改如下:
3.jpg

乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2021-9-29 09:24 , Processed in 0.155845 second(s), 21 queries .

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