找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2682|回复: 7
打印 上一主题 下一主题
收起左侧

单片机中断为什么按一下数字跳10几下,这个也不好加delay吧

[复制链接]
跳转到指定楼层
楼主
ID:241249 发表于 2017-12-23 22:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机中断为什么按一下数字跳10几下,这个也不好加delay吧
需要如何设置呢
INT0,INT1中断 ,按一下按键跳了10几下
而且按键抬起来也会跳几下

请解释一下为什么 谢谢了!!


  • //主程序
  • void main()
  • {
  •         IE=0x85;
  •         PX0=1;        //中断优先
  •         IT0=1;
  •         IT1=1;
  •         while(1)
  •         {
  •                 if(K3==0) Count_A=0;
  •                 if(K4==0) Count_B=0;
  •                 Show_Counts();
  •         }
  • }
  • //INT0中断函数
  • void EX_INT0() interrupt 0
  • {
  •         Count_A++;
  • }
  • //INT1中断函数
  • void EX_INT1() interrupt 2
  • {
  •         Count_B++;
  • }

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:109943 发表于 2017-12-24 09:07 | 只看该作者
按键没有消抖导致的按键多次触发中断
回复

使用道具 举报

板凳
ID:164602 发表于 2017-12-24 09:08 | 只看该作者
用按键进行外部中断,同样是需要消抖的。就是要加delay!!!!!
时间还要加得大一点才好,因为按键消抖,包括按下消抖和松开消抖,这个也一样,所以delay时间稍长点好,不然就是你现在的现象。我是做过这个的,有点体会。
回复

使用道具 举报

地板
ID:261288 发表于 2017-12-24 09:56 | 只看该作者
加入按键防抖程序:读按键状态后延时10~20ms,再读一次按键状态。
回复

使用道具 举报

5#
ID:241249 发表于 2017-12-24 10:29 | 只看该作者
HC6800-ES-V2.0 发表于 2017-12-24 09:08
用按键进行外部中断,同样是需要消抖的。就是要加delay!!!!!
时间还要加得大一点才好,因为按键消抖 ...

总工 ,因为我做了T0计时 和T1下降沿中断计数
T1加delay会不会影响计时器T0的进程,还是需要增加一个T0优先避免中断互相影响这个问题?

回复

使用道具 举报

6#
ID:241249 发表于 2017-12-24 10:30 | 只看该作者
冰纯 发表于 2017-12-24 09:56
加入按键防抖程序:读按键状态后延时10~20ms,再读一次按键状态。

好的我试试
回复

使用道具 举报

7#
ID:164602 发表于 2017-12-24 13:34 | 只看该作者
weiwei850113 发表于 2017-12-24 10:29
总工 ,因为我做了T0计时 和T1下降沿中断计数
T1加delay会不会影响计时器T0的进程,还是需要增加一个T0 ...

没有看到你的功能要求全部,所以不好说,我在这里仅就按键中断而言。
如果按键与时间是相关的,怎么解决可能的冲突,没有具体的内容不好说。
从你上面程序看,你不是用的T0、T1定时器,而是外部中断INT0、INT1。
你定时要多么精确?是按下就计时开始,还是怎么的?
你上面的程序,不是已经有优先级设置了吗?
回复

使用道具 举报

8#
ID:266034 发表于 2017-12-24 14:16 | 只看该作者
好像设置的有一点不丢吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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