?? 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鍵處理,選擇時(shí)鐘設(shè)置的位置
;*****************************************************
keys_manage_1: clr ex0
call beep1
mov a,aleart_data ;若目前處于鬧鐘設(shè)置狀態(tài)則提示并退出
jnb acc.7,keys_manage_200
call beep2
setb digital_bit
setb ex0
ret
keys_manage_200: mov a,digital_flash_bit ;設(shè)置目前處于時(shí)鐘設(shè)置狀態(tài)
setb acc.7
mov digital_flash_bit,a
anl a,#07h
cjne a,#0,keys_manage_20 ;此字節(jié)為負(fù)邏輯,0為第五位數(shù)碼管,5為第零位數(shù)碼管
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鍵處理,將調(diào)節(jié)后的數(shù)據(jù)寫至?xí)r鐘芯片中
;*****************************************************
keys_manage_2: call beep1 ;清除所有的閃爍并重置時(shí)鐘
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 ;清除狀態(tài)
mov r0,#8 ;需要清除閃爍標(biāo)志的數(shù)量
mov r1,#digital_byte
keys_manage_10: mov a,@r1
clr acc.7
mov @r1,a
inc r1
djnz r0,keys_manage_10 ;沒清除完則繼續(xù)清除
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 ;時(shí)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -