怎么解决这种现象

[复制链接]
4487|22
 楼主| wangzsa 发表于 2011-4-9 22:16 | 显示全部楼层 |阅读模式
摁一次键,外部中断服务程序执行多次,原因是由于中断服务程序执行完后,按键还没有拉开,导致再一次进入中断
zhuww 发表于 2011-4-9 22:20 | 显示全部楼层
不要用外部中断做按键输入
zhanglli 发表于 2011-4-9 22:39 | 显示全部楼层
加延时不就好了。
lium 发表于 2011-4-9 22:43 | 显示全部楼层
你按下时,程序进入中断处理后关掉中断,然后在主函数里面加一句判断:松手时再开外部中断
guoyt 发表于 2011-4-9 22:55 | 显示全部楼层
外部中断弄成下降沿有效不就行了?
yufe 发表于 2011-4-9 23:04 | 显示全部楼层
最好不要这样做,这样做按键消抖是个麻烦事情
 楼主| wangzsa 发表于 2011-4-9 23:12 | 显示全部楼层
外部中断弄成下降沿有效不就行了?
guoyt 发表于 2011-4-9 22:55
不行,下降沿还是会被执行多次
llia 发表于 2011-4-9 23:20 | 显示全部楼层
还是在中断里加个延时函数好点
wangpe 发表于 2011-4-9 23:27 | 显示全部楼层
在中断里延时最傻的做法,不仅解决不了你的问题,还把中断的优点了用成了缺点。
如果我一直按着这个键不放那你不就一直是死在那里了。

评分

参与人数 1威望 +1 收起 理由
XIANSir + 1

查看全部评分

 楼主| wangzsa 发表于 2011-4-9 23:45 | 显示全部楼层
好的,不敢用了
mbutterfly 发表于 2011-4-10 00:58 | 显示全部楼层
2楼和我们经理一样的思路。不过为什么不可以?
外部中断比较快啊。而且这个看MCU的资源的,难道非要用定时器吗?定时器是好东西,干吗不留着慢慢用。
chunyang 发表于 2011-4-10 01:14 | 显示全部楼层
有时还是需要使用外中断来当按键的,比如按键唤醒等,可以在中断处理程序中加一个标志位或标志字节,退出中断时不要立刻使能中断,而是在主循环中根据标志是否有效来判断中断IO当前的状态,只有通过调用延时判断中断IO被释放后再开启中断使能,为下一次按键响应做准备。
流程:
中断服务程序:
XXX
XXX
设置状态寄存器
中断返回

主流程:
XXX
XXX
状态寄存器有效?
否则继续,是则调用键盘释放判断程序
XXX
XXX

键盘释放判断:
中断输入=0?
是则返回
否则延时(如果是多任务调度,可用其它任务的执行时间充当延时,具体思路见实时操作系统的任务调度机制)
再次判断
是则返回
否则清零状态寄存器并使能中断后返回。
xmdongd8899 发表于 2011-4-10 11:18 | 显示全部楼层
听说4.24要开武林大会,英雄帖己发往各处,7月份的武林大会在京城,届时将是各路英豪的盛宴,21IC有很多能人(能力很强的人),到时听这些实际搞开发的人的讲座,比在学校听老师讲过时东西一定要收获很多,有可能某个能人的观点会纠正你在大学期间建立起的错误观点,有可能你会见到比你年轻很多但武功比你高很多的人,这次武林大会,你会看到象菜农这样一等一的高手,也会看到春哥这样热心指点年青人的好心人........,没有盟主,天下武林一家人
xmdongd8899 发表于 2011-4-10 11:18 | 显示全部楼层
听说4.24要开武林大会,英雄帖己发往各处,7月份的武林大会在京城,届时将是各路英豪的盛宴,21IC有很多能人(能力很强的人),到时听这些实际搞开发的人的讲座,比在学校听老师讲过时东西一定要收获很多,有可能某个能人的观点会纠正你在大学期间建立起的错误观点,有可能你会见到比你年轻很多但武功比你高很多的人,这次武林大会,你会看到象菜农这样一等一的高手,也会看到春哥这样热心指点年青人的好心人........,没有盟主,天下武林一家人
cmy043 发表于 2011-4-10 11:42 | 显示全部楼层
学习  学习!!
yangyu050500 发表于 2011-4-10 12:41 | 显示全部楼层
看看先:(
 楼主| wangzsa 发表于 2011-4-10 12:55 | 显示全部楼层
多谢几位大侠
suqiusen202 发表于 2011-4-10 14:00 | 显示全部楼层
学习来的
ttlasong 发表于 2011-4-10 15:06 | 显示全部楼层
kymcu51 发表于 2011-4-10 17:02 | 显示全部楼层
有电平中断和下降沿中断,选择下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

914

主题

9040

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部