极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 33146|回复: 11

求教: 多个按键使用中断

[复制链接]
发表于 2014-1-7 20:55:53 | 显示全部楼层 |阅读模式
arduino 328好象只有2个外部中断可以使用,但是我需要用到4个按键,而且按键功能必须使用中断来触发,想请教下各位,多个按键如何使用中断来判断?
回复

使用道具 举报

发表于 2014-1-8 10:39:54 | 显示全部楼层
bh7jec 发表于 2014-1-8 09:43
因为主循环里有工作要做,耗时也比较长,如果在其中判断按键是否按下,就会出现不按键不灵,因为在做其他工 ...

试试这样行不行:

D6\7\8\9作为输入,外部电阻上拉;
按键一端接地,一端与输入口相连;
D2作为中断输入,上升沿触发;无按键按下时,三极管导通,D2为低电平;
按键按下时,输入口电平被拉低。同时三极管基级被拉低至0.6V,三极管截至,D2为高电平,触发中断;
在中断程序中读取D6-9的状态,哪个为低电平,就是哪个被按下了。




你的主程序里,做了什么工作,导致耗时较长?
上面是按照你的思路的解决方案,用的器件非常多,并不是很好的方案。
较好的方式,应该是程序避免使用延时;然后查询各输入端口的状态。

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-1-7 22:48:42 | 显示全部楼层
4个按键应该怎样接线呢?
回复 支持 反对

使用道具 举报

发表于 2014-1-7 23:46:14 | 显示全部楼层
为什么一定要中断触发呢?
回复 支持 反对

使用道具 举报

发表于 2014-1-8 08:58:27 | 显示全部楼层
恩 可以试试 polling 的方式,不一定polling就不行,因为按键是一个机械动作,耗时比电子的要长很多的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-8 09:43:48 | 显示全部楼层
因为主循环里有工作要做,耗时也比较长,如果在其中判断按键是否按下,就会出现不按键不灵,因为在做其他工作的时间中,这个时候按下键并不能够正好被检测到,所以必须使用中断来触发,这样按键才灵敏,而且可以随时中断当前工作。  现在我想知道的是,外部中断口才2个,但我要用到4个键,线路改怎么接呢?
回复 支持 反对

使用道具 举报

发表于 2014-1-8 09:54:50 | 显示全部楼层
bh7jec 发表于 2014-1-8 09:43
因为主循环里有工作要做,耗时也比较长,如果在其中判断按键是否按下,就会出现不按键不灵,因为在做其他工 ...

想办法加入一个或门,挂到中断上。当出现按键的时候就跳到中断程序中,再检查具体是哪个按键。

不过如何设计这样的电路我就不懂了,请高手支招吧。
回复 支持 反对

使用道具 举报

发表于 2014-1-9 22:41:23 | 显示全部楼层
https://code.google.com/p/arduino-pinchangeint/
用內建的pinchange中斷做觸發
好處是寫法跟現在的中斷幾乎一樣,atmega328所有輸入都可以用
缺點是跟同樣用到pinchange中斷的庫相衝,例如software serial

#include <PinChangeInt.h>
PCintPort::attachInterrupt(按鍵,程序,狀態);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-10 09:23:03 | 显示全部楼层
请问楼上的,如果用內建的pinchange中斷做觸發的话,是不是外围电路就没这么复杂了,只需要在几个输入端口上接按键就可以了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-10 10:57:01 | 显示全部楼层
http://blog.ardublock.com/zh/201 ... braries-on-arduino/
Arduino上有关事件驱动库的评估

貌似上面的很多库应该可以解决,还没试,先贴上链接。
回复 支持 反对

使用道具 举报

发表于 2016-5-25 09:59:05 | 显示全部楼层
求源代码!!!!
1.本设计题目要求当51单片机遇到几个外部中断事件都需要使用外部中断的情况(但51单片机的外部中断只有两个)此时可使用联合中断申请的方式来处理。使用外部中断0来检测4个外部中断事件。
2.硬件电路要求:3个由按键和上拉电阻构造的低电平事件信号通过74LS21四输入与门连接到单片机的外部中断引脚INT0(P3.2)上,然后3个信号分别连接到单片机的P1.0—P1.2引脚上。
回复 支持 反对

使用道具 举报

发表于 2016-5-28 18:08:23 | 显示全部楼层
还有  14 + 6 个 外部 电平变化中断
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 07:28 , Processed in 0.046725 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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