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

📄 ir8604a.asm

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