OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1323|回复: 3

求助,红外遥控,代码!!!!!!!!

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2023-2-1
在线时间
6 小时
发表于 2023-11-8 23:59:57 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 水水大多数 于 2023-11-14 21:49 编辑

求红外遥控的代码,可以识别短按和长按

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3280

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8183
金钱
8183
注册时间
2020-5-11
在线时间
3697 小时
发表于 2023-11-9 09:55:50 | 显示全部楼层
不管长按短按,开始都会有引导码和32位数据。
所以收到短按后,要等待一段时间没有收到“重码”才能认为是短按。
傲游截图20231109095126.jpg
专治疑难杂症
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2023-2-1
在线时间
6 小时
 楼主| 发表于 2023-11-9 19:39:03 | 显示全部楼层
LcwSwust 发表于 2023-11-9 09:55
不管长按短按,开始都会有引导码和32位数据。
所以收到短按后,要等待一段时间没有收到“重码”才能认为是 ...

怎么实现呢?
回复

使用道具 举报

10

主题

3280

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8183
金钱
8183
注册时间
2020-5-11
在线时间
3697 小时
发表于 2023-11-10 11:26:17 | 显示全部楼层

学会处理等待时间和标志,以下代码仅供参考,不保证正确性:
  1. 定义全局变量:
  2. int wait=0;//等待时间
  3. int flag=0;//长按标志
  4. int k=0;//键码

  5. 在定时器1ms中断里减计数:
  6. if(wait)wait--;

  7. 在收到按键32位数据码时:
  8. k=x;//得键值
  9. wait=200;//等待200ms
  10. flag=0;

  11. 在收到重码时:
  12. wait=0;
  13. flag=1;//表示长按

  14. 主循环:
  15. if(k)//有键值
  16. {
  17.         if(wait==0)//达到等待时间
  18.         {
  19.                 if(flag)//长按
  20.                 {
  21.                         flag=0;
  22.                         //执行长按处理                       
  23.                 }
  24.                 else//短按
  25.                 {                       
  26.                         //执短按处理
  27.                 }
  28.                 k=0;
  29.         }
  30. }
复制代码
专治疑难杂症
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 09:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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