📄 红外接收.asm
字号:
;接收到的代码分别放在1AH/1BH/1CH/1DH中
;晶振:3.579545MHz
INT: CLR EA
MOV R6,#10
SB: ACALL YS1
JB P3.2,EXIT
DJNZ R6, SB
JNB P3.2, $ ;;等待高电平避开9毫秒低电平引导脉冲
ACALL YS2 ; ;延时4。74毫秒判断是否连发
JB P3.2,EXIT
MOV R1,#1AH ;将32位代码分别放在1AH/1BH/1CH/1DH中
MOV R2,#4
PP: MOV R3,#8
JJJJ: JNB P3.2,$
LCALL YS1
MOV C,P3.2
JNC UUU
JB P3.2,$
UUU: MOV A,@R1
RRC A
MOV @R1,A
DJNZ R3,JJJJ
INC R1
DJNZ R2,PP
MOV A,1AH ;;进行代码识别
XRL A,#0 ; ;判断1AH的值是否等于00000000
JNZ EXI ;;如果不同则无效将1CH清零
CLR P0.1
MOV A,1BH
XRL A,#11110111B ; ;再判断高8位地址是否正确
JNZ EXI
MOV A,1CH
CPL A
XRL A,1DH ; ;将1CH的值取反后和1DH比较 不同则无效丢弃核对数据是否准确
JNZ EXI
AJMP EXIT
EXI: MOV 1CH,#0
EXIT: SETB EA ; ;允许中断
RETI
YS1: MOV R5,#120 ;;精确延时882微秒
DJNZ R5,$
RET
YS2: MOV R4,#6 ; ;精确延时4740微秒
D2: MOV R5,#120
DJNZ R5,$
DJNZ R4,D2
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -