采用2051单片机控制的红外解码程序-创新互联
;*************************************************************************
;
; 文 件 名 : REMOTE.A51 *
; 芯片型号 : AT89C2051 MCU @6Mhz *
; 发射芯片 : PT2222 OR PT2213 *
; 功 能 : 遥控器键码接收解码程式 *
; 版 本 号 : VER. 2.00 *
;
;**************************************************************************
ir_rec_ok bit 00h
ir_first bit 01h
stack equ 50h
custom_code equ 21h
key_code equ 23h
custom_id data 0eh
leader_code data 11h ; 引导码
end_code data 5ch ; 尾码
code_0 data 02h ; "0" 码
code_1 data 04h ; "1" 码
;*************************************************************************
cn 0000h
jmp initial
cn 0003h
jmp ir_recever
;*************************************************************************
cn 0030h
initial: mov r0,#02h
mov r1,#7fh ;#7fh=127
clr_reg: mov @r0,#00h
inc r0
djnz r1,clr_reg ;条件转移指令 寄存器减1--为0顺序执行
mov sp,#stack
mov tmod,#00000001b ;模式1:16 位计数器,无预分频器,GATE=0,TR0=1 即可启动
mov ip,#00000001b ;外部中断0(EX0)为高优先级
mov tcon,#00000001b ;外部中断0(EX0),IT0=1 下降沿触发
clr et0 ;不允许T0中断
mov ie,#10000001b ;允许所有中断,外部中断0(EX0)允许
main_pro: nop
jb ir_rec_ok,key_pro
nop
jmp main_pro
;*************************************************************************
key_pro: nop ;1 个机器周期--24us
nop
nop
nop
clr ir_rec_ok
jmp main_pro
;************** 红外接收解码程式入口 *************************************
ir_recever: push acc
push psw
setb rs0 ;PSW.3
clr rs1 ;PSW.4,R1 区1--08H-0FH
mov a,th0
mov r2,a
mov tl0,#00h
mov th0,#00h
setb tr0
cjne a,#leader_code,chk_end1 ;引导码
mov r0,#20h
setb ir_first
int_return: clr ie0
pop psw
pop acc
reti
chk_end1: jnb ir_first,int_return ;位条件转移指令,ir_first=1 则顺序执行
cjne a,#end_code,read_code ;cjne a,#data,标号--相等则顺序执行
jmp int_return
read_code: mov a,r2
cjne a,#code_0,receive_1
jmp receive_0
receive_1: cjne a,#code_1,int_return ;#data--立即数,相等则顺序执行
setb c
jmp encode
receive_0: clr c
encode: mov a,key_code+1 ;key_code=23H
rrc a ;带进位的循环右移指令
mov key_code+1,a
mov a,key_code
rrc a
mov key_code,a
mov a,custom_code+1
rrc a
mov custom_code+1,a
mov a,custom_code
rrc a
mov custom_code,a
djnz r0,int_return ;寄存器减1条件转移指令--寄存器内容为0则顺序执行
mov a,custom_code
cjne a,#custom_id,ir_exit_int
mov a,key_code
cpl a ;累加器取反指令
xrl a,key_code+1 ;逻辑异或操作指令
jnz ir_exit_int ;判0转移指令,A=0 则转移执行
setb ir_rec_ok
jmp ir_ok_exit
ir_exit_int: clr ir_rec_ok
ir_ok_exit: clr tr0
mov tl0,#00h
mov th0,#00h
clr ir_first
pop psw
pop acc
reti
;**************************************************************************
db " ver. 2.00 zhou 00-10-17 16:57 "
end
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
名称栏目:采用2051单片机控制的红外解码程序-创新互联
转载源于:http://cdiso.cn/article/djsohs.html