单片机 一个外部中断,怎样可以同时处理红外线中断和按键中断?

51单片机.假设我的P3.3(外部中断1)脚接的是红外线的接收头,同时,P3.3脚还接了一个独立按键.当红外线接收头有信号,或者独立按键按下,都会触发中断.现在问题是,怎... 51单片机.
假设我的 P3.3 (外部中断1) 脚接的是红外线的接收头,同时,P3.3脚还接了一个独立按键.
当红外线接收头有信号,或者独立按键按下,都会触发中断.

现在问题是,怎样可以在同一个中断中,把 红外线 和 独立按键 区分开来,然后再分别进行处理呢?
我主要是要解决的思路.当然,有代码最好.而且最好是c代码.. 补充一下,1.红外信号需要在中断处理函数中进行解码2.不想使用红外和按键外接io口的办法解决(毕竟单片机本身io口不多,如果外接io口的话,不如直接接2个外部中断算了)3.如果可以解决,再问,如果我再在这个P3.3口接一个温度检测的器件(如18b02),怎样可以在同一个中断中同时区分,并分别处理红外,按键,和 温度 呢?
展开
 我来答
匿名用户
2013-11-06
展开全部
我提出的解决方案:确定硬件连接方式:红外不用说了,按键接上拉电阻在没按下时被拉高,按键按下时拉低,18b20直接接上。
首先,要找到按键跟红外触发中断的区别,即,当按键按下的时候最少最少也要持续20ms吧,在按键触发中断以后按键不会马上松开,所以进入中断延时20ms判断P3.3是不是低电平,如果是低电平那么就说明是按键按下。否则就是红外。注意:这种方法有种要求,就是红外触发低电平的时间不能超过20毫秒,否则会被判断成按键。建议你红外发送5ms为周期的脉冲信号。如果不向18b20发数据的时候它是不响应的。所以,他不会无故触发中断。读18b20数据的时候就把中断关掉,不过关掉期间可能会丢失红外数据,这点是避免不了的。还有一点,当你读18b20数据时这时来个红外的数据或者按键按下,就会影响,使数据出错不过你可以通过程序的算法来纠正错误数据,比如说,假如这个数据与上一次数据值相差很大,就舍弃。如果要求不高的话,这种方案完全可以实现。
匿名用户
2013-11-06
展开全部
同一IO口相同时间是做不出两面种功能,方法就是程序分出长按与短按区分功能,进行判断后执行相关动作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-11-06
展开全部
MD,要么不发问,一问就问这么高难度的... 分数才给20分,你也太吝啬了吧... 然后见LZ沙发空了,场面冷清,特地来捧场,至于你的问题嘛,你知道我不懂的,自己去百 度 一 下吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式