非常简单的
;=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
;36US
GET_LOW:
CLR R0
GET_LOW_B:
JBC RC,IR ;2
RET
CALL DELAY8US ;8
CALL DELAY7US
CALL DELAY7US
CALL DELAY7US
JZ R0 ;
JMP GET_LOW_B ;34
RET
;=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
;36US
GET_HIGH:
CLR R0
GET_HIGH_B:
JBS RC,IR
RET
CALL DELAY8US
CALL DELAY7US
CALL DELAY7US
CALL DELAY7US
JZ R0
JMP GET_HIGH_B
RET
;=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
;红外解码
;
IR_DECODE:
CALL GET_LOW
LESS R0,2000/34,REMOTE_ERR ;6000
LARGE R0,6500/34,REMOTE_ERR
CALL GET_HIGH
LESS R0,6500/34,REMOTE_ERR
LARGE R0,7800/34,REMOTE_ERR
BS CTRL,1
LD FSR,SBUF
DECODE_J:
MOV A,@0X02
XOR CTRL,A
LD R1,08H
DECODE_I:
CALL GET_LOW
LARGE R0,900/34,REMOTE_ERR
CALL GET_HIGH
LARGE R0,4000/34,REMOTE_TAIL
LESS R0,1000/34,REMOTE_ERR
MOV A,@(2500/34)
SUB A,R0
RRC INDF
DJZ R1
JMP DECODE_I
JBC CTRL,1 ;IR DECODE FLAG
JMP DECODE_CHECK
INC FSR
JBS FSR,3
JMP DECODE_J
;解码完毕
JMP DECODE_COM
DECODE_CHECK:
MOV A,INDF
DEC FSR
XOR A,INDF
XOR A,@0X0FF
JBS STATUS,Z
JMP REMOTE_ERR
INC FSR
JMP DECODE_J
;*******************************************
REMOTE_TAIL:
MOV A,FSR
AND A,@0X0F
XOR A,@0X05
JBS STATUS,Z
JMP REMOTE_ERR
DECODE_COM:
DEC FSR
MOV A,@0X2A ;SYSTEM CODE=2AH
SUB A,INDF
JBS STATUS,Z
JMP REMOTE_ERR
CALL BEEP
DEC FSR
JBS INDF,3
JMP DECODE_Y
CALL CLOSE_SUB
JMP DECODE_X
DECODE_Y:
JBC CTRL,4
JMP DECODE_X
CALL OPEN
DECODE_X:
MOV A,INDF
AND A,@0X07
MOV MODE_BUF,A
SUB A,@0X04 ;是制热的话,就变成送风4--->1
MOV A,@0X01
JBC STATUS,Z
MOV MODE_BUF,A
BC FLAG,FG_LX
LD TEMPL,0X2F
SWAPA INDF
AND A,@0X0F
ADD TEMPL,A
ADD TEMPL,A
MOV A,@02H
SUB A,TEMPL
MOV TEMPH,A
DEC FSR
CLR FS_BUF
JBC INDF,5
BS FS_BUF,0
JBC INDF,6
BS FS_BUF,1
MOV A,FS_BUF
CALL CONVERT_FS
MOV FS_BUF,A
BC FLAG,FG_BAIFENG
JBC INDF,4
BS FLAG,FG_BAIFENG
BC FLAG1,FG_OFFTIME
BC FLAG1,FG_ONTIME
JBC INDF,0 ;HAS OFF TIME
JMP REMOTE_DECODE_ON_TIME
BS FLAG1,FG_OFFTIME
SWAPA SBUF+1
AND A,@0XF
MOV TIMERL,A
SWAPA SBUF+2
AND A,@0XF0
OR TIMERL,A
SWAPA SBUF+2
OR A,@0XF0
MOV TIMERH,A
JMP REMOTE_DECODE_TIMER_OK
REMOTE_DECODE_ON_TIME:
JBC INDF,1 ;HAS ON TIME
JMP REMOTE_DECODE_TIMER_OK
BS FLAG1,FG_ONTIME
MOV A,SBUF
MOV TIMERL,A
MOV A,SBUF+1
OR A,@0XF0
MOV TIMERH,A
;JMP REMOTE_DECODE_TIMER_OK
REMOTE_DECODE_TIMER_OK:
JBC CTRL,4
CALL SETUP
JMP REMOTE_DECODE_OK |