📄 keym.asm
字号:
wp equ p1.0
I2C_scl equ p1.1
I2C_sda equ p1.2
relay equ p1.3
RELAY2 EQU P2.7
red equ p1.4
green equ p1.5
bell equ p1.6
press_open equ p1.7
WIE_A0 EQU P3.6
WIE_A1 EQU P3.7
sck_bell equ p3.4
dr_sn equ p3.2
time equ 30h
addr equ 31h
data8 equ 32h
pin_length equ 33h
pin_row equ 34h
pin_digit equ 35h ;JIA4/6
ADDRS EQU 36H
PIN_ROW1 EQU 37H
BYPASS EQU 38H
permanent equ 39h
remove equ 3ah
initialize equ 3bh
master_pin equ 3ch
degree equ 3dh
time1 equ 3eh
mpin equ 3fh
time2 equ 40h
time3 equ 41h
pin_row3 equ 42h
pin_row2 equ 43h
wr_digit equ 44h
addrw equ 45h
e equ 46h
common equ 47h
chushu equ 48h
add_shu equ 49h
ri_inform1 equ 6dh
oo equ 70h
cs equ 71h
cd equ 72h
pl equ 73h
dc equ 74h
degree1 equ 75h
defer equ 76h
ri_right equ 22h.5
RED_FLASH EQU 20H.0
GREEN_FLASH EQU 20H.1
RED_BLINK EQU 20H.2
GREEN_blink equ 20h.3
orange_blink equ 20h.4
orange_flash equ 20h.5
come_back equ 20h.6
door_sensor equ 20h.7
press equ 21h.0
close_bell equ 21h.1
ma_pin equ 21h.2
ad_pin equ 21h.3
dis_pin equ 21h.4
key_13 equ 21h.5
ji_ou equ 21h.6
read_two equ 21h.7
judge equ 22h.0
fuwei equ 22h.1
chushihua equ 22h.2
jishu equ 22h.3
pin equ 22h.4
ri_right2 EQU 22H.5
ok equ 22h.6
stop equ 23h.0
slow_orange equ 23h.1
slow_orange2 equ 23h.2
come_back2 equ 23h.3
yes_sensor equ 23h.4
f2 equ 23h.5
B_J EQU 23H.6
door_sensor2 equ 23h.7
menu equ 24h.0
test_menu equ 24h.1
huo equ 24h.4
SEC EQU 24H.2
set_menu equ 24h.3
org 0
jmp main
org 003h
jmp int0_sub
org 0013h
jmp int1_sub
;org 0023h
;jmp ri_sub
org 0030h
main:nop
mov p1,#0ffh
mov p3,#0ffh
mov p2,#0ffh
clr a
mov r0,#02h
mov r7,#0fdh
t1:mov @r0,a
inc r0
djnz r7,t1
mov 0a6h,#01eh;启动DOG
mov 0a6h,#0e1h
mov sp,#76h
jnb sck_bell,no_bell
clr sck_bell
no_bell:clr red
clr green
setb relay
CLR RELAY2
clr menu
mov tmod,#20h
mov th1,#0fdh
mov tl1,#0fdh
;clr p3.2
setb es
setb tr1
clr ri
clr it0
clr it1
clr ok
clr ri_right
clr door_sensor2
mov pcon,#00h
mov scon,#50h
mov ip,#0
setb ex1
setb ea
clr fuwei
clr chushihua
lcall key_13scan
jnz main1
lcall del_10ms
lcall key_13scan
jz start_sets ;;;;;
main1:mov r0,#50h
mov @r0,#67h
inc r0
mov @r0,#56h
inc r0
mov @r0,#05h
inc r0
mov @r0,#00h
inc r0
mov @r0,#67h
inc r0
mov @r0,#56h
inc r0
mov @r0,#05h
inc r0
mov @r0,#00h
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
lcall rd_rd
set_up0:setb green
setb red_blink
clr orange_blink
clr green_blink
setb come_back
clr red
clr test_menu
clr menu
setb slow_orange
setb slow_orange2
mov r0,#50h
clr key_13
mov pin_digit,#0
clr ok
set_up1:lcall key_scan
cjne a,#13h,set_up2
clr green
clr red
lcall del_10ms
start_sets:jmp start_setset
SET_UPdo1:lcall displaY_error
jmp start_set
set_up2:cjne a,#11h,set_up3
MOV A,PIN_DIGIT
CJNE A,#4,SET_UPdo1;;;;;;;;;;;;;;;;;;;;;;
mov r7,#4
mov r5,#2
mov r0,#50h
mov r1,#60h
LCALL DOG ;喂狗62
set_updo:mov a,@r0
mov @r1,a
inc r0
inc r1
djnz r7,set_updo
LCALL DOG ;喂狗63
mov r7,#4
mov r0,#50h
djnz r5,set_updo
clr wp
mov r0,#60h
mov addr,#0f0h
mov r6,addr
lcall i2c_write
lcall del_10ms
lcall del_10ms
setb wp
lcall display_right
jmp start_setset;;;;;;;;;;;;;;
SET_UP3:MOV @R0,A
INC PIN_DIGIT
INC R0
setb key_13
JMP SET_UP1;;;;;;;;;;;;;;;;
;SFDKJIORJDG
start_set:clr red
clr green
lcall display_right
start_setset:setb b_j
clr set_menu
clr test_menu
lcall rd_rd
start_1:clr orange_blink
clr red_blink
clr green_blink
clr red
clr green
clr come_back
clr door_sensor2
mov a,permanent
cjne a,#6,open_door11
mov degree,#0
mov degree1,#0
start0:LCALL DOG ;喂狗58
mov pin_digit,#0
clr f2
start01:mov r0,#58h
jmp start00
open_door11:jmp open_door1;open
start00:setb red
clr green
setb orange_blink
clr red_blink
clr green_blink
setb press
clr come_back
setb huo
setb ok
setb slow_orange
setb slow_orange2
clr door_sensor2
lcall key_scan
cjne a,#11h,start2_1
;setb set_menu
setb sck_bell
nop
nop
jnb sck_bell,have_bell3
setb sck_bell
lcall del_10ms
lcall del_10ms
clr sck_bell
clr slow_orange
clr slow_orange2
start1_1:jmp start0
have_bell3:mov cs,#3
mov dc,#35
mov cd,#50
mov pl,#154
call str_bell
jmp start0
start2_1:cjne a,#15h,start15
lcall buzzer
clr bell
jmp set_setstart
start15:cjne a,#13h,start00
mov a,bypass
cjne a,#5,set_1bypass
start1:setb red
setb green
clr orange_blink
clr red_blink
clr green_blink
setb press
setb come_back
setb huo
setb ok
CLR TEST_MENU
SETB MENU
SETB slow_orange
SETB slow_orange2
lcall key_scan
cjne a,#13h,start2_11
lcall buzzer
clr bell
start_str:jmp start0
set_1bypass:jmp set_bypass
start2_11:cjne a,#11h,start22
jmp no_on
start22:JMP start2
PASS_DIGITH:lcall buzzer
clr bell
clr red
clr green
clr slow_orange
clr slow_orange2
mov a,pin_row
jz no_on1
cjne a,#7,no_ongo
no_on1:jmp no_on
no_ongo:jz no_on1
mov pin_row1,pin_row
mov a,pin_digit
jz start0_on
cjne a,pin_length,start3_3
cjne a,#4,start7
mov @r0,#0fh
inc r0
mov @r0,#0fh
start7:mov addr,#0
mov addrs,#0
start77:mov r1,#58h
start5:mov r0,#60h
mov r6,addr
lcall del_10ms
lcall i2c_read
mov r0,#60h
mov r1,#58h
mov r7,#6
startr:mov a,@r1
xrl a,@r0
jnz start4
inc r0
inc r1
djnz r7,startr
jmp open_door
start0_on:jmp no_on
start3_3:jmp start3
start4:inc addrs
mov a,addrs
mov b,#8
mul ab
mov addr,a
dec pin_row1
mov a,pin_row1
jnz start77
mov pin_row2,pin_row
mov pin_row3,#0
mov addr,#0a0h
mov addrs,#0a0h
st_two4:mov r6,addr
mov r0,#60h
lcall i2c_read
mov r0,#60h
mov r1,#58h
mov r2,#3
LCALL DOG ;喂狗59
st_two2:mov a,@r0
swap a
anl a,#0fh
xrl a,@r1
jnz st_two1
mov a,@r0
anl a,#0fh
inc r1
xrl a,@r1
jnz st_two1
inc r0
inc r1
djnz r2,st_two2
clr wp
mov a,pin_row3
mov b,#8
mul ab
mov r6,a
mov r0,#58h
lcall i2c_write
lcall del_10ms
lcall del_10ms
setb wp
jmp open_door
st_two1:inc pin_row3
dec pin_row2
mov a,pin_row2
jz start3
mov r0,#63h
mov r1,#58h
mov r2,#3
LCALL DOG ;喂狗60
st_two3:mov a,@r0
swap a
anl a,#0fh
xrl a,@r1
jnz st_two6
mov a,@r0
anl a,#0fh
inc r1
xrl a,@r1
jnz st_two6
inc r0
inc r1
djnz r2,st_two2
clr wp
mov a,pin_row3
mov b,#8
mul ab
mov r6,a
mov r0,#58h
lcall i2c_write
lcall del_10ms
lcall del_10ms
setb wp
jmp open_door
st_two6:inc pin_row3
dec pin_row2
mov a,pin_row2
jz start3
mov a,addr
add a,#8
mov addr,a
jmp st_two4
start3:jmp no_on
start2:inc pin_digit
mov @r0,a
inc r0
setb f2
MOV A,PIN_DIGIT
CJNE A,PIN_LENGTH,PASS_digit
mov a,remove
cjne a,#7,pass_digth1
lcall del_10ms
jmp PASS_DIGITh
pass_digth1:lcall display_right
lcall wiegnd
lcall del_10ms
jmp START_SETset
PASS_DIGIT:jmp start1
set_bypass:clr close_bell
open_door:clr press
clr ok
open_door00:clr relay ;jipo,mditglezurjo jh;;;
mov cs,#1
mov cd,#30
mov dc,#100
mov pl,#87
call str_bell
clr b_j
setb ex0
SETB EX1
clr door_sensor
clr press
;clr relay
setb green
clr red
clr door_sensor2
lcall delay_time
clr ex0
CLR EX1
clr door_sensor
setb relay
CLR RELAY2
clr slow_orange
clr slow_orange2
lcall del_10ms
jmp START_SETset
open_door1:cjne a,#0fh,close_door
clr b_j
setb green
clr red
clr come_back
clr relay
jmp door
close_door:setb b_j
setb red
clr green
setb relay
door: clr orange_blink
clr red_blink
clr green_blink
setb press
clr come_back
clr slow_orange
clr slow_orange2
lcall key_scan
cjne a,#15h,door
jmp set_setstart
program_end:clr green
setb press
clr red
mov r2,#4
program1:mov time2,#250
lcall delay_time1
djnz r2,program1
;clr p3.2
jmp start_setset
no_on:lcall display_error
inc degree
mov a,degree
cjne a,#5,start000
jmp program_end
start000:jmp start0
int0_sub:push acc
setb door_sensor
LCALL DOG ;喂狗57
pop acc
reti
int1_sub:push acc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
setb door_sensor
LCALL DOG ;喂狗57
mov cs,#2
mov cd,#15 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov dc,#3
mov pl,#232
call str_bell
pop acc
jmp int1_sub;;;;;;;;;;;;;;;;;;;;
; reti
set_setstart:clr set_menu
clr press
clr red
clr green
clr green_blink
clr red_blink
clr orange_blink
setb slow_orange
setb slow_orange2
setb come_back
clr ok
clr door_sensor2
clr menu
clr test_menu
setb b_j
set_setstart0:LCALL DOG ;喂狗56
mov r0,#50h
clr stop
set_setstart1:lcall key_scan
cjne a,#11h,set_setstart2
jmp set_setstart8
set_setstart2:cjne a,#13h,set_setstart3
jmp start_set
set_setstart3:mov @r0,a
inc r0
cjne r0,#54h,set_setstart1
mov r0,#60h
mov addr,#0f0h
mov r6,addr
set_setstart4:lcall i2c_read
mov r1,#60h
mov r0,#50h
mov r7,#4
LCALL DOG ;喂狗54
set_setstart5:mov a,@r1
xrl a,@r0
jnz set_setstart6
inc r0
inc r1
djnz r7,set_setstart5
jmp set_setstart7
mov r1,#64h
mov r0,#50h
mov r7,#4
LCALL DOG ;喂狗55
set_setstart6:mov a,@r1
xrl a,@r0
jnz set_setstart08;;;;;;;;;;;;;;;;;;;
inc r0
inc r1
djnz r7,set_setstart6
set_setstart7:lcall display_right
set_up13:setb green_blink
clr red_blink
clr orange_blink
clr green
clr red
clr b_j
setb come_back
clr menu
lcall key_SCAN
jnz set_0up
lcall test
set_0up:cjne a,#1,set_up12
setb pin
LCALL ADD_PIN0
set_up12:cjne a,#2,set_up14
setb pin
lcall sub_pin0
set_up14:cjne a,#3,set_up15
lcall time_delay
sjmp set_up21
set_setstart08:jmp set_setstart8
set_up15:cjne a,#4,set_up16
lcall PIN_46DIGIT
sjmp set_up21
set_up16:cjne a,#5,set_up17
lcall by_pass
sjmp set_up21
set_up17:cjne a,#6,set_up18
lcall permanent_lock
sjmp set_up21
set_up18:cjne a,#7,set_up20
lcall remove_door
sjmp set_up21
set_up20:cjne a,#13h,set_up21
clr red
clr green
clr menu
jmp waitp ;;;;;;;;;;;;;;;;;;;;
set_up21:jmp set_up13
set_setstart8:lcall display_error
inc degree1
mov a,degree1
;setb come_back
cjne a,#5,set11_setstart1
jmp program_end
set11_setstart1: jmp start_setset
test:clr red
clr green
clr green_blink
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -