红外遥控解码

[08-22 13:08:02]   来源:http://www.88dzw.com  电子制作   阅读:8577

文章摘要:again: ;//如果为低,继续往下面执行 mov tl0,#0 ;//清零TL0 mov th0,#0 ;//清零TH0 setb tr0 ;//开启定时器0 jnb p3.2,$ ;//等待高电平到来 jb p3.2,$ ;//高电平到来,此时开始计数 clr tr0 ;//高电平结束,停止计数 mov a,th0 ;//读取th0 值,TL0忽略不计 clr c ;// subb a,#12 ;// jc again ;//th0<12则转,即小于3.4ms,你可以算一下这个时间 mov a,#14 ;// clr c ;// subb a,th0 ;//和1

红外遥控解码,标签:电子制作网,http://www.88dzw.com
again:    ;//如果为低,继续往下面执行
 mov tl0,#0  ;//清零TL0
 mov th0,#0  ;//清零TH0
 setb tr0  ;//开启定时器0
 jnb p3.2,$  ;//等待高电平到来
 jb p3.2,$ ;//高电平到来,此时开始计数
 clr tr0 ;//高电平结束,停止计数
 mov a,th0 ;//读取th0 值,TL0忽略不计 
 clr c  ;//
 subb a,#12 ;//
 jc again ;//th0<12则转,即小于3.4ms,你可以算一下这个时间
 mov a,#14 ;//
 clr c  ;//
 subb a,th0 ;//和14比较,如果TH0>14则大于3.8ms
        jc again    ;//大于3.8ms,从新再检测
nextbit:  ;//起始位找到了,然后下一位
 mov tl0,#0 ;//
 mov th0,#0 ;//
 setb tr0 ;//启动定时器
 jnb p3.2,$ ;//等待高电平
 jb p3.2,$  ;//高电平到来,此时开始计数
 clr tr0 ;//高电平结束,停止计数
 mov a,th0 ;//读取计数值,TL0忽略不计
 clr c  ;//
 subb a,#8 ;//th0和8比较
 jc next  ;;;;//若 <2.2ms则转,再判断是否大于0.84ms
 mov a,#10 ;//再跟10比较
 clr c  ;//
 subb a,th0 ;//
 jc again ;;;;;;;//若 >2.7ms,则放弃,从新检测
 mov a,keydata ;// 符合大于2.2ms 小于2.7ms,即为“1”
 setb c        ;//C = 1
 rrc a  ;//把1移位进A
 mov keydata,a ;//保存
 inc r7  ;//计数器加1
 cjne r7,#8,nextbit ;//是否满8位
 inc r6   ;//计数加1
 cjne r6,#2,last8 ;//是否满两字节
 sjmp seach  ;//不满两字节,再新采集
last8:    ;//满1字节,再接下来第二字节
 mov keydata+1,a ;//把第一字节编码数据保存到31h里
 mov r7,#0  ;//计数器R7清零
 sjmp nextbit  ;//继续采集数据
next:      ;//小于2.2ms时转到这里
 mov a,th0  ;//读取计数值TH0
 swap a   ;//高4位与低4位对换
 mov r1,a  ;//保存到R1
 anl tl0,#0f0h  ;//取TL0高4位,低4位忽略不计
 mov a,tl0  ;//
 clr c   ;//
 rrc a  ;//
 rrc a  ;//
 rrc a  ;//
 rrc a  ;//
 add a,r1 ;//
 mov r1,a ;//
 subb a,#30 ;//以上几行是把TH0的低4位和TL0的高4位合并为1字节作为计数值
 jc nextbit ; //判断是否 <0.84ms,是则放弃,继续采集
 mov a,r1 ;//否
 clr c  ;//
 cjne a,#64,continue   ;//跟64比较
continue:  ;//
 jnc nextbit ;  //a>64表示采样值 >1.11ms  放弃
 mov a,keydata  ;//否则 ,符合位“0”
 clr c          ;//C  = 0
 rrc a   ;//把零右移进A
 mov keydata,a  ;//保存
 inc r7   ;//计数器加1
 cjne r7,#8,nextbit ;//是否满8位
 inc r6   ;//计数器加1
 cjne r6,#2,last_8 ;//是第一字节已经满
 sjmp seach  ;//
last_8:    ;//如果为第二字节

上一页  [1] [2] [3]  下一页


Tag:电子制作电子制作网电子制作 - 电子制作

《红外遥控解码》相关文章