当前位置: 代码迷 >> 单片机 >> 89C51制作 遥控高低8位用户识别码通过十六进制P0 P1 LED显示的测试疑问解决方案
  详细解决方案

89C51制作 遥控高低8位用户识别码通过十六进制P0 P1 LED显示的测试疑问解决方案

热度:149   发布时间:2016-04-28 16:22:17.0
89C51制作 遥控高低8位用户识别码通过十六进制P0 P1 LED显示的测试疑问
本人用P0   P1接了16颗LED灯,当执行如下程序指令,P1口显示了十六进制低8位用户编码,P0口显示了高8位用户编码,但通过仿真后,用HT6222遥控器发射红外波形,接收板解码后两组LED灯显示的规律不一样,P1组灯全亮、P0组显示为01100110 ,这个遥控器有48个键,按每一个键只有P0 口LED多了一种显示无变化10110011,我查看了很多遥控资料,只写出了低8位用户地址码和高8位用户地址码,只是用来区分不同的电器设备,防止不同机种遥控码互相干扰,如果我用P0和P1口显22H数据码和23H数据反码,两组LED显示为相反亮、灭状态,请问我的用户编解码成功了吗?遥控解码成功了吗?


22H数据码和23H数据反码头比较与键值数据处理
;20H存入低8位用户编码,21H存入高8位用户编码的
;---------------------------
IR_COMP:
                    MOV   A,22H
                    CPL   A                                 ;将22H取反后和23H比较
                    CJNE   A,23H,IR_OUT         ;如果不等表示接收数据发生错误,放弃
                    MOV     P1,20H
                    MOV     P0,21H
IR_CHULI:
                    MOV     A,22H                       ;22H地址的内容为A   P113
                    ANL     A,#0FH
                    MOV     25H,A                       ;送个位显示单元
                    MOV     A,22H
                    ANL     A,#0F0H
                    SWAP     A                             ;累加器高低半字节互换
                    MOV     26H,A                       ;送十位显示单元
                    CALL     IR_SHOW                 ;显示键值
                    CALL     BEEP_BL                 ;蜂鸣器鸣响表示解码成功
                    JMP     IR_OUT


------解决方案--------------------
说说你的思路算了,我看程序真晕 = =
确定是HT6222的发码芯片的话,0和1码的低电平时间都是 0.56ms ,关键在于 高电平的时间不同
0码是 0.56ms ,1码是1.5ms左右的
貌似你是计算高电平的时间来判断是0码还是1码的吧?

另外HT6222的32位码的组成 8位地址码 8位地址反码 8位数据码 8位数据反码
所谓的反码就是取反,也就是说 0001 的反码是 1110 ,所以肯定相加之后为F的
这个是收到码之后必须写的程序判断收码是否成功
收到的8位地址码和8位地址反码相加是否为 ffff ,不是就出错了.数据码的判断同样.

怎么调程序,啰嗦多嘴说说吧 = =
在引导码结束的时候放断点 ,确定每次按键都能进来 ,否则程序有问题,然后在间隔码结束
的地方放断点........进去之后单步运行,看实际结果和预想结果是否相同

能说的只有这么多了,剩下的看造化吧,调多几天没有问题,俺当年也调了4-5天了 - -
  相关解决方案