我写的单片机遥控解码源代码核心代码
(仅供参考)
org 0300h
zh: push dph ;将识别后的遥控信号转换成16位动作代码
push dpl
push acc
push psw
setb psw.3 ;进入区i
clr psw.4
mov r0,#2fh ;转换2fh个单元
mov r1,#07h ;8位一小组
jnb 00h,h01 ;允许转换否?
h0:inc r0 ;取第一组第一位
cjne r0,#51h,h1 ;是否干扰?
sjmp h00 ;是则返回
h1:jc h2
sjmp h00
h2:cjne @r0,#03h,h0 ;开始转换第一组第一位
inc r0
cjne @r0,#03h,h0
inc r0
cjne @r0,#03h,h0
inc r0
cjne @r0,#01h,h0
inc r0
cjne @r0,#01h,h0
inc r0
cjne @r0,#01h,h0
inc r0
cjne @r0,#03h,h0
inc r0
cjne @r0,#01h,h0
cjne r0,#59h,h3 ;地址码正确否?
sjmp h00
;单片机遥控解码源代码
h3:jc h4
sjmp h00
h4:inc r0 ;地址码正确则开始转换指令码
mov a,@r0
jb acc.1,h5
clr 08h
sjmp h6
h5:setb 08h
h6:mov a,21h
rl a
mov 21h,a
djnz r1,h4 ;8位指令码转换完否?
setb 02h ;设允许执行该动作标志位
clr 01h ;恢复转换标志位
h00:mov 08h,#2fh
mov 09h,#07h
h01:pop psw
pop acc
pop dpl
pop dph
ret