关于外部中断的一个问题

[复制链接]
 楼主| 赵超杰 发表于 2008-8-9 17:06 | 显示全部楼层 |阅读模式
我用51单片机的外部中断1来实现累加器加一功能,可按一次键结果总是加好多次,用电平触发
程序是这样的:
org 0013h
ljmp add1
org 0030h
add1:lcall delay;延时10ms
jb p3.3,return
inc a
lcall display;调显示程序
return:reti
delay:........
ret
display:......
ret
请指点一下问题出在哪?
花花牛 发表于 2008-8-9 17:25 | 显示全部楼层

程序的问题

你只检测按键按下,而没有检测按键松开,单片机的时间是很快的,微秒级的,所以,在你按下一次按键的时候,它已经检测了好几次了.
 楼主| 赵超杰 发表于 2008-8-9 17:33 | 显示全部楼层

释放按键时程序正常

难道延时有点短吗?释放按键时不影响程序。
51yao 发表于 2008-8-9 17:55 | 显示全部楼层

我觉得你可以确定按键按下并松开才加一啊。

hyhlfq 发表于 2008-8-9 20:10 | 显示全部楼层

好是利用中断进行键盘检测

最好是利用中断进行键盘检测
比如10MS一次,检测5次左右就认为按下了(这个是为了去抖动的)
再设置个标记位检测键盘松开
lyjian 发表于 2008-8-9 20:37 | 显示全部楼层

按键抖动引起

虽然只按了一下按键
但按键按下和放开时都会出现抖动现象
jerkoh 发表于 2008-8-9 21:46 | 显示全部楼层

re

jb p3.3,return  ;错误的
inc a
lcall display

return:reti    ;错误的

跳转到子程序返回,回哪里了啊?
lyjian 发表于 2008-8-9 23:07 | 显示全部楼层

当然是回到主程序

lyjian 发表于 2008-8-9 23:09 | 显示全部楼层

没仔细看

中断改为下降沿触发应该就好了
2楼说的是对的
jerkoh 发表于 2008-8-9 23:17 | 显示全部楼层

re

原来是在中断了
我搞错了。没仔细看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

96

帖子

0

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