赞助论坛
  • 7111阅读
  • 0回复

其实,0301版的小海尔套片,可以同时支持16种遥控! [复制链接]

楼层直达
byzx  

发帖
445
精华
12
金币
658
威望
178
贡献
331
好评
134
注册
2010-03-02
楼主    byzx 发表于: 2010-06-21 11:15:16 
关于支持多遥控的帖子,包括遥控数据的结构及遥控码的定义,详见占线的名帖:[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]
本帖最近评分记录: 2 条评分