找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于红外遥控功能中断问题

[复制链接]
跳转到指定楼层
楼主
ID:956872 发表于 2021-8-29 19:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
红外接收是用外部中断IO口实现的,那遥控的功能服务怎么中断?
按键1是正向流水灯,按键2是反向流水灯,现在按了1之后只能等流水灯跑完了再按2才有反应。

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

使用道具 举报

沙发
ID:161164 发表于 2021-8-29 22:20 | 只看该作者
不要用delay,不要用for
回复

使用道具 举报

板凳
ID:956872 发表于 2021-8-29 23:00 来自手机 | 只看该作者
lkc8210 发表于 2021-8-29 22:20
不要用delay,不要用for

这不现实啊,循环都不用怎么实现需要的功能。我就没明白功能服务怎么中断,物理按键可以直接外部中断,换成红外该怎么中断
回复

使用道具 举报

地板
ID:962935 发表于 2021-8-29 23:13 | 只看该作者
那是因为你是一个循环就跑完整个流水灯的过程,你可以把流水灯的控制分在所有循环里,每次循环根据变量不同的状态决定io的操作逻辑。这样你收到新指令就可以在下一个小循环做出改变,而不需要等很久。这就是硬件定时器的作用。
回复

使用道具 举报

5#
ID:956872 发表于 2021-8-29 23:50 来自手机 | 只看该作者
haistart 发表于 2021-8-29 23:13
那是因为你是一个循环就跑完整个流水灯的过程,你可以把流水灯的控制分在所有循环里,每次循环根据变量不同 ...

红外功能服务函数用的case,流水灯循环中加入键码变量判断,那怎么跳转到新变量对应的case那条执行相应代码
回复

使用道具 举报

6#
ID:477532 发表于 2021-8-29 23:59 | 只看该作者
你得使用外部触发,直接跳转到相应的中断服务函数中去
回复

使用道具 举报

7#
ID:161164 发表于 2021-8-30 00:10 | 只看该作者
PEB188 发表于 2021-8-29 23:00
这不现实啊,循环都不用怎么实现需要的功能。我就没明白功能服务怎么中断,物理按键可以直接外部中断,换 ...


  1. while(1){
  2. for(i=0;i<8;i++){
  3. //your code
  4. }
  5. }
复制代码

改为
  1. i=0;
  2. while(1)
  3. {
  4. //your code
  5. if(++i>=8)i=0;
  6. }
复制代码
回复

使用道具 举报

8#
ID:161164 发表于 2021-8-30 00:14 | 只看该作者
PEB188 发表于 2021-8-29 23:00
这不现实啊,循环都不用怎么实现需要的功能。我就没明白功能服务怎么中断,物理按键可以直接外部中断,换 ...

我在你之前的贴子中已回答了类似的例子
回复

使用道具 举报

9#
ID:956872 发表于 2021-8-30 09:14 | 只看该作者
Ledge 发表于 2021-8-29 23:59
你得使用外部触发,直接跳转到相应的中断服务函数中去

红外是中断0触发解码的,那解码后跳入中断1函数中去,用两个中断是吗?
回复

使用道具 举报

10#
ID:624769 发表于 2021-8-30 14:06 | 只看该作者
外部中断响应红外请求,开定时器中断,关外部中断。
定时器中断解码,生成键码,关定时器中断,开外部中断。
主程序根据键码判断该干啥。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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