松翰单片机之按键处理 软件部分
;;****************************************
;;长短按键处理,及LED灯与按键复用,处理程序
;;按键处理
;;描述:5个按键,开关(f_key_on),时间加(f_key_up)
;; 时间减(f_key_down),水果键(f_key_friut)
;; 熟菜键(f_key_vag)
;;input:
;;output:
;;
;;****************************************
;;
key_pro:
bts1 f_key_scan ;;10ms扫描一次
jmp key_pro90
bclr f_key_scan
;;---------------------------------------
mov a,p1
mov b_save_p1,a ;;保存p10的值
mov a,p5
mov b_save_p5,a ;;保存p5的值
bclr com1
bclr com2
bclr com3
bclr com4
bset com5
bclr seg1
bclr seg2
bclr seg3
bclr seg4
bclr seg5
bclr seg6
bclr seg7
bset fp00
mov a,#11111110b ;;p10输入上拉
mov p1m,a
mov a,#0efh
mov p1ur,a
mov a,#00000000b
mov p1,a
mov a,#11110000b ;;p50-p53输入上拉
mov p5m,a
mov a,#0ffh
mov p5ur,a
mov a,#0
mov p5,a
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
;;--------------------------------------
key_cvt:
mov a,#0
;;--------------------------------------;;
bts1 f_key_on ;;开关
mov a,#8
;;--------------------------------------
bts1 f_key_fruit
mov a,#2 ;;水果键
;;--------------------------------------
bts1 f_key_vag ;;熟菜键
mov a,#3
;;-------------------------------------
bts1 f_key_up ;;加
mov a,#4
;;-------------------------------------
bts1 f_key_down ;;减
mov a,#5
;;-------------------------------------
mov b_save_var,a
cmprs a,#0
jmp @f
clr b_key_40ms ;;按键没按或释放
clr b_key_2s
bclr f_long_key
bclr f_up_buzzer
bts1 f_short_key
jmp key_pro80
bclr f_short_key
jmp mn_key
;;-------------------------------------
@@:
;;
incms b_key_40ms
nop
cjb_ b_key_40ms,#4,key_pro80
clr b_key_40ms
bts0 f_long_key ;;
jmp @f ;;
bset f_short_key ;;不是长按键
mov a,b_save_var
mov b_key_var,a
;;-------------------------------------------------------
@@:
bts0 f_key_on
jmp @f
incms b_key_2s
nop
cjb_ b_key_2s,#50,key_pro80 ;;2s
clr b_key_2s
bset f_long_key
bclr f_short_key
mov a,#1
mov b_key_var,a
jmp mn_key
@@:
incms b_key_2s ;;1s
nop
cjb_ b_key_2s,#25,key_pro80
clr b_key_2s
bset f_long_key
bclr f_short_key
;;----------------------------------------------------
@@:
bts0 f_key_up ;;常加
jmp @f
mov a,#6
mov b_key_var,a
bts0 f_up_buzzer
jmp mn_key ;;响一声
mov a,#1 ;;
mov b_buzzer_var,a
bset f_buzzer_enb
bset f_up_buzzer
jmp mn_key
;;----------------------------------------------
@@:
bts0 f_key_down ;;常减
jmp key_pro80
mov a,#7
mov b_key_var,a
bts0 f_up_buzzer
jmp mn_key ;;响一声
mov a,#1 ;;
mov b_buzzer_var,a
bset f_buzzer_enb
bset f_up_buzzer
jmp mn_key
;;---------------------------------------------
key_pro80:
mov a,#11110111b ;;p10 p11 p12 复用,p13输入,p16,p17,p14输出0
mov p1m,a
mov a,b_save_p1
mov p1,a
mov a,b_save_p5
mov a,p5
;;---------------------------------------
mov a,#0ffh
mov p5m,a ;;p50-p53复用,p54-p57输出0
mov a,#0
mov p5,a
;;----------------------------------------
key_pro90:
ret |