c单片机红外解码程序汇编版和c语言版

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c单片机红外解码程序汇编版和c语言版

集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

纯软件解码 --- 汇编版

利用程序判电平和时间进行解码,缺点是浪费系统软件资源;优点是对系统硬件要求稍低

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 ;四字节数据是否接收完

MOV A,33H

CPL A

CJNE A,32H,DDXH ;键值确认,解码

MOV R4,A

;==========这里已经取出键值,存在R4中

==================================================

MOV R7,#100;

TSY:MOV R6,#255

DJNZ R6,$

CPL BB

DJNZ R7,TSY

MOV A,#0CDH ;键值高位输出

LCALL YJP_XZL

MOV A,R4

MOV B,#10H

DIV AB

MOVC A,@A+DPTR

LCALL YJP_XSJ

MOV A,#0CEH ;键值低位输出

LCALL YJP_XZL

MOV A,B

MOVC A,@A+DPTR

LCALL YJP_XSJ ;

LCALL DYBF ;调用灯控制子程序

LJMP DDXH ;返还等待下一次信号

YS845: ;延时845微秒

MOV R7,#255

DJNZ R7,$

MOV R7,#165

DJNZ R7,$

RET

YS3MS: ;延时3ms

MOV R7,#8

DDD:

MOV R6,#255

DJNZ R6,$

DJNZ R7,DDD

RET

T0ZDCX: ;T0中断程序

MOV TL0,#00H

MOV TH0,#00H

DJNZ R5,T0FH

SETB T0ZD

T0FH:

RETI

;===============以下是多余部分

=============================================================== ============

DYBF:

MOV A,#0C0H ;用号码前高位输出

LCALL YJP_XZL

MOV A,30H

MOV B,#10H

DIV AB

MOVC A,@A+DPTR

LCALL YJP_XSJ

相关文档
最新文档