c51单片机红外解码程序-汇编版和c语言版.pdf
文本预览下载声明
纯软件解码 汇编版
利用程序判电平和时间进行解码,缺点是浪费系统软件资源;优点是对系统硬件
要求稍低
ORG 0000H
T0ZD BIT 20H.2
XH BIT P3.3 ; 红外接收头数据接口
RS BIT P2.3
RW BIT P2.4
E BIT P2.5
BB BIT P3.6
ORG 0000H ;
AJMP MAIN
ORG 000BH ;T0 中断入口
LJMP T0ZDCX
ORG 0100H ; 主程序首地址
MAIN:
LCALL CSH
MOV DPTR,#TAB ; 总查表
SETB EA ;T0 中断设定
SETB ET0
MOV TMOD,#01H
DDXH: ; 信号接收前准备
SETB P2.0 ; 关信号指示灯
MOV P0,#0FFH
CLR TR0 ; 关 T0 中断
CLR T0ZD ; 接收信号时间判断
MOV R5,#4 ; 延时计数
MOV TH0,#00H
MOV TL0,#00H
;================ 解码主要过程 =========== 关键
===================================================
=========
JB XH,$ ; 等待电平变低,解码从这开始
CLR P2.0 ; 开信号指示灯,表示正在接收信号
MOV P0,#8EH
SETB TR0 ; 开 T0 中断
LCALL YS3MS
JB XH,DDXH ; 干扰检测
LCALL YS3MS
JB XH,DDXH ; 干扰检测
DD1:
JB T0ZD,DDXH ; 是否超出接收允许时间
JNB XH,DD1 ; 等待电平变高
LCALL YS3MS
JNB XH,DDXH ; 干扰检测
DD2:
JB T0ZD,DDXH ; 是否超出接收允许时间
JB XH,DD2 ; 等待电平变低
JSSJ: ; 信号确认,开始接收数据
MOV R0,#30H
ZJ: ; 接收一个字节数据
MOV R2,#8
WEI: ; 位数据,分辩 0 和 1
JB T0ZD,DDXH ; 是否超出接收允许时间
JNB XH,WEI ; 等待电平变高
LCALL YS845
MOV C,XH ; 取位数据
RRC A
DD3:
JB T0ZD,DDXH ; 是否超出接收允许时间
JB XH,DD3 ; 等待电平变低,为 1 的高电平提供过度
DJNZ R2,WEI ;8 位数据是否接收完
MOV @R0,A
INC R0
CJNE R0,#34H,ZJ ; 四字节数据是否接收
显示全部