📄 ir8604a.asm
字号:
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 + -