⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 infra.asm

📁 红外线学习控制及低压AC220V电力线载波组网通讯
💻 ASM
📖 第 1 页 / 共 2 页
字号:
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 + -