关于支持多遥控的帖子,包括遥控数据的结构及遥控码的定义,详见占线的名帖:[url]http://bbs.lcdhome.net/read-htm-tid-47190.html[/url]
本帖的结论是在占线实验成果的基础上进一步分析得出。
众所周知(依占线的帖子中说的),硬件配置数据的第5个字节是管多遥控的,为0的时候启用公版遥控(第5套配置数据),为1的时候启用公版和卓异遥控(第9套配置数据)。
因为第6字节的值恒为10H,对于上面第一种情况,两字节的值(2进)合起来为:
0000000000010000,而第二种情况,两字节合起来的2进制值为:
0000000100010000。从右往左数,就不难发现为什么启用的是第5种和第9种了。
占线同志经过长期的奋斗得出了如果第5字节为FF,可以同时启用多达9种不同的遥控,这时候两字节的2进制值显然是:
1111111100010000。不言而喻,启用的是第5,9,10-16种遥控。
如果想同时启用16种遥控,只需要将第5、6字节都设置为FF即可。
本帖内容只经过理论分析,没有进行实际验证。所以不发在海尔版,而发在数据分析版。
附图一张,以理解APP中的相关配置数据。
[p_w_upload=77966]
附一段程序代码,以理解程序中是如何判断当前使用的是哪种遥控码。
[code] CLR A
MOV DPTR, #7DC982H ;循环控制变量
MOVX @DPTR, A
L76E36E:
MOV DPTR, #7DC982H ;第几套遥控
MOVX A, @DPTR
MOV R7, A
CLR C
SUBB A, #10H ;共16套遥控码,超过后返回-1
JNC L76E3C5
MOV DPTR, #7DC983H
MOVX A, @DPTR
JNB ACC_0, L76E3B0 ;当前组合是否启用?
MOV R6, #00H
MOV R4, #01H
MOV R5, #02H ;102H=258,包括2字节系统识别码和256字节映射数据
LCALL L721E9A_C_IMUL
MOV A, #38H ;遥控厂商码
ADD A, R7
MOV R1, A
MOV A, #0BFH
ADDC A, R6
MOV R2, A
MOV R3, #0F8H
LCALL L721F66_C_ILDPTR ;取回的数据在B、A中
MOV R7, A
MOV DPTR, #7DC980H
MOVX A, @DPTR
CJNE A, B, L76E3B0
INC DPTR
MOVX A, @DPTR
CJNE A, 07H, L76E3B0
INC DPTR ;系统码匹配
MOVX A, @DPTR ;循环控制变量的值即为当前的遥控类型
MOV R7, A
MOV DPTR, #7DBC4BH
MOVX @DPTR, A ;返回遥控种类
RET
L76E3B0:
MOV DPTR, #7DC983H ;共16位,右移一位,如果最低位为1则启用
MOVX A, @DPTR
CLR C
RRC A
MOVX @DPTR, A
INC DPTR
MOVX A, @DPTR
RRC A
MOVX @DPTR, A
MOV DPTR, #7DC982H ;循环次数加1,继续查找下一个匹配
MOVX A, @DPTR
INC A
MOVX @DPTR, A
SJMP L76E36E
L76E3C5:
MOV R7, #0FFH ;没有找到符合的系统识别码,不支持该遥控,返回-1
RET[/code]