📄 keysmanagement.asm
字号:
;*****************************************************
;
; This programme is for study Ver2.0.0 beta
;This programme must be run in 12MHz standard settings
; The keys management
; Designer: Mr.Koii
; Copyright 2002-2003 koiistudio
; 2003.03.31 at Changsha. H.N. P.R.China
;
;*****************************************************
;*****************************************************
;键盘中断处理程序
;*****************************************************
keys_int: clr ea
clr ie1
clr digital_bit
mov p2,#0
mov a,p1
cpl a
anl a,#0fh
cjne a,#0,keys_reader
clr ie1
setb ea
setb digital_bit
reti
keys_reader: call time10ms
mov a,p1
cpl a
anl a,#0fh
mov keys_byte,a
keys_reader_0: call digital
mov a,p1
cpl a
anl a,#0fh
cjne a,#0,keys_reader_0
clr ie1
setb ea
setb digital_bit
reti
;*****************************************************
;按键处理程序
;*****************************************************
keys_management: cjne a,#01h,keys_check_2
sjmp keys_1
keys_check_2: cjne a,#02h,keys_check_3
sjmp keys_2
keys_check_3: cjne a,#04h,keys_check_4
sjmp keys_3
keys_check_4: cjne a,#08h,keys_check_err
sjmp keys_4
keys_check_err: setb digital_bit
ret
keys_1: jmp keys_manage_1
keys_2: jmp keys_manage_2
keys_3: jmp keys_manage_3
keys_4: jmp keys_manage_4
;*****************************************************
;1键处理,选择时钟设置的位置
;*****************************************************
keys_manage_1: clr ex0
call beep1
mov a,aleart_data ;若目前处于闹钟设置状态则提示并退出
jnb acc.7,keys_manage_200
call beep2
setb digital_bit
setb ex0
ret
keys_manage_200: mov a,digital_flash_bit ;设置目前处于时钟设置状态
setb acc.7
mov digital_flash_bit,a
anl a,#07h
cjne a,#0,keys_manage_20 ;此字节为负逻辑,0为第五位数码管,5为第零位数码管
mov a,#digital_byte ;将闪烁位的最高位置1
add a,#5
mov r0,a
mov a,@r0
setb acc.7
mov @r0,a
mov r0,#digital_byte ;将闪烁位的高一位的最高位清0
mov a,@r0
clr acc.7
mov @r0,a
inc digital_flash_bit
setb digital_bit
ret
keys_manage_20: cjne a,#1,keys_manage_21
mov a,#digital_byte
add a,#4
mov r0,a
mov a,@r0
setb acc.7
mov @r0,a
inc r0
mov a,@r0
clr acc.7
mov @r0,a
inc digital_flash_bit
setb digital_bit
ret
keys_manage_21: cjne a,#2,keys_manage_22
mov a,#digital_byte
add a,#3
mov r0,a
mov a,@r0
setb acc.7
mov @r0,a
inc r0
mov a,@r0
clr acc.7
mov @r0,a
inc digital_flash_bit
setb digital_bit
ret
keys_manage_22: cjne a,#3,keys_manage_23
mov a,#digital_byte
add a,#2
mov r0,a
mov a,@r0
setb acc.7
mov @r0,a
inc r0
mov a,@r0
clr acc.7
mov @r0,a
inc digital_flash_bit
setb digital_bit
ret
keys_manage_23: cjne a,#4,keys_manage_24
mov a,#digital_byte
add a,#1
mov r0,a
mov a,@r0
setb acc.7
mov @r0,a
inc r0
mov a,@r0
clr acc.7
mov @r0,a
inc digital_flash_bit
setb digital_bit
ret
keys_manage_24: cjne a,#5,keys_manage_25
mov r0,#digital_byte
mov a,@r0
setb acc.7
mov @r0,a
inc r0
mov a,@r0
clr acc.7
mov @r0,a
mov digital_flash_bit,#0
setb digital_bit
ret
keys_manage_25: setb digital_bit
setb ex0
ret
;*****************************************************
;2键处理,将调节后的数据写至时钟芯片中
;*****************************************************
keys_manage_2: call beep1 ;清除所有的闪烁并重置时钟
mov a,digital_flash_bit
jb acc.7,keys_manage_100
mov a,aleart_byte
jb acc.7,keys_manage_101
setb digital_bit
setb ex0
ret
keys_manage_100: mov digital_flash_bit,#0 ;清除状态
mov r0,#8 ;需要清除闪烁标志的数量
mov r1,#digital_byte
keys_manage_10: mov a,@r1
clr acc.7
mov @r1,a
inc r1
djnz r0,keys_manage_10 ;没清除完则继续清除
mov r1,#digital_byte
mov a,#date_data
add a,#2
mov r0,a
mov b,@r1 ;秒
inc r1
mov a,@r1 ;十秒
swap a
orl a,b
mov @r0,a
inc r0
inc r1
mov b,@r1 ;分
inc r1
mov a,@r1 ;十分
swap a
orl a,b
mov @r0,a
inc r0
inc r1
mov b,@r1 ;时
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -