;-----------中断程序-------------------
INT:CLR EA ;暂时关闭CPU的所有中断请求
PUSH ACC
PUSH PSW
SETB RS0
CLR RS1
MOV R5,#17
L2:ACALL DELAY05_R5
JB IRIN,L10 ;位为1转移,否则顺执行 ;延时0.093ms后判断P3.2脚是否出现高电平如果有就退出解码程序
MOV R5,#8
L3:ACALL DELAY05_R5 ;延时0.5ms避开4.5毫秒高电平结果码
JNB IRIN,L10 ;4.5ms内出现低电平退出中断程序
DJNZ R5,L3 ;重复多次,目的是检测4.5ms内如果出现高低平就退出解码程序
L4:MOV R3,#0 ;8位计数器
L5:JNB IRIN,L6
ACALL DEL
JMP L5
L6:JB IRIN,L7
ACALL DEL
JMP L6
L7:MOV R2,#0
L8:ACALL DEL
JB IRIN,L9
MOV A,#8
CLR C
SUBB A,R2
MOV A,@R0
RRC A
MOV @R0,A
INC R3
CJNE R3,#8,L5
MOV R3,#0
INC R0
CJNE R0,#24,L5 ;改为23接收3位数据,
JMP L10
L9:INC R2
CJNE R2,#30,L8
L10:SETB EA ;允许中断,然后退出中断程序
RETI