yaokong.asm
来自「单片机红外解码及无线解码的应用」· 汇编 代码 · 共 124 行
ASM
124 行
;JK04 EQU P3.6;
JK03 EQU P3.7;
JK0 EQU P0.2;
IR EQU P1.0
DATABUFF EQU 10H
JK1 EQU P1.7
JK2 EQU P1.6
JK3 EQU P1.5
JK4 EQU P1.4
JK5 EQU P1.3
JK6 EQU P1.2
ORG 0000H
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
MOV R1,#DATABUFF ;设定1AH为起始RAM区
MOV R4,#14
C1:
MOV @R1,0FFH
INC R1
DJNZ R4,C1
START:
JB IR,$;等待遥控信号出现
MOV R6,#10
SB0: ACALL YS0;调用882微秒延时子程序
JB IR,START;延时882微秒后判断P1.0脚是否出现高电平如果有就退出解码程序
DJNZ R6, SB0;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
JNB IR,$;/////////////////
MOV R6,#9
SB1: ACALL YS0;调用882微秒延时子程序
JNB IR,START;延时882微秒后判断P1.0脚是否出现高电平如果有就退出解码程序
DJNZ R6, SB1;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
JB IR, $ ;等待高电平避开9毫秒低电平引导脉冲
MOV R6,#10
SB2: ACALL YS0;调用882微秒延时子程序
JB IR,START;延时882微秒后判断P1.0脚是否出现高电平如果有就退出解码程序
DJNZ R6, SB2;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
JNB IR,$;/////////////////
MOV R6,#13
SB3: ACALL YS0;调用882微秒延时子程序
JNB IR,START;延时882微秒后判断P1.0脚是否出现高电平如果有就退出解码程序
DJNZ R6, SB3;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
JB IR, $ ;等待高电平避开9毫秒低电平引导脉冲
;ACALL YS2 ;延时4.74毫秒避开4.5毫秒的结果码
MOV R1,#DATABUFF ;设定1AH为起始RAM区
MOV R2,#14 ;//4
PP: MOV R3,#8
JJJJ:
;JB P1.0,START;/////////////////
JNB IR,$;等待地址码第一位的高电平信号
LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOV C,IR;将P1.0引脚此时的电平状态0或1存入C中
JNC UUU;如果为0就跳转到UUU
;JNB P1.0,START;/////////////////
JB IR,$;如果为1就等待高电平信号结束
UUU: MOV A,@R1;将R1中地址的给A
RRC A;将C中的值0或1移入A中的最低位
MOV @R1,A;将A中的数暂时存放在R1中
DJNZ R3,JJJJ;接收地址码的高8位
INC R1;对R1中的值加1,换成下一个RAM
DJNZ R2,PP ;接收完16位地址码和8位数据码和8位数据反码,存放在1AH/1BH/1CH/1DH的RAM中
MOV A,DATABUFF+12
CJNE A,#60H,T11
CPL JK0
T11:
MOV A,DATABUFF+12
CJNE A,#0D0H,T2
CPL JK03
T2:
MOV A,DATABUFF+12
CJNE A,#0C8H,T3
CPL JK3
T3:
MOV A,DATABUFF+12
CJNE A,#00H,T4
CPL JK4
T4:
MOV A,DATABUFF+12
CJNE A,#68H,T5
CPL JK5
T5:
MOV A,DATABUFF+12
CJNE A,#0A8H,T6
CPL JK6
T6:
AJMP START
YS0: MOV R4,#20 ;延时子程序1,精确延时微秒
D1: MOV R5,#6
DJNZ R5,$
DJNZ R4,D1
RET
YS1: MOV R4,#20 ;延时子程序2,精确延时微秒
D2: MOV R5,#20
DJNZ R5,$
DJNZ R4,D2
RET
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?