打印

做了一个红外解码的程序

[复制链接]
535|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
llia|  楼主 | 2021-4-1 23:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
设一个变量a,遥控上的一个键对应给a一个固定值,这个没问题,但是我想按一下遥控的某个键实现a++,就不行了, 按一下  显示出来的a的值并不是连续变化的,是不是因为按一次遥控接受了多次数据?

使用特权

评论回复
沙发
jiajs| | 2021-4-1 23:22 | 只看该作者
没懂你意思

使用特权

评论回复
板凳
jlyuan| | 2021-4-1 23:24 | 只看该作者

按一下  显示出来的a的值并不是连续变化的

这是怎么变化的呢?

使用特权

评论回复
地板
juventus9554| | 2021-4-1 23:25 | 只看该作者
我想要的效果是按一下 a的值加1  但现在是不定的有时候是加1有时候加2有时候3  什么都有

使用特权

评论回复
5
pengf| | 2021-4-1 23:27 | 只看该作者
你看看是不是按键按一次的时候,多次调用了a++的程序,设置一个标志位,确定按一次的时候,只调用一次a++程序

使用特权

评论回复
6
zhanghqi| | 2021-4-1 23:29 | 只看该作者

不妨采用现成的解码芯片YIRTX01。

使用特权

评论回复
7
xxrs| | 2021-4-1 23:31 | 只看该作者
你红外怎么解码的? 协议中最后部分有长按次数啊 用那个去判断!!

使用特权

评论回复
8
lium| | 2021-4-1 23:33 | 只看该作者
因为楼主没有做松手识别,一直按住就会一直执行a++。

使用特权

评论回复
9
yszong| | 2021-4-1 23:35 | 只看该作者
按下遥控器某键时令发送的编码第x位置1,解码程序判断x位==1就调用一次a++

使用特权

评论回复
10
hanwe| | 2021-4-1 23:37 | 只看该作者
没有代码。怎么分析呢?

使用特权

评论回复
11
yufe| | 2021-4-1 23:42 | 只看该作者
设置状态标志  正确解到码后置标志位  再到主循环去判断这个标志为是否置位 置位就+1  并且清标志位

使用特权

评论回复
12
jiajs| | 2021-4-1 23:45 | 只看该作者
大多数遥控器在按下按键时,按规则不停发射对应此键的编码,这是导致不断加 1 的原因。
设定 a 为固定值也有这个过程,只不过每次都是该值,所有没有表现出问题。

使用特权

评论回复
13
wyjie| | 2021-4-1 23:46 | 只看该作者
可以这样处理,设置一个定时器,每检测到一次有效编码,检测此定时器,如果定时器值为 0,说明是一次“键下”事件,进行相应的处理;如果定时器不为 0,说明是“键压”事件,不进行加 1 处理,或进行“键压”事件处理。

使用特权

评论回复
14
wyjie| | 2021-4-1 23:48 | 只看该作者
处理完上述事件后,设定定时器的值,使定时器“归 0”的的时间大于 2 倍红外编码发射速率,若红外编码每秒发射 20 次,可以将定时器设定为 100mS。

使用特权

评论回复
15
wangzsa| | 2021-4-1 23:50 | 只看该作者
对,不要忘记在中断程序中对定时器倒数计时。

使用特权

评论回复
16
llia|  楼主 | 2021-4-1 23:52 | 只看该作者
搞定了,呵呵,犯了低级错误……多谢各位

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

961

主题

8893

帖子

4

粉丝