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

📄 ir8604a.asm

📁 红外线学习控制及低压AC220V电力线载波组网通讯
💻 ASM
📖 第 1 页 / 共 4 页
字号:
              ajmp query5
query4x1:     mov a,sample1_l
              clr acc.7
              clr c
              addc a,#14
              setb acc.7
              mov @r0,a
              mov sample1_l,#00h
              inc frame_count
              setb f_math_sample
              ajmp query5
query4x2:     mov a,sample1_h
              jnz query4x3
              clr  f_convert
              ajmp query6
query4x3:     mov @r0,#0ffh
              cjne a,#1,query4x4
              jnb f_math_sample,query4x4
              clr f_math_sample
              mov @r0,#11110001b
query4x4:     dec sample1_h
              inc frame_count
              sjmp query5
query4x5:     cjne r0,#0bfh,query_end
              mov frame_count,#00h
              setb f_frame
              ajmp query_end
query5:       cjne r0,#0bfh,query5x1
              mov frame_count,#00h
              setb f_frame
              ajmp query_end
query5x1:     ajmp query_loop              
query6:       jnb f_stop,query_end
              jb f_two_byte,query_end
query7:       mov a,frame_count
              add  a,#0a0h
              mov r0,a
              mov @r0,#0ffh
              inc frame_count
              cjne r0,#0bfh,query7
              clr f_stop
              setb f_fill
              mov frame_count,#00h
              setb f_frame
query_end:    pop psw
              pop a
              ret

block_shift:  push psw
              push a
              jb f_frame,block1
              ajmp block_end
block1:       clr  f_frame
              mov r0,#0a0h            ;a0h--bfh  shift c0h---dfh
              mov a,@r0
              mov r0,#0c0h
              mov @r0,a
              mov r0,#0a1h
              mov a,@r0
              mov r0,#0c1h
              mov @r0,a
              mov r0,#0a2h
              mov a,@r0
              mov r0,#0c2h
              mov @r0,a
              mov r0,#0a3h
              mov a,@r0
              mov r0,#0c3h
              mov @r0,a
              mov r0,#0a4h
              mov a,@r0
              mov r0,#0c4h
              mov @r0,a
              mov r0,#0a5h
              mov a,@r0
              mov r0,#0c5h
              mov @r0,a
              mov r0,#0a6h
              mov a,@r0
              mov r0,#0c6h
              mov @r0,a
              mov r0,#0a7h
              mov a,@r0
              mov r0,#0c7h
              mov @r0,a
              mov r0,#0a8h
              mov a,@r0
              mov r0,#0c8h
              mov @r0,a
;             lcall query
              mov r0,#0a9h
              mov a,@r0
              mov r0,#0c9h
              mov @r0,a
              mov r0,#0aah
              mov a,@r0
              mov r0,#0cah
              mov @r0,a
              mov r0,#0abh
              mov a,@r0
              mov r0,#0cbh
              mov @r0,a
              mov r0,#0ach
              mov a,@r0
              mov r0,#0cch
              mov @r0,a
              mov r0,#0adh
              mov a,@r0
              mov r0,#0cdh
              mov @r0,a
              mov r0,#0aeh
              mov a,@r0
              mov r0,#0ceh
              mov @r0,a
              mov r0,#0afh
              mov a,@r0
              mov r0,#0cfh
              mov @r0,a
              mov r0,#0b0h
              mov a,@r0
              mov r0,#0d0h
              mov @r0,a
              mov r0,#0b1h
              mov a,@r0
              mov r0,#0d1h
              mov @r0,a
              mov r0,#0b2h
              mov a,@r0
              mov r0,#0d2h
              mov @r0,a
              mov r0,#0b3h
              mov a,@r0
              mov r0,#0d3h
              mov @r0,a
              mov r0,#0b4h
              mov a,@r0
              mov r0,#0d4h
              mov @r0,a
              mov r0,#0b5h
              mov a,@r0
              mov r0,#0d5h
              mov @r0,a
              mov r0,#0b6h
              mov a,@r0
              mov r0,#0d6h
              mov @r0,a
              mov r0,#0b7h
              mov a,@r0
              mov r0,#0d7h
              mov @r0,a
              mov r0,#0b8h
              mov a,@r0
              mov r0,#0d8h
              mov @r0,a
              mov r0,#0b9h
              mov a,@r0
              mov r0,#0d9h
              mov @r0,a
              mov r0,#0bah
              mov a,@r0
              mov r0,#0dah
              mov @r0,a
              mov r0,#0bbh
              mov a,@r0
              mov r0,#0dbh
              mov @r0,a
              mov r0,#0bch
              mov a,@r0
              mov r0,#0dch
              mov @r0,a
              mov r0,#0bdh
              mov a,@r0
              mov r0,#0ddh
              mov @r0,a
              mov r0,#0beh
              mov a,@r0
              mov r0,#0deh
              mov @r0,a
              mov r0,#0bfh
              mov a,@r0
              mov r0,#0dfh
              mov @r0,a
              setb f_write
              jnb f_fill,block_end
              clr f_fill
              setb f_exit
block_end:    
              pop a
              pop psw
              ret
LEARN:        JB  f_two_byte,LEARN1
              LJMP LEARN_QUIT
LEARN1:       
              JB SW_A_ON,LEARN2
              MOV START_HIGH,#00H
              MOV START_LOW,#20H 
              MOV STOP_LEARN,#04H
              MOV DPTR,#0020H
              LJMP mm1
LEARN2:       JB SW_A_OFF,LEARN3
              MOV START_HIGH,#04H
              MOV START_LOW,#20H 
              MOV STOP_LEARN,#08H
              MOV DPTR,#0420H
              LJMP mm1
LEARN3:       JB SW_B_ON,LEARN4
              MOV START_HIGH,#08H
              MOV START_LOW,#20H 
              MOV STOP_LEARN,#0CH
              MOV DPTR,#0820H
              LJMP mm1
LEARN4:       JB SW_B_OFF,LEARN5
              MOV START_HIGH,#0CH
              MOV START_LOW,#20H 
              MOV STOP_LEARN,#10H
              MOV DPTR,#0C20H
              LJMP mm1
LEARN5:       JB SW_C_ON,LEARN6
              MOV START_HIGH,#10H
              MOV START_LOW,#20H 
              MOV STOP_LEARN,#14H
              MOV DPTR,#1020H
              LJMP mm1
LEARN6:       JB SW_C_OFF,LEARN7
              MOV START_HIGH,#14
              MOV START_LOW,#20H 
              MOV STOP_LEARN,#18H
              MOV DPTR,#1420H
              LJMP mm1
LEARN7:       JB SW_D_ON,LEARN8
              MOV START_HIGH,#18H
              MOV START_LOW,#20H 
              MOV STOP_LEARN,#1CH
              MOV DPTR,#1820H
              LJMP mm1
LEARN8:       MOV START_HIGH,#1CH
              MOV START_LOW,#20H 
              MOV STOP_LEARN,#20H
              MOV DPTR,#1C20H
mm1:           jnb f_write,mm2
               clr f_write
               lcall WRITEBLOCK
               mov c,f_stop
               orl c,f_fill
               orl c,f_exit
               jnc  mm2
               lcall delay_10ms
               lcall delay_10ms
mm2:           lcall level1
               lcall query
               lcall block_shift
               mov a,th0
               clr c
               subb a,#0b4h
               jc mm3
               jb f_stop,mm3
               clr ie1
               clr it1
               clr ex1
               clr tr0
               clr tr1
               CLR IE1
               mov sample1_h,th1     
               mov sample1_l,tl1
               mov sample0_h,th0
               mov sample0_l,tl0
               mov a,sample0_l
               clr c
               addc a,#48
               mov sample0_l,a
               mov a,sample0_h
               addc a,#00h
               mov sample0_h,a
               mov th1,#00h
               mov tl1,#00h
               mov th0,#00h
               mov tl0,#00h
               setb f_two_byte
               setb f_stop
               ajmp mm1
mm3:           mov a,dph
               XRL A,STOP_LEARN
               JZ  MM5
mm4:           jb f_return,mm5
               ajmp mm1
mm5:           clr it1
               clr ex1
               clr tr0
               clr tr1
               clr f_learn
               clr f_stop
               clr f_return
               clr f_exit
               clr f_fill
               lcall delay_10ms
               lcall delay_10ms
               MOV A,STOP_LEARN
               CJNE A,#04H,MM6
               MOV DPTR,#0010H
               MOV WR_IIC_DATA1,#00H
               LCALL WRITEBYTE_1
               SETB A_ON_LEARNED
               aJMP MM7
MM6:           CJNE A,#08H,MM6X1
               MOV DPTR,#0011H
               MOV WR_IIC_DATA1,#00H
               LCALL WRITEBYTE_1
               SETB A_OFF_LEARNED
MM6X1:         CJNE A,#0CH,MM6X2
               MOV DPTR,#0012H
               MOV WR_IIC_DATA1,#00H
               LCALL WRITEBYTE_1
               SETB B_ON_LEARNED
               aJMP MM7
MM6X2:         CJNE A,#10H,MM6X3
               MOV DPTR,#0013H
               MOV WR_IIC_DATA1,#00H
               LCALL WRITEBYTE_1
               SETB B_OFF_LEARNED
MM6X3:         CJNE A,#14H,MM6X4
               MOV DPTR,#0014H
               MOV WR_IIC_DATA1,#00H
               LCALL WRITEBYTE_1
               SETB C_ON_LEARNED
               aJMP MM7
MM6X4:         CJNE A,#18H,MM6X5
               MOV DPTR,#0015H
               MOV WR_IIC_DATA1,#00H
               LCALL WRITEBYTE_1
               SETB C_OFF_LEARNED
MM6X5:         CJNE A,#1CH,MM6X6
               MOV DPTR,#0016H
               MOV WR_IIC_DATA1,#00H
               LCALL WRITEBYTE_1
               SETB D_ON_LEARNED
               aJMP MM7
MM6X6:       
               MOV DPTR,#0017H
               MOV WR_IIC_DATA1,#00H
               LCALL WRITEBYTE_1
               SETB D_OFF_LEARNED
MM7:           CLR F_10MS_LEARN
               CLR A
               CLR IE0
               CLR BEE
               MOV WATCHDOG,#00h               
               CLR IE0
               CLR A
MM8:           mov r6,#0ffh
mm8x:          mov r7,0ffh
mm8y:          djnz r7,mm8y
               djnz r6,mm8x
               SETB BEE
               lcall delay_10ms
               lcall delay_10ms
               lcall delay_10ms
               lcall delay_10ms
               lcall delay_10ms
               lcall delay_10ms
               lcall delay_10ms
               lcall delay_10ms
               lcall delay_10ms
               lcall delay_10ms
               lcall delay_10ms
               lcall delay_10ms
               lcall delay_10ms
               CLR F_LEARN_RUNNING
               clr f_learn
               clr f_stop
               clr f_return
               clr f_exit
               clr f_fill
               CLR IE0
               CLR IT0
               CLR EX0
               CLR IE1
               CLR f_two_byte
               SETB F_FIRST_READ
LEARN_QUIT:    RET             
READ:       SETB  SW_A_ON            
            SETB  SW_A_OFF
            SETB  SW_A_RUN
            SETB  SW_A_SETUP
            SETB  SW_B_ON            
            SETB  SW_B_OFF
            SETB  SW_B_RUN
            SETB  SW_B_SETUP
            SETB  SW_C_ON            
            SETB  SW_C_OFF
            SETB  SW_C_RUN
            SETB  SW_C_SETUP
            SETB  SW_D_ON            
            SETB  SW_D_OFF
            SETB  SW_D_RUN
            SETB  SW_D_SETUP
            SETB KEY_LOCAL
            SETB TRIGGER
READ1:      MOV C,KEY_LOCAL
            MOV A,LOCAL_SHIFT
            RLC A
            MOV LOCAL_SHIFT,A
            JNB ACC.7,READ2
            JNB ACC.6,READ2
            JNB ACC.5,READ2
            JNB ACC.4,READ2
            JNB ACC.3,READ2
            JB  ACC.2,READ2
            JB  ACC.0,READ2

⌨️ 快捷键说明

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