📄 upd6122.asm
字号:
;UPD6122-002红外线接收8051汇编程序.
;采用12MHZ晶振,中断读取.
ORG 0000H
LJMP ST
IR EQU P3.3 ;P3.3红外线输入端口
DISP EQU 0E28AH ;显示地址入口
ORG 0013H
LJMP IRRD
ORG 001BH
LJMP TRR1
ORG 030H
ST: MOV SP,#3FH
MOV PSW,#00H
MOV 20H,#00H
MOV R0,#30H
CLR A
L: MOV @R0,A
INC R0
CJNE R0,#34H,L
MOV IE,#0CH
SETB IT1
MOV TMOD,#11H
NOP
NOP
NOP
MOV R5,#0FFH
SETB EA
LED: MOV A,R5
CJNE A,#0FFH,GO
SJMP LED
GO: MOV R0,#30H ;显示处理
MOV R1,#7FH
LD: MOV A,@R0
ANL A,#0F0H
SWAP A
MOV @R1,A
DEC R1
MOV A,@R0
ANL A,#0FH
MOV @R1,A
DEC R1
INC R0
CJNE R0,#34H,LD
LCALL DISP ;调用显示
MOV R5,#0FFH
SJMP LED
IRRD: CLR EX1
PUSH ACC
PUSH B
PUSH DPL
PUSH DPH
PUSH PSW
MOV PSW,#01H
JB 20H.6 ,STOP
ST1: MOV TL0,#00H
MOV TH0,#00H
MOV R7,#0AH
L0: MOV R6,#0FFH
L1: JB IR,GO1
CP: DJNZ R6,L1
DJNZ R7,L0
CLR 20H.4
CLR 20H.5
CLR 20H.6
CLR 20H.7
SJMP RT
GO1: MOV R4,#28H
DJNZ R4,$
JNB IR ,CP
SETB TR0
SETB 20H.6
CLR 20H.7
SJMP RT
STOP: MOV R4,#28H
DJNZ R4,$
JB IR,RT
CLR TR0
CLR 20H.6
MOV A,TH0
MOV DPTR,#KKMM ;查表确定红外脉冲状态
MOVC A,@A+DPTR
CJNE A,#00H,B1
CLR C
SJMP OUT
B1: CJNE A,#01H,B2
SETB C
SJMP OUT
B2: CJNE A,#02H,B3
MOV R0,#30H
MOV R2,#08H
SETB 20H.4
CR: CLR 20H.5
PT: SJMP ST1
B3: CJNE A,#03H,CR
JNB 20H.5,ST1
SJMP M
OUT: CLR 20H.5
JNB 20H.4,ST1
MOV A,@R0
RRC A
MOV @R0,A
DJNZ R2,ST1
MOV R2,#08H
INC R0
CJNE R0,#34H,ST1
M: MOV R0,#30H
MOV A,@R0
CJNE A,#04H,ST1 ;修改此处的两条判断语句,可适应同类遥控器
INC R0
MOV A,@R0
CJNE A,#0D3H,ST1
INC R0
MOV A,@R0
MOV B,A
INC R0
MOV A,@R0
CPL A
CJNE A,B,PT
MOV R5,B
SETB 20H.5 ;连续按键识别标志
NOP
NOP
MOV TL1,#40H
MOV TH1,#25H
CLR 20H.7
SETB TR1
RT: POP PSW
POP DPH
POP DPL
POP B
POP ACC
SETB EX1
RETI
TRR1: JB 20H.7,GTT ;连续按键识别标志中断
MOV TL1,#40H
MOV TH1,#25H
CPL 20H.7
SJMP TR
GTT: CLR TR1
CLR 20H.5
CLR 20H.7
TR: RETI
KKMM: DB 0FFH,00H,00H,0FFH,0FFH,0FFH,01H,01H,03H,03H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,02H,02H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -