📄 keym.asm
字号:
setb red_blink
clr orange_blink
setb slow_orange
setb slow_orange2
setb come_back
clr test_menu
setb menu
clr b_j
test0:call key_scan
test1:cjne a,#1,test2
clr red
setb green
clr green_blink
setb red_blink
clr orange_blink
setb slow_orange
setb slow_orange2
setb come_back
setb test_menu
clr menu
setb b_j
clr press
test3:lcall key_scan
cjne a,#13h,test3
clr b_j
jmp test
test2:cjne a,#3,test5
setb red
clr green
clr green_blink
clr red_blink
clr orange_blink
setb test_menu
clr menu
test7:lcall key_scan
cjne a,#13h,text6
jmp test
text6:clr red
mov time,#50
lcall del_ms
setb red
jmp test7
test5:cjne a,#2,test8
clr red
setb green
clr green_blink
clr red_blink
clr orange_blink
setb test_menu
clr menu
mov r7,#20 ;10s
LCALL DOG ;喂狗51
clr relay
text1:mov time,#250
lcall del_ms
djnz r7,text1
setb relay
jmp test
test99:jmp test9
test8:cjne a,#4,test99
mov r0,#60h
mov addr,#0f0h
mov r6,addr
lcall i2c_read
lcall del_10ms
clr red
clr green ;;;;;;;;;;
clr wp
mov r6,#0
MOV R3,#0
MOV E,#0
TT: MOV R0,#50H
MOV R4,#8
LCALL DOG ;喂狗49
AA: MOV @R0,E
INC R0
;INC E
DJNZ R4,AA
MOV R0,#50H
LCALL I2C_WRITE
INC R3
MOV A,R3
MOV B,#8
MUL AB
MOV R6,A
LCALL DEL_10MS
lcall del_10ms
JNZ TT
SETB WP ;;;;;;;;;
lcall del_10ms
lcall del_10ms
mov r6,#00h
MOV R4,#0
MOV OO,#0
TT1:mov r0,#50h
lcall i2c_read
mov r1,#50h
mov r5,#8
LCALL DOG ;喂狗50
ff: mov a,OO
;mov a,@r0
XRL A,@R1
JNZ text11
;INC OO
inc r1
djnz r5,ff
inc r4
mov a,r4
MOV B,#8
MUL AB
MOV R3,A
MOV R6,A
JNZ TT1
clr wp
mov pin_row,#0
mov addr,#0f0h
mov r6,addr
mov r0,#60h
mov wr_digit,#8
lcall i2c_write
lcall del_10ms
lcall del_10ms
setb wp
lcall display_right
jmp test
text11:lcall display_error
test13:jmp test
test9:cjne a,#13h,test13
clr test_menu
jmp set_up13 ;;;;;;;;;;;;;;;
ADD_PIN0:clr green_blink
clr red_blink
clr orange_blink
setb slow_orange
setb slow_orange2
clr red
clr test_menu
setb menu
setb come_back
setb green
mov r0,#50h
mov pin_digit,#0
clr ad_pin
add_pin1:lcall key_scan
cjne a,#13h,add_pin2
clr green
mov time,#100
lcall del_ms
jbc ad_pin,add_pin0
jmp set_up13;;;;;;;;;;;;;;;;;;
add_pin2:cjne a,#11h,add_3pin
clr ad_pin
MOV A,PIN_LENGTH ;;;;;JIA
cjne a,pin_digit,add_pin4
MOV A,PIN_DIGIT
CJNE A,#4,ADD_5PIN
MOV @R0,#0FH
INC R0
MOV @R0,#0FH
ADD_5PIN:mov a,pin_row
cjne a,#20,add_pin5
jmp add_pin4
ADD_3PIN:JMP ADD_PIN3
add_pin5:jc add_pin6
mov pin_row,#0
add_pin6:LCALL READD_PIN
ADD_6PIN:mov a,pin_row
mov b,#8
mul ab
mov addr,a
mov r0,#50H
;MOV R7,#6
ADD_PIN7:CLR RED
CLR GREEN
clr wp
mov r6,addr
mov wr_digit,#8
lcall i2c_write
lcall del_10ms
lcall del_10ms
setb wp
ADD_PIN8:INC PIN_ROW
lcall del_10ms
add_pin10:lcall display_right
jmp add_pin0
add_pin4:lcall display_error
jmp add_pin0
add_pin3:mov @r0,a
inc pin_digit
inc r0
setb ad_pin
jmp add_pin1
READD_PIN:MOV PIN_ROW1,PIN_ROW
MOV ADDR,#0
MOV ADDRS,#0
READD_PIN0:MOV R0,#50H
MOV A,PIN_ROW1
JZ ADD_6PIN
READD_PIN1:mov r0,#60h
mov r6,addr
lcall i2c_read
mov r1,#60h
mov r0,#50h
mov r7,#6
LCALL DOG ;喂狗47
READD_PINr:mov a,@r1
XRL A,@R0
JNZ READD_PIN2
INC R0
INC r1
DJNZ R7,READD_PINr
JMP ADD_PIN4
READD_PIN2:INC ADDRS
MOV A,ADDRS
MOV B,#8
MUL AB
MOV ADDR,A
DEC PIN_ROW1
LCALL DOG ;喂狗48
JMP READD_PIN0
sub_pin0:clr green_blink
clr red_blink
clr orange_blink
clr green
setb red
clr test_menu
setb menu
setb come_back
setb slow_orange
setb slow_orange2
clr dis_pin
mov r0,#50h
mov pin_digit,#0
sub_pin1:lcall key_scan
cjne a,#13h,sub_pin2
clr green
mov time,#100
lcall del_ms
jbc dis_pin,sub_pin0
jmp set_up13
sub_pin2:cjne a,#11h,sub_pin3
clr dis_pin
mov a,pin_lengTH
cjne a,pin_digit,sub_pin4
MOV A,PIN_DIGIT
CJNE A,#4,sub_5PIN
MOV @R0,#0FH
INC R0
MOV @R0,#0FH
sub_5PIN:mov a,pin_row
jz sub_pin4
cjne a,#20,sub_pin5
jmp sub_pin6
sub_pin5:jc sub_pin6
mov pin_row,#0
jmp sub_pin4
sub_pin6:MOV PIN_ROW1,PIN_ROW
mov addr,#0
mov addrs,#0
sub_pin10:mov r0,#50h
mov a,pin_row1
jz sub_pin4
sub_pin8:mov r0,#60h
mov r6,addr
lcall i2c_read
mov r0,#60h
mov r1,#50h
mov r7,#6
LCALL DOG ;喂狗46
sub_pinr:mov a,@r1
xrl a,@r0
jnz sub_pin7
inc r0
inc r1
djnz r7,sub_pinr
jmp sub_pin9
sub_pin7:inc addrs
MOV A,ADDRS
MOV B,#8
MUL AB
MOV ADDR,A
DEC PIN_ROW1
JMP sub_PIN10
sub_pin4:lcall display_error
jmp sub_pin0
sub_pin3:inc pin_digit
mov @r0,a
inc r0
setb dis_pin
jmp sub_pin1
sub_pin9:clr red
clr green
sub_PIN11:dec pin_row1
sub_pin14:mov a,pin_row1
jz sub_pin12
mov a,addr
add a,#8
mov addr,a
mov r0,#60h
sub_11pin:mov r6,addr
lcall i2c_read
mov r1,#50h
mov r0,#60h
LCALL DOG ;喂狗46
sub_11pinr:mov a,@r0
mov @r1,a
inc r0
inc r1
djnz r7,sub_11pinr
mov a,addr
subb a,#8
mov addr,a
sub_pin13:clr wp;;;;;;;;;;;;;
mov r6,addr
mov r0,#50h
mov wr_digit,#8
lcall i2c_write
lcall del_10ms
lcall del_10ms
setb wp
dec pin_row1
mov a,addr
add a,#8
mov addr,a
jmp sub_pin14
sub_pin12:dec pin_row
lcall display_right
jmp sub_pin0
time_delay:setb red
setb green
setb slow_orange
setb slow_orange2
clr green_blink
clr red_blink
clr orange_blink
clr test_menu
setb menu
setb come_back
CLR SEC
KEY_TIME:lcall key_SCAN
CJNE A,#13H,KEY_TIME1
ret
KEY_TIME1:CJNE A,#11H,KEy_TIME2
jmp key_time4
KEy_TIME2:jbc sec,KEy_TIME3
mov b,#10
mul ab
mov b,a
setb sec
jmp KEY_TIME
KEY_TIME3:add a,b
clr sec
jz key_time4
mov time3,a
lcall display_right
ret
key_time4:lcall display_error
ret
PIN_46DIGIT:CLR RED
CLR GREEN
LCALL DOG ;喂狗40
MOV a,pin_length
CJNE A,#6,PIN_46DIGIT1
MOV PIN_LENGTH,#4
lcall display_orange
ret
PIN_46DIGIT1:MOV PIN_LENGTH,#6
lcall display_red
RET
BY_PASS:CLR RED
CLR GREEN
LCALL DOG ;喂狗39
mov a,bypass
CJNE A,#5,BY_PASS1
MOV bypass,#0FH
lcall display_orange
RET
BY_PASS1:MOV BYPASS,#5
lcall display_red
RET
permanent_lock:CLR RED
CLR GREEN
LCALL DOG ;喂狗38
mov a,permanent
CJNE A,#06h,permanent_lock1
MOV permanent,#0fH
clr relay
lcall display_green
RET
permanent_lock1:CJNE A,#0fh,permanent_lock2
MOV permanent,#03H
setb relay
lcall display_red
ret
permanent_lock2:MOV permanent,#06H
setb relay
lcall display_orange
ret
remove_door:CLR RED
CLR GREEN
LCALL DOG ;喂狗37
mov a,remove
CJNE A,#7,remove_door1
MOV remove,#0FH
lcall display_orange
RET
remove_door1:MOV remove,#7
lcall display_red
RET
display_orange: MOV TIME,#250
CLR RED
CLR GREEN
LCALL DEL_MS
LCALL DEL_MS
setb RED
SETB GREEN
LCALL DEL_MS
LCALL DEL_MS
LCALL DEL_MS
CLR RED
CLR GREEN
LCALL DEL_MS
lcall del_ms
RET
display_red:MOV TIME,#250
CLR RED
CLR GREEN
lcall del_ms
LCALL DEL_MS
SETB RED
CLR GREEN
LCALL DEL_MS
LCALL DEL_MS
LCALL DEL_MS
CLR RED
CLR GREEN
lcall del_ms
RET
display_green:MOV TIME,#250
CLR RED
CLR GREEN
lcall del_ms
LCALL DEL_MS
clr RED
setb GREEN
LCALL DEL_MS
LCALL DEL_MS
LCALL DEL_MS
CLR RED
CLR GREEN
lcall del_ms
RET
waitp:LCALL DOG ;喂狗31
mov r0,#50h
mov a,pin_length
swap a
orl a,remove
mov @r0,a ;1
inc r0
mov a,bypass
swap a
orl a,permanent
mov @r0,a ;2
inc r0
mov a,time3
mov @r0,a ;3
inc r0
mov @r0,pin_row ;4
inc r0
mov a,pin_length
swap a
orl a,remove
mov @r0,a ;5
inc r0
mov a,bypass
swap a
orl a,permanent
mov @r0,a ;6
inc r0
mov a,time3
mov @r0,a ;7
inc r0
mov @r0,pin_row ;8
clr wp
mov addr,#0f8h
mov r6,addr
mov r0,#50h
mov wr_digit,#8
lcall i2c_write
lcall del_10ms
lcall del_10ms
; setb wp
jnb pin,wait_w1
clr pin
mov addr,#0
mov addrs,#0
mov addrw,#098h
clr ji_ou
clr jishu
mov pin_row1,pin_row
mov a,pin_row
wait_r:LCALL DOG ;喂狗32
jbc jishu,wait_w1
jz wait_w
mov r6,addr
mov r2,#3
mov r0,#60h
lcall i2c_read
mov r1,#60h
mov r0,#50h
LCALL DOG ;喂狗35
jnb ji_ou,ww
mov r0,#53h
ww: mov a,@r1
swap a
inc r1
orl a,@r1
mov @r0,a
inc r0
inc r1
djnz r2,ww
jb ji_ou,wait_bao
setb ji_ou
wait_r1:LCALL DOG ;喂狗34
inc addrs
mov a,addrs
mov b,#8
mul ab
mov addr,a
dec pin_row1
mov a,pin_row1
jmp wait_r
wait_bao:LCALL DOG ;喂狗33
clr ji_ou
mov r0,#50h
mov a,addrw
add a,#8
mov addrw,a
mov r6,addrw
mov wr_digit,#8
lcall i2c_write
lcall del_10ms
lcall del_10ms
lcall del_10ms
;dec pin_row1
;mov a,pin_row1
jmp wait_r1
wait_w:setb jishu
jb ji_ou,wait_bao
wait_w1:setb wp
jmp START_SET
rd_rd:mov addr,#0f8h
mov r0,#60h
mov r6,addr
lcall i2c_read
mov r0,#60h
clr a
xchd a,@r0
anl a,#0fh
mov remove,a
mov a,@R0
swap a
anl a,#0fh
mov pin_length,a
inc r0
clr a
xchd a,@r0
anl a,#0fh
mov permanent,a
mov a,@R0
swap a
anl a,#0fh
mov bypass,a
inc r0
mov time3,@r0
inc r0
mov pin_row,@r0 ;;;;;;;
inc r0
clr a
xchd a,@r0
anl a,#0fh
mov common,a
xrl a,remove
LCALL DOG ;喂狗24
jz t_t1
mov remove,common
t_t1:mov a,@R0
swap a
anl a,#0fh
mov common,a
xrl a,pin_length
LCALL DOG ;喂狗25
jz s_pin
mov pin_length,common
s_pin:inc r0
clr a
xchd a,@r0
anl a,#0fh
mov common,a
xrl a,permanent
LCALL DOG ;喂狗26
jz s_per
mov permanent,common
s_per:mov a,@R0
swap a
anl a,#0fh
mov common,a
xrl a,bypass
LCALL DOG ;喂狗27
jz s_by
mov bypass,common
s_by:inc r0
mov a,@R0
mov common,a
xrl a,time3
jz s_pr
mov time3,common
s_rem:inc r0
mov a,@R0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -