21ic电子技术开发论坛
标题:
做了一个红外解码的程序
[打印本页]
作者:
llia
时间:
2020-1-18 10:46
标题:
做了一个红外解码的程序
设一个变量a,遥控上的一个键对应给a一个固定值,这个没问题,但是我想按一下遥控的某个键实现a++,就不行了, 按一下 显示出来的a的值并不是连续变化的,是不是因为按一次遥控接受了多次数据?
作者:
wangpe
时间:
2020-1-18 10:49
没懂你意思
作者:
wangpe
时间:
2020-1-18 10:52
按一下 显示出来的a的值并不是连续变化的
这是怎么变化的呢?
作者:
langgq
时间:
2020-1-18 10:55
我想要的效果是按一下 a的值加1 但现在是不定的有时候是加1有时候加2有时候3 什么都有
作者:
wangzsa
时间:
2020-1-18 10:59
你看看是不是按键按一次的时候,多次调用了a++的程序,设置一个标志位,确定按一次的时候,只调用一次a++程序
作者:
zhanghqi
时间:
2020-1-18 11:02
不妨采用现成的解码芯片YIRTX01。
作者:
zhanglli
时间:
2020-1-18 11:05
你红外怎么解码的? 协议中最后部分有长按次数啊 用那个去判断!!
作者:
lium
时间:
2020-1-18 11:10
因为楼主没有做松手识别,一直按住就会一直执行a++。
作者:
guoyt
时间:
2020-1-18 11:13
按下遥控器某键时令发送的编码第x位置1,解码程序判断x位==1就调用一次a++
作者:
hanwe
时间:
2020-1-18 11:16
没有代码。怎么分析呢?
作者:
yufe
时间:
2020-1-18 11:19
设置状态标志 正确解到码后置标志位 再到主循环去判断这个标志为是否置位 置位就+1 并且清标志位
作者:
wangpe
时间:
2020-1-18 11:22
大多数遥控器在按下按键时,按规则不停发射对应此键的编码,这是导致不断加 1 的原因。
设定 a 为固定值也有这个过程,只不过每次都是该值,所有没有表现出问题。
可以这样处理,设置一个定时器,每检测到一次有效编码,检测此定时器,如果定时器值为 0,说明是一次“键下”事件,进行相应的处理;如果定时器不为 0,说明是“键压”事件,不进行加 1 处理,或进行“键压”事件处理。
作者:
langgq
时间:
2020-1-18 11:26
处理完上述事件后,设定定时器的值,使定时器“归 0”的的时间大于 2 倍红外编码发射速率,若红外编码每秒发射 20 次,可以将定时器设定为 100mS。
作者:
wangzsa
时间:
2020-1-18 11:32
对,不要忘记在中断程序中对定时器倒数计时。
作者:
llia
时间:
2020-1-18 11:35
搞定了,呵呵,犯了低级错误……结贴啦,多谢各位
欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/)