本人用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天了 - -