多个按键的连按处理技巧

来源:本站
导读:目前正在解读《多个按键的连按处理技巧》的相关信息,《多个按键的连按处理技巧》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《多个按键的连按处理技巧》的详细说明。
简介:在设计中,常常用UP键和DOEN来调节参数。这种键在处理时,要考虑连按的问题。而且希望键连续按下的时间越长,动作的响应速度越快(即加速度处理)

在连按的处理过程中,要考虑3个时间常数:

1、连按响应时间常数(首次值),该值用于区分连按/单按。

a)当按键闭和的时间<该参数时,判为单按;

b)当按键闭和的时间>该参数时,判为连按;

2、连按缓冲时间常数(最大值)。

在连按操作刚开始时,按键响应速度较慢,这个参数就是用于决定每次动作之间的最大时间。

3、连按缓冲时间常数(最小值)

在连按的过程中,响应的速度越来越快,但也不能无限快。这个参数就是用于决定每次动作之间的最小时间。

还有一个要考虑的问题是,可能并不是所有按键都具有连按功能。这时,可用一个标志位来区分。在读键子程序中返回键值的同时,也返回这个标志,告诉键盘监控程序是否要做连按处理。

下面的一段例程中,可以识别单按/连按,并可处理加速度问题。只要在主程序中调用即可。程序中的延时用现实程序来代替。

;********************************

;按键处理模块

;********************************

;时间常数定义

KEY_T == 250 ;连按响应时间常数(首次值)

KEY_TMAX == 120 ;连按缓冲时间常数(最大值)

KEY_TMIN == 30 ;连按缓冲时间常数(最小值)

;********************************

KEYWK:

MOV A,@KEY_T

MOV KEY_JS,A ;连按计数器置初值

BC TT1,KEY ;清连按标志

MOV A,@KEY_TMAX-KEY_TMIN

MOV KEY_JSJS,A ;连按加速计数器置初值

CALL READKEY ;读键

JBS R3,C ;有键按下跳

RET

FCALL MOVLCD ;显示延时

CALL READKEY ;读键

JBS R3,C ;确实有键按下跳

RET

;====确实有键按下

MOV KEY_BUF,A ;保存键值

KEY1:

FCALL MOVLCD ;显示延时

CALL READKEY ;读键

JBS R3,C ;键未释放跳

JMP KEY5

;====连按判断

JBS TT1,KEY_EN ;连按功能有效跳

JMP KEY1 ;禁止连按跳

JBC TT1,KEY ;不是连按跳

JMP KEY2

DJZ KEY_JS ;连按计数器-1=0跳

JMP KEY1

BS TT1,KEY ;置连按标志

JMP KEY1

;====连按处理

KEY2:

CALL DOKEY ;执行按键功能

MOV WK_MODE,A ;刷新模式

;连按加速计数器-1

DJZ KEY_JSJS

JMP $+2

INC KEY_JSJS

;连按计数器置延时值

MOV A,@KEY_TMIN

ADD A,KEY_JSJS

MOV KEY_JS,A ;连按计数器置延时值

KEY4:

FCALL MOVLCD ;显示延时

DJZ KEY_JS ;连按计数器-1=0跳

JMP KEY4

JMP KEY1

;====单按处理

KEY5:

FCALL MOVLCD ;显示延时

CALL READKEY ;读键

JBC R3,C ;键确实已释放跳

JMP KEY1

JBC TT1,KEY ;不是连按跳

RET

;按键发声

BS TT1,KEY_SP ;开蜂鸣器

FCALL MOVLCD

CALL DOKEY ;执行按键功能

MOV WK_MODE,A ;刷新模式

BC TT1,KEY_SP ;关蜂鸣器

FCALL MOVLCD

RET

;********************************

;读键子程序

;出口: A=键号值(0=无,1=K2定时,2=K3功率选择,3=K4水温上调,4=K5水温下调,

; 5=K6时钟上调,6=K7时钟下调,7=K8时段设置)

; C: (0=无,1=有)

; TT1,KEY_EN: 当前键连按有效标志(0=禁止连按,1=可连按)

; (K4/K5/K6/K7有连按功能)

;********************************

READKEY:

BS R3,C

;不可连按的按键

BC TT1,KEY_EN

JBS R7,6 ;K2未闭合跳

RETL @01 ;返回A=01

JBS R7,0 ;K3未闭合跳

RETL @02 ;返回A=02

JBS R7,5 ;K8未闭合跳

RETL @07 ;返回A=07

;可连按的按键

BS TT1,KEY_EN

JBS R7,1 ;K4未闭合跳

RETL @03 ;返回A=03

JBS R7,2 ;K5未闭合跳

RETL @04 ;返回A=04

JBS R7,3 ;K6未闭合跳

RETL @05 ;返回A=05

JBS R7,4 ;K7未闭合跳

RETL @06 ;返回A=06

BC R3,C

RETL @00 ;返回A=00

----结束

提醒:《多个按键的连按处理技巧》最后刷新时间 2024-03-14 01:00:02,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《多个按键的连按处理技巧》该内容的真实性请自行鉴别。