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

📄 ir8604a.asm

📁 红外线学习控制及低压AC220V电力线载波组网通讯
💻 ASM
📖 第 1 页 / 共 4 页
字号:
             MOV A,IIC_RD_DATA
             JZ EEPROM23
             CLR  D_OFF_LEARNED
             SJMP EEPROM24
EEPROM23:    SETB D_OFF_LEARNED
EEPROM24:    SETB PX0
             SETB IT0
             SETB EX0
             JNB P3.2,$
             JB  P3.2,$              
             LCALL DELAY1
             MOV THROLD,#6
             CLR TX1
             CLR TX2
             CLR IE0
             CLR IE1
             SETB EA
MAIN1:       SETB  SW_A_ON  
             SETB  SW_A_OFF  
             SETB  SW_B_ON  
             SETB  SW_B_OFF  
             SETB  SW_C_ON  
             SETB  SW_C_OFF  
             SETB  SW_D_ON  
             SETB  SW_D_OFF               
             MOV C,SW_A_ON
             ANL C,SW_A_OFF
             ANL C,SW_B_ON 
             ANL C,SW_B_OFF
             ANL C,SW_C_ON 
             ANL C,SW_C_OFF
             ANL C,SW_D_ON 
             ANL C,SW_D_OFF
             JC MAIN2
             CLR IT0
             CLR EX0
             CLR ET0
             CLR TF0
             CLR ET1
             CLR TF1
             CLR TF2
             CLR ET2
             CLR IE1
             SETB IT1
             SETB EX1
             SETB F_FIRST_READ
             MOV TMOD,#10010001B       
             LCALL LEARN
             CLR IE1
             CLR IE0
             SJMP MAIN1
MAIN2:       
             SETB IT0
             SETB EX0
             SETB ET1
             CLR IE1
             CLR IT1
             CLR EX1
             clr f_stop
             clr f_fill
             clr f_exit
             clr f_return
             CLR F_LEARN_RUNNING
             CLR TR0
             SETB ET1
             SETB TR1
             mov tmod,#11H           
             SETB SW_A_SETUP
             SETB SW_B_SETUP
             SETB SW_C_SETUP
             SETB SW_D_SETUP
             MOV C,SW_A_SETUP
             ANL C,SW_B_SETUP
             ANL C,SW_C_SETUP
             ANL C,SW_D_SETUP
             JC  MAIN3
             LCALL SETUP_INFRA
             LCALL  READ_WRITE
             CLR RECE_BORD_FLAG
             LJMP MAIN1
MAIN3: 
             LCALL READ_WRITE
             LCALL INFRA_ACK
             LCALL LOCAL_CONTROL
             LCALL BORD_DISPOSE
             LCALL REMOTE
             LJMP MAIN1

int0:        clr tr2
             MOV TH2,#0e5h
             MOV TL2,#5Ch
             setb tr2
             setb et2
             clr ie0
             reti
;************************************************************************
;                COMMUNICATION LAYER
;************************************************************************
TT2:             push a
                 push psw
                 PUSH B
                 CLR TF2
                 CLR ET2
                 SETB F_10MS_READ      
                 SETB F_10MS_LEARN
                 SETB F_10MS_WAIT
                 JNB P3.2,$
                 JNB F_SEND_RUNNING,RXN
                 LCALL SEND_FRE
                 SJMP  TT2_QUIT
RXN:             LCALL DELAY200US
                 LCALL FRE_SYN
TT2_QUIT:        lcall read
                 MOV A,CHANNEL_IDLE_COUNT
                 CJNE A,#50,RX5
                 CLR RECE_BORD_FLAG
                 CLR F_REPEAT1
                 CLR F_REPEAT2
                 CLR F_ACK_WAIT
RX5:             LCALL RESPONSE
                 LCALL OP_RESPONSE
                 JNB F_NECESSARY,REPEAT1
                 MOV A,COUNT_108MS
                 INC A
                 MOV COUNT_108MS,A
                 CLR C
                 SUBB A,#15
                 JC REPEAT1
                 MOV COUNT_108MS,#00H
                 CLR F_NECESSARY
                 MOV COUNT_108MS,#00H
REPEAT1:         JNB F_INFRA_WAIT,REPEAT2
                 CLR C
                 MOV A,INFRA_LOW_WAIT
                 ADDC A,#01H
                 MOV INFRA_LOW_WAIT,A
                 MOV A,INFRA_HIGH_WAIT
                 ADDC A,#00H
                 MOV INFRA_HIGH_WAIT,A
                 CLR C
                 SUBB A,#05H
                 JC REPEAT2
                 MOV INFRA_LOW_WAIT,#00H
                 MOV INFRA_HIGH_WAIT,#00H
                 CLR F_INFRA_WAIT
                 CLR  F_GROUP
                 CLR  F_TYPE
                 CLR  F_TEAM
                 CLR  F_ROOM
REPEAT2:         JNB F_ACK_WAIT,REPEAT3
                 MOV A,ACK_COUNT
                 INC A
                 MOV ACK_COUNT,A
                 CJNE A,#77,REPEAT3
                 JB F_DATA,REPEAT3
                 MOV ACK_COUNT,#00H
                 JNB F_REPEAT1,REPEAT2X1
                 JB F_SEND_RUNNING,REPEAT3
                 CLR F_REPEAT1
                 SJMP REPEAT2X3
REPEAT2X1:     
                 JNB F_REPEAT2,REPEAT2X2
                 JB F_SEND_RUNNING,REPEAT3
                 CLR F_REPEAT2
                 SJMP REPEAT2X3
REPEAT2X2:       CLR F_ACK_WAIT
                 SJMP REPEAT3
REPEAT2X3:       MOV EMIT_COUNT,#00H
                 MOV EMIT_TIMES,#32
                 SETB F_SEND_ZERO1
                 SETB F_SEND_HIGH
                 MOV A,SEND_BUF1
                 MOV SEND_LOW1,A
                 MOV A,SEND_BUF2
                 MOV SEND_LOW2,A
                 MOV A,SEND_BUF3
                 MOV SEND_LOW3,A
                 MOV A,SEND_BUF4
                 MOV SEND_LOW4,A
                 SETB F_SEND_RUNNING
REPEAT3:         POP B
                 pop psw
                 pop a
                 RETI

int1:            push a
                 push psw
                 setb p3.3
                 jb p3.3,int1_quit
                 jb p3.3,int1_quit
                 jb p3.3,int1_quit
                 jb p3.3,int1_quit
                 jb p3.3,int1_quit
                 jb p3.3,int1_quit
                 jb p3.3,int1_quit
                 jb p3.3,int1_quit
                 jb p3.3,int1_quit
                 clr tr1
                 clr tr0
                 mov sample1_h,th1     
                 mov sample1_l,tl1
                 mov sample0_h,th0
                 mov sample0_l,tl0                
                 mov th1,#00h
                 mov tl1,#00h
                 mov th0,#00h
                 mov tl0,#00h
                 setb tr1
                 setb tr0
                 setb f_two_byte
int1_quit:       clr ie1
                 pop psw
                 pop a
                 reti
tt0:             push  a
                 push  psw
                 clr tr0
                 mov tl0,sample0_l
                 MOV A,SAMPLE0_L
                 mov th0,sample0_h
                 MOV A,SAMPLE0_H
                 mov c,plority
                 mov serial_out,c
                 setb tr0
                 setb f_necessary
tt0_end:         pop psw
                 pop a
                 reti
level1:          push a
                 push psw
                jb f_convert,spp1
                jb  f_two_byte,level1_1
spp1:           ajmp level1_end
level1_1:       clr f_two_byte
                jnb  F_FIRST_READ,level1_2
                clr  F_FIRST_READ
                ajmp level1_end 
level1_2:       
                 clr c
                 mov a,sample0_l
                 addc a,#40               ;period 
                 mov sample0_l,a
                 mov a,sample0_h
                 addc a,#00h
                 mov sample0_h,a
                 clr c
                 mov a,sample0_l
                 subb a,sample1_l
                 mov level_l,a
                 mov a,sample0_h
                 subb a,sample1_h
                 clr c                   ;right shift one
                 mov level_h,a
                 rrc a
                 mov level_h,a
                 mov a, level_l
                 rrc a
                 mov level_l,a
                 clr c                   ;right shift two
                 mov a,level_h
                 rrc a
                 mov level_h,a
                 mov a, level_l
                 rrc a
                 mov level_l,a
                 clr c                   ;right shift three
                 mov a,level_h
                 rrc a
                 mov level_h,a
                 mov a, level_l
                 rrc a
                 mov level_l,a
                 clr c                   ;right shift four
                 mov a,level_h
                 rrc a
                 mov level_h,a
                 mov a, level_l
                 rrc a
                 mov level_l,a
                 jnc high3
                 clr c
                 addc a,#01h
                 mov level_l,a
                 mov a,level_h
                 addc a,#00h
                 mov level_h,a
high3:           clr c
                 mov a,level_h
                 rlc a
                 mov level_h,a
                 mov a,level_l
                 jnb acc.7,high1
                 clr acc.7                 ;plority
                 mov level_l,a
                 inc level_h
high1:           clr c
                 mov a,sample1_l
                 subb a,#60
                 mov sample1_l,a
                 mov a,sample1_h
                 subb a,#00h
                 mov sample1_h,a
                 clr c                     ;right shift one
                 mov a,sample1_h
                 rrc a
                 mov sample1_h,a
                 mov a,sample1_l
                 rrc a
                 mov sample1_l,a
                 clr c                     ;right shift two
                 mov a,sample1_h
                 rrc a
                 mov sample1_h,a
                 mov a,sample1_l
                 rrc a
                 mov sample1_l,a
                 clr c                     ;right shift three
                 mov a,sample1_h
                 rrc a
                 mov sample1_h,a
                 mov a,sample1_l
                 rrc a
                 mov sample1_l,a
                 clr c                     ;right shift four
                 mov a,sample1_h
                 rrc a
                 mov sample1_h,a
                 mov a,sample1_l
                 rrc a
                 mov sample1_l,a
                 jnc  high4
                 clr c
                 addc a,#01h
                 mov sample1_l,a
                 mov a,sample1_h
                 addc a,#00h
                 mov sample1_h,a
high4:           clr c
                 mov a,sample1_h
                 rlc a
                 mov sample1_h,a
                 mov a,sample1_l
                 jnb acc.7,high2
                 inc sample1_h
high2:           setb acc.7                ;plority
                 mov sample1_l,a
                 setb f_convert
                 clr f_math_level
                 clr f_math_sample
level1_end :     pop psw
                 pop a
                 ret

query:         push a
               push psw
              jnb f_frame,query8
              ljmp query_end 
query8:       jb  f_convert,query_loop               ;0A0h___Bfh   32 bytes buffer
              ajmp query6
query_loop:   mov a,frame_count
              add  a,#0a0h
              mov r0,a
              mov a,level_l
              clr acc.7
              jz query2
              clr f_math_level
              clr c
              subb a,#14
              jc query1            ;<224 ?
              mov a,level_l        ;>224
              clr acc.7
              mov @r0,a
              mov level_l,#00h
              inc frame_count
              ajmp query5
query1:       mov a,level_l
              clr acc.7
              clr c
              addc a,#14
              clr acc.7
              mov @r0,a
              mov level_l,#00h
              inc frame_count
              setb f_math_level
              ajmp query5
query2:       mov a,level_h
              jz query4
              mov @r0,#01111111b
              cjne a,#1,query3
              jnb f_math_level,query3
              clr f_math_level
              mov @r0,#01110001b
query3:       dec level_h
              inc frame_count
              ajmp query5
query4:       mov a,sample1_l
              clr acc.7
              jz query4x2
              clr f_math_sample
              clr c
              clr acc.7
              subb a,#14           ;<224 ?
              jc query4x1
              mov a,sample1_l      ;>224
              setb acc.7
              mov @r0,a
              mov sample1_l,#00h
              inc frame_count

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -