📄 ir8604a.asm
字号:
SETB F_LOCAL
MOV LOCAL_SHIFT,#00H
LJMP READ_QUIT
READ2: MOV C,TRIGGER
MOV A,TRIG_SHIFT
RLC A
MOV TRIG_SHIFT,A
JNB ACC.7,READ3
JNB ACC.6,READ3
JNB ACC.5,READ3
JNB ACC.4,READ3
JNB ACC.3,READ3
JB ACC.2,READ3
JB ACC.0,READ3
SETB F_TRIGGER
MOV TRIG_SHIFT,#00H
LJMP READ_QUIT
READ3: MOV C,SW_A_SETUP
MOV A,SHIFT_A_SETUP
RLC A
MOV SHIFT_A_SETUP,A
CJNE A,#01H,READ4
SETB F_A_SETUP
LJMP READ_QUIT
READ4: MOV C,SW_B_SETUP
MOV A,SHIFT_B_SETUP
RLC A
MOV SHIFT_B_SETUP,A
CJNE A,#01H,READ5
SETB F_B_SETUP
LJMP READ_QUIT
READ5: MOV C,SW_C_SETUP
MOV A,SHIFT_C_SETUP
RLC A
MOV SHIFT_C_SETUP,A
CJNE A,#01H,READ6
SETB F_C_SETUP
LJMP READ_QUIT
READ6: MOV C,SW_D_SETUP
MOV A,SHIFT_D_SETUP
RLC A
MOV SHIFT_D_SETUP,A
CJNE A,#01H,READ_QUIT
SETB F_D_SETUP
READ_QUIT: RET
LOCAL_CONTROL: JB F_LOCAL,LOCAL1
sJMP LOCAL_QUIT
LOCAL1: JNB F_CHANNEL_OCCUPY,LOCAL2
sJMP LOCAL_QUIT
LOCAL2: CLR F_LOCAL
MOV C,A_ON_LEARNED
ORL C,A_OFF_LEARNED
JC LOCAL3
sJMP LOCAL_QUIT
LOCAL3: JB F_STATE_LOCAL,LOCAL5
JB A_ON_LEARNED ,LOCAL4
sJMP LOCAL_QUIT
LOCAL4: CPL F_STATE_LOCAL ;SEND ON COMMAND
MOV START_HIGH,#00H
MOV START_LOW,#20H
MOV STOP_LEARN,#04H
SETB F_CONTROL_STATE
sJMP LOCAL7
LOCAL5: JB A_OFF_LEARNED ,LOCAL6
sJMP LOCAL_QUIT
LOCAL6: CPL F_STATE_LOCAL ;SEND OFF COMMAND
MOV START_HIGH,#04H
MOV START_LOW,#20H
MOV STOP_LEARN,#08H
CLR F_CONTROL_STATE
LOCAL7:
LCALL SEND_IR
LOCAL_QUIT: RET
SEND_IR:
JB F_NECESSARY,$
CLR EX0
CLR EX1
CLR ET1
CLR TF2
CLR ET2
lcall delay_10ms
MOV WATCHDOG,#00h
CLR IE0
CLR IE1
MOV DPH,START_HIGH
MOV DPL,START_LOW
MOV TMOD,#21H
LCALL READBLOCK
mov tmod,#11H
CLR TR0
WAIT_ZERO: JNB P3.2,$
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
JNB P3.2,WAIT_ZERO
CLR IE0
CLR TF2
CLR TF1
CLR TF0
MOV TH2,#00H
MOV TL2,#00H
SETB IT0
SETB EX0
CLR TR0
CLR TF1
SETB ET1
SETB EA
RET
READ_WRITE: JB F_TRIGGER,ID1
ID0X: LJMP ID_QUIT
ID1: CLR F_TRIGGER
MOV A,#00H
CLR F_10MS_WAIT
ID2: JNB F_10MS_WAIT,ID2
CLR F_10MS_WAIT
INC A
JB TRIGGER,ID0X
CJNE A,#250,ID2
CLR A
ID2X: JNB F_10MS_WAIT,ID2X
INC A
JB TRIGGER,ID0X
CJNE A,#250,ID2X
CLR F_TRIGGER
MOV LOCAL_A_ROOM,#00H
MOV LOCAL_A_TYPE,#00H
MOV LOCAL_A_TEAM,#00H
MOV LOCAL_B_ROOM,#00H
MOV LOCAL_B_TYPE,#00H
MOV LOCAL_B_TEAM,#00H
MOV LOCAL_C_ROOM,#00H
MOV LOCAL_C_TYPE,#00H
MOV LOCAL_C_TEAM,#00H
MOV LOCAL_D_ROOM,#00H
MOV LOCAL_D_TYPE,#00H
MOV LOCAL_D_TEAM,#00H
CLR A_ON_LEARNED
CLR A_OFF_LEARNED
CLR B_ON_LEARNED
CLR B_OFF_LEARNED
CLR C_ON_LEARNED
CLR C_OFF_LEARNED
CLR D_ON_LEARNED
CLR D_OFF_LEARNED
;///////////////////////////////////////////////////////
MOV DPTR,#03H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1 ;A TEAM RESET
LCALL DELAY_10MS
MOV DPTR,#04H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1
LCALL DELAY_10MS
MOV DPTR,#05H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1
LCALL DELAY_10MS
;///////////////////////////////////////////////////////
MOV DPTR,#06H
MOV WR_IIC_DATA1,#0FFH ;B TEAM RESET
LCALL WRITEBYTE_1
LCALL DELAY_10MS
MOV DPTR,#07H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1
LCALL DELAY_10MS
MOV DPTR,#08H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1
LCALL DELAY_10MS
;////////////////////////////////////////////////////////
MOV DPTR,#09H
MOV WR_IIC_DATA1,#0FFH ;C TEAM RESET
LCALL WRITEBYTE_1
LCALL DELAY_10MS
MOV DPTR,#0AH
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1
LCALL DELAY_10MS
MOV DPTR,#0BH
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1
LCALL DELAY_10MS
;////////////////////////////////////////////////////////
MOV DPTR,#0CH
MOV WR_IIC_DATA1,#0FFH ;D TEAM RESET
LCALL WRITEBYTE_1
LCALL DELAY_10MS
MOV DPTR,#0DH
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1
LCALL DELAY_10MS
MOV DPTR,#0EH
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1
LCALL DELAY_10MS
;////////////////////////////////////////////////////////
MOV DPTR,#10H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1 ;A ON STUADY RESET
LCALL DELAY_10MS
;/////////////////////////////////////////////////////////
MOV DPTR,#11H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1 ;A OFF STUADY RESET
LCALL DELAY_10MS
;/////////////////////////////////////////////////////////
MOV DPTR,#12H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1 ;B ON STUADY RESET
LCALL DELAY_10MS
;/////////////////////////////////////////////////////////
MOV DPTR,#13H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1 ;B OFF STUADY RESET
LCALL DELAY_10MS
;/////////////////////////////////////////////////////////
MOV DPTR,#14H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1 ;C ON STUADY RESET
LCALL DELAY_10MS
;/////////////////////////////////////////////////////////
MOV DPTR,#15H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1 ;C OFF STUADY RESET
LCALL DELAY_10MS
;/////////////////////////////////////////////////////////
MOV DPTR,#16H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1 ;D ON STUADY RESET
LCALL DELAY_10MS
;/////////////////////////////////////////////////////////
MOV DPTR,#17H
MOV WR_IIC_DATA1,#0FFH
LCALL WRITEBYTE_1 ;D OFF STUADY RESET
LCALL DELAY_10MS
MOV DPTR,#00H
LCALL READBYTE_ID
MOV A,IIC_ID_RD_DATA
ANL A,#0FH
MOV ID_HIGH,A
MOV DPTR,#01H
LCALL READBYTE_ID
MOV A,IIC_ID_RD_DATA
MOV ID_LOW,A
MOV DPTR,#00H
MOV A,ID_HIGH
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
LCALL DELAY_10MS
MOV DPTR,#01H
MOV A,ID_LOW
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
LCALL DELAY_10MS
MOV DPTR,#00H
LCALL READBYTE
MOV A,IIC_RD_DATA
XRL A,ID_HIGH
JZ ID3
LJMP ID5 ;ERROR
ID3: MOV DPTR,#01H
LCALL READBYTE
MOV A,IIC_RD_DATA
XRL A,ID_LOW
JZ ID4
LJMP ID5 ;ERROR
ID4: MOV A,ID_HIGH
ANL A,ID_LOW
XRL A,#0FFH
JNZ ID6
ID5: MOV ID_HIGH,#00H
MOV ID_LOW,#00H
CLR F_TRIGGER
LJMP ID_QUIT
ID6: CLR F_TRIGGER
MOV COUNT_BEE,#00H
SETB F_RESPONSE
ID_QUIT: RET
GENERATE_COM: MOV A,ROOM
RLC A
RLC A
RLC A
ANL A,#11111000B
MOV SEND_LOW2,A
MOV A,TEAM
ANL A,#00000111B
ORL A,SEND_LOW2
MOV SEND_LOW2,A
MOV A,TYPE
SWAP A
ANL A,#0F0H
MOV SEND_LOW3,A
MOV A,ID_HIGH
ANL A,#0FH
ORL A,SEND_LOW3
MOV SEND_LOW3,A
MOV SEND_LOW4,ID_LOW
MOV A,COMMAND
RLC A
MOV C,F_CONTROL_STATE
MOV ACC.0,C
SETB ACC.7
CLR ACC.6
CLR ACC.5
MOV SEND_LOW1,A
MOV A,SEND_LOW2
XRL A,SEND_LOW3
XRL A,SEND_LOW4
ANL A,#01100000B
ORL A,SEND_LOW1
MOV SEND_LOW1,A
SETB F_SEND_HIGH
SETB F_SEND_ZERO1
MOV EMIT_COUNT,#00H
MOV EMIT_TIMES,#32
MOV A,SEND_LOW1
MOV SEND_BUF1,A
MOV A,SEND_LOW2
MOV SEND_BUF2,A
MOV A,SEND_LOW3
MOV SEND_BUF3,A
MOV A,SEND_LOW4
MOV SEND_BUF4,A
RET
INCLUDE "COMMON.ASM"
INCLUDE "LEARN.ASM"
INCLUDE "INFRA.ASM"
INCLUDE "DISPOSE1.ASM"
RESPONSE: JNB F_RESPONSE,RESPONSE_QUIT
JB F_INFRA_RESPONSE,RESPONSE_QUIT
CLR BEE
MOV A,COUNT_BEE
INC A
MOV COUNT_BEE,A
CLR C
SUBB A,#30
JC RESPONSE_QUIT
MOV COUNT_BEE,#00H
SETB BEE
CLR F_RESPONSE
sJMP RESPONSE_QUIT
RESPONSE1: SETB BEE
RESPONSE_QUIT: RET
OP_RESPONSE: JNB F_INFRA_RESPONSE,OP_RESPONSE1
CLR BEE
MOV A,INFRA_RESPONSE
INC A
MOV INFRA_RESPONSE,A
CLR C
SUBB A,#10
JC OP_RESPONSE1
SETB BEE
MOV INFRA_RESPONSE,#00H
CLR F_INFRA_RESPONSE
OP_RESPONSE1: RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -