📄 infra.asm
字号:
Timer1: PUSH A
PUSH PSW
CLR TR1
MOV TH1,#0FFH
MOV TL1,#120
SETB REM
CLR TF1
JB REM,TT1
MOV A,INFRA_LOW
INC A
MOV INFRA_LOW,A
CLR C
SUBB A,#20
JC TT12
MOV INFRA_LOW,#00H
MOV COUNT_108MS,#00H
MOV C,F_SEND_RUNNING
ORL C,F_CHANNEL_OCCUPY
ORL C,F_STOP_LINE
ORL C,F_DATA
ORL C,RECE_BORD_FLAG
ORL C,F_REPEAT1
ORL C,F_REPEAT2
JC TT1
JB F_NECESSARY,TT1
CLR EA
MOV WATCHDOG,#00h
LCALL INFRASAMPLE
MOV COUNT_108MS,#00H
CLR TR2
MOV th2,#00h
MOV tl2,#00h
CLR TF2
CLR IE0
SETB TR2
SETB ET2
SETB EA
TT1: MOV INFRA_LOW,#00H
TT12:
MOV TH1,#0FFH
MOV TL1,#120
SETB TR1
SETB ET1
TIMER1_QUIT: CLR TF1
POP PSW
POP A
RETI
INFRASAMPLE: MOV TH1,#00H
MOV TL1,#00H
MOV INFRA_LOW,#00H
MOV WATCHDOG,#00H ; CLOSE WATCHDOG
SETB REM
SETB TR1
LEAD1: JB REM,LEAD2
MOV A,TH1
CLR C
SUBB A,#80 ;9MS LEAD START
JC LEAD1
LJMP ERROR
LEAD2: CLR TR1
MOV TH1,#00H
MOV TL1,#00H
SETB TR1
LCALL DELAY100
LEAD3: JNB REM,LEAD4 ;4.5MS STOP
MOV A,TH1
CLR C
SUBB A,#50
JC LEAD3
LJMP ERROR
LEAD4: MOV WR_IIC_DATA1,#00H ;INFRA LENGTH
FAC_SYN: LCALL DELAY100 ;SYN
JNB REM,$
CLR TR1
MOV TH1,#00H
MOV TL1,#00H
SETB TR1
LCALL DELAY100
FACDETECT: JNB REM,FACWIDE
MOV A,TH1
CLR C
SUBB A,#20
JC FACDETECT
LJMP ERROR
FACWIDE: MOV A,TH1
CLR C
SUBB A,#04H
CPL C
MOV A,DAT2_INFRA
RRC A
MOV DAT2_INFRA,A
MOV A,DAT1_INFRA
RRC A
MOV DAT1_INFRA,A
MOV A,FAC_CODE_HIGH
RRC A
MOV FAC_CODE_HIGH,A
MOV A,FAC_CODE_LOW
RRC A
MOV FAC_CODE_LOW,A
MOV A,WR_IIC_DATA1
INC A
MOV WR_IIC_DATA1,A
CJNE A,#32,FAC_SYN
MOV A,FAC_CODE_LOW
XRL A,#20H
JZ COMPAR1
LJMP ERROR
COMPAR1: MOV A,FAC_CODE_HIGH
XRL A,#0DFH
JZ COMPAR2
LJMP ERROR
COMPAR2: MOV A,DAT1_INFRA
CPL A
XRL A,DAT2_INFRA
JZ COMPAR3
ERROR: CLR TR1
MOV TH1,#0FFH
MOV TL1,#120
SETB TR1
SETB ET1
CLR IE0
SETB EA
LJMP INFRA_END
COMPAR3: MOV A,DAT1_INFRA
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV DAT3_INFRA,A
SETB F_INFRA
MOV COUNT_108MS,#00H
SETB F_NECESSARY
CLR TR1
MOV TH1,#0FFH
MOV TL1,#120
SETB TR1
SETB ET1
CLR IE0
SETB EA
INFRA_END: RET
SETUP_INFRA: JB F_INFRA,SETUP9
LJMP SETUP_EXIT
SETUP9: CLR F_INFRA
MOV A,DAT3_INFRA
CLR C
JNZ SETUP13
LJMP SETUP_EXIT
SETUP13: MOV A,DAT3_INFRA
CLR C
SUBB A,#17
JC SETUP14
LJMP SETUP15
SETUP14: MOV A,DAT3_INFRA ; 4<=DATA<=15
CLR C
; SUBB A,#03H
MOV ROOM,A
SETB F_ROOM
MOV INFRA_RESPONSE,#00H
SETB F_INFRA_RESPONSE
LJMP SETUP_EXIT
SETUP15: MOV A,DAT3_INFRA
CLR C
SUBB A,#25
JC SETUP16
LJMP SETUP17 ; DATA>=25
SETUP16: MOV A,DAT3_INFRA
CLR C
SUBB A,#16
MOV TYPE,A
SETB F_TYPE
MOV INFRA_RESPONSE,#00H
SETB F_INFRA_RESPONSE
LJMP SETUP_EXIT ; 17<=DATA<=24
SETUP17: CLR C
MOV A,DAT3_INFRA
SUBB A,#29
JNC SETUP18
LJMP SETUP_EXIT ; 25<=DATA<=28
SETUP18: CLR C
MOV A,DAT3_INFRA
SUBB A,#33
JC SETUP19
LJMP SETUP_EXIT ; DATA>=33
SETUP19: MOV A,DAT3_INFRA
CLR C
SUBB A,#28
MOV TEAM,A
SETB F_TEAM
MOV INFRA_RESPONSE,#00H
SETB F_INFRA_RESPONSE
SETUP_EXIT: RET
INFRA_ACK: MOV C,F_A_SETUP
ORL C,F_B_SETUP
ORL C,F_C_SETUP
ORL C,F_D_SETUP
JC INFRA_ACK1
LJMP ACK_QUIT
INFRA_ACK1:
JB F_ROOM,INFRA_ACK2
CLR F_TYPE
CLR F_TEAM
CLR F_A_SETUP
CLR F_B_SETUP
CLR F_C_SETUP
CLR F_D_SETUP
LJMP ACK_QUIT
INFRA_ACK2: JB F_TEAM,INFRA_ACK3
MOV TEAM,#1
INFRA_ACK3: JB F_TYPE,INFRA_ACK7
CLR F_ROOM
CLR F_TEAM
CLR F_A_SETUP
CLR F_B_SETUP
CLR F_C_SETUP
CLR F_D_SETUP
LJMP ACK_QUIT
INFRA_ACK7: CLR F_TYPE
MOV A,TYPE
CJNE A,#1,INFRA_ACK8
SJMP INFRA_ACK12 ;AIR CONDITION
INFRA_ACK8: CJNE A,#3,INFRA_ACK9
SJMP INFRA_ACK12 ;TV
INFRA_ACK9: CJNE A,#5,INFRA_ACK10
SJMP INFRA_ACK12 ;WINDOW
INFRA_ACK10: CLR F_ROOM ;TYPE ERROR
CLR F_TYPE
CLR F_TEAM
CLR F_GROUP
CLR F_A_SETUP
CLR F_B_SETUP
CLR F_C_SETUP
CLR F_D_SETUP
LJMP ACK_QUIT
INFRA_ACK12: JB F_A_SETUP,INFRA_ACK13
LJMP INFRA_ACK14
INFRA_ACK13: MOV DPTR,#03H
MOV A,ROOM
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
LCALL DELAY_10MS
LCALL DELAY_10MS
MOV DPTR,#04H
MOV A,TYPE
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
LCALL DELAY_10MS
LCALL DELAY_10MS
MOV DPTR,#05H
MOV A,TEAM
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
MOV COUNT_BEE,#00H
SETB F_RESPONSE
MOV LOCAL_A_ROOM,ROOM
MOV LOCAL_A_TYPE,TYPE
MOV LOCAL_A_TEAM,TEAM
CLR F_A_SETUP
CLR F_B_SETUP
CLR F_C_SETUP
CLR F_D_SETUP
LJMP ACK_QUIT
INFRA_ACK14: JB F_B_SETUP,INFRA_ACK15
LJMP INFRA_ACK16
INFRA_ACK15: MOV DPTR,#06H
MOV A,ROOM
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
LCALL DELAY_10MS
LCALL DELAY_10MS
MOV DPTR,#07H
MOV A,TYPE
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
LCALL DELAY_10MS
LCALL DELAY_10MS
MOV DPTR,#08H
MOV A,TEAM
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
MOV COUNT_BEE,#00H
SETB F_RESPONSE
MOV LOCAL_B_ROOM,ROOM
MOV LOCAL_B_TYPE,TYPE
MOV LOCAL_B_TEAM,TEAM
CLR F_A_SETUP
CLR F_B_SETUP
CLR F_C_SETUP
CLR F_D_SETUP
LJMP ACK_QUIT
INFRA_ACK16: JB F_C_SETUP,INFRA_ACK17
LJMP INFRA_ACK18
INFRA_ACK17: MOV DPTR,#09H
MOV A,ROOM
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
LCALL DELAY_10MS
LCALL DELAY_10MS
MOV DPTR,#0AH
MOV A,TYPE
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
LCALL DELAY_10MS
LCALL DELAY_10MS
MOV DPTR,#0BH
MOV A,TEAM
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
MOV COUNT_BEE,#00H
SETB F_RESPONSE
MOV LOCAL_C_ROOM,ROOM
MOV LOCAL_C_TYPE,TYPE
MOV LOCAL_C_TEAM,TEAM
CLR F_A_SETUP
CLR F_B_SETUP
CLR F_C_SETUP
CLR F_D_SETUP
LJMP ACK_QUIT
INFRA_ACK18: MOV DPTR,#0CH
MOV A,ROOM
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
LCALL DELAY_10MS
LCALL DELAY_10MS
MOV DPTR,#0DH
MOV A,TYPE
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
LCALL DELAY_10MS
LCALL DELAY_10MS
MOV DPTR,#0EH
MOV A,TEAM
MOV WR_IIC_DATA1,A
LCALL WRITEBYTE_1
MOV COUNT_BEE,#00H
SETB F_RESPONSE
MOV LOCAL_D_ROOM,ROOM
MOV LOCAL_D_TYPE,TYPE
MOV LOCAL_D_TEAM,TEAM
CLR F_A_SETUP
CLR F_B_SETUP
CLR F_C_SETUP
CLR F_D_SETUP
ACK_QUIT: RET
;****************************************************
; remote dispose
;****************************************************
REMOTE:
MOV C,F_SEND_RUNNING
ORL C,F_CHANNEL_OCCUPY
ORL C,F_STOP_LINE
ORL C,F_DATA
ORL C,RECE_BORD_FLAG
ORL C,F_REPEAT1
ORL C,F_REPEAT2
JNC REMOTE1
LJMP REMOTE68
REMOTE1: JB F_INFRA,REMOTE2
LJMP REMOTE68
REMOTE2: CLR F_INFRA
MOV A,DAT3_INFRA
CLR C
JNZ REMOTE5
SETB F_GROUP
SETB F_INFRA_WAIT
MOV INFRA_HIGH_WAIT,#00H
MOV INFRA_LOW_WAIT,#00H
MOV INFRA_RESPONSE,#00H
SETB F_INFRA_RESPONSE
LJMP REMOTE68
REMOTE5: MOV A,DAT3_INFRA
CLR C
SUBB A,#17
JC REMOTE6
LJMP REMOTE7
REMOTE6: MOV A,DAT3_INFRA ; 4<=DATA<=15
CLR C
; SUBB A,#03H
MOV ROOM,A
SETB F_ROOM
CLR F_GROUP
SETB F_INFRA_WAIT
MOV INFRA_HIGH_WAIT,#00H
MOV INFRA_LOW_WAIT,#00H
MOV INFRA_RESPONSE,#00H
SETB F_INFRA_RESPONSE
LJMP REMOTE68
REMOTE7: MOV A,DAT3_INFRA
CLR C
SUBB A,#25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -