📄 rd_usekey.lis
字号:
.module RD_UseKey.c
.area text(rom, con, rel)
0000 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
.area data(ram, con, rel)
0000 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
0000 _g_cReturnKeyNum::
0000 .blkb 1
.area idata
0000 FF .byte 255
.area data(ram, con, rel)
0001 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
0001 _g_cReturnLongPressKeyNum::
0001 .blkb 1
.area idata
0001 FF .byte 255
.area data(ram, con, rel)
0002 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
0002 _g_wKeyPressTimeCounter::
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
0004 _g_wKeyPressDelayCounter::
0004 .blkb 2
.area idata
0004 0000 .word 0
.area data(ram, con, rel)
0006 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
0006 _s_cKeyBUFFCounter:
0006 .blkb 1
.area idata
0006 00 .byte 0
.area data(ram, con, rel)
0007 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
0007 _s_cKeyBUFFHeadPoint:
0007 .blkb 1
.area idata
0007 00 .byte 0
.area data(ram, con, rel)
0008 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
0008 _s_cKeyBUFFTailPoint:
0008 .blkb 1
.area idata
0008 00 .byte 0
.area data(ram, con, rel)
0009 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
0009 _s_cLongKeyPressNum:
0009 .blkb 1
.area idata
0009 FF .byte 255
.area data(ram, con, rel)
000A .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
000A _s_cKeyNum:
000A .blkb 1
.area idata
000A FF .byte 255
.area data(ram, con, rel)
000B .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
000B L2:
000B .blkb 1
.area idata
000B FF .byte 255
.area data(ram, con, rel)
000C .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
000C L3:
000C .blkb 1
.area idata
000C 00 .byte 0
.area data(ram, con, rel)
000D .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
000D L4:
000D .blkb 2
.area idata
000D 0000 .word 0
.area data(ram, con, rel)
000F .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
.area text(rom, con, rel)
0000 .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_UseKey.c
0000 .dbfunc s _Key_Scan __Key_Scan fV
0000 .dbsym s LongPressAcceleration L4 i
0000 .dbsym s IfLongKeyPress L3 c
0000 .dbsym s OldKeyCode L2 c
0000 ; NowKeyCode0 -> R20
.even
0000 __Key_Scan:
0000 4A93 st -y,R20
0002 .dbline -1
0002 .dbline 179
0002 ; /***********************************************************
0002 ; * 函数库说明:按键处理函数库 *
0002 ; * 版本: v2.00 *
0002 ; * 作者: 傻孩子 *
0002 ; * 创建日期: 2005年11月27日 *
0002 ; * -------------------------------------------------------- *
0002 ; * [支 持 库] *
0002 ; * 支持库名称:RD_MacroAndConst.h *
0002 ; * 需要版本: v0.01 &abv *
0002 ; * 支持库说明:系统常用宏定义库 *
0002 ; * *
0002 ; * 支持库名称:RD_UseKey.h *
0002 ; * 需要版本: ---- *
0002 ; * 支持库说明:按键处理声明库 *
0002 ; * -------------------------------------------------------- *
0002 ; * [版本更新] *
0002 ; * 修改: 傻孩子 *
0002 ; * 修改日期: 2006年4月15日 *
0002 ; * 版本: v1.3 *
0002 ; * *
0002 ; * 修改: 傻孩子 *
0002 ; * 修改日期: 2006年4月23日 *
0002 ; * 版本: v1.31 *
0002 ; * *
0002 ; * 修改: 傻孩子 *
0002 ; * 修改日期: 2006年5月5日 *
0002 ; * 版本: v1.32 *
0002 ; * *
0002 ; * 修改: 王卓然 *
0002 ; * 修改日期: 2007年2月25日 *
0002 ; * 版本: v2.00 *
0002 ; * -------------------------------------------------------- *
0002 ; * [版本历史] *
0002 ; * v1.3以下 1、提供了对键盘缓冲区的支持。 *
0002 ; * 2、支持长按键处理。 *
0002 ; * 3、需要外部提供一个毫秒级的延时计数器。 *
0002 ; * 4、需要外部提供一个有返回值得键盘扫描 *
0002 ; * 函数,该函数需要做基本的去抖。 *
0002 ; * 5、可以外部定义缓冲区大小,空键值。 *
0002 ; * 6、增加了一个入口键盘扫描码的噪声抑制参 *
0002 ; * KEY_PRESS_DELAY,该值为毫秒级的单向 *
0002 ; * 递减数值,即如果值不为零,则减到0为。 *
0002 ; * 如果键盘响应过于迟钝,可以适当改小该 *
0002 ; * 参数值。 *
0002 ; * v1.3 修改了头文件的组织形式,对外的接口模式 *
0002 ; * 对一些时间计数器进行了分类和统一宏定义 *
0002 ; * 允许外部通过宏定义将这些接口连接到实际 *
0002 ; * 的计数器上。同时兼容从前的版本。 *
0002 ; * v1.31 修正了按键去抖计数器会干扰外部单向计数 *
0002 ; * 器的错误。 *
0002 ; * v1.32 允许选择自动刷新按键和手动刷新按键两种模式 *
0002 ; * v2.00 支持长按键以重复的间隔触发。 *
0002 ; * -------------------------------------------------------- *
0002 ; * [说明] *
0002 ; * 1、在外部合适的位置(毫秒中断程序)增加 *
0002 ; * USEKEY_INSERT_MS_TIMER_OVF_ISR_CODE来保证 *
0002 ; * 头文件的正常使用。 *
0002 ; * 2、可以通过定义KEY_BUFF_SIZE来设置键盘缓冲区 *
0002 ; * 的大小。 *
0002 ; * 3、可以通过定义KEY_PRESS_DELAY来设置去抖得 *
0002 ; * 时间常数。 *
0002 ; * 4、可以通过_USE_KEY_PRESS_SCAN_FUNC_INTERFACE *
0002 ; * 来连接用于键盘扫描的函数。该函数必须返回 *
0002 ; * 扫描码。 *
0002 ; * 5、通过GetKeyCode()函数来获得缓冲区状态,当 *
0002 ; * 该函数返回True时,可以从ReturnKeyNum和 *
0002 ; * ReturnLongPressKeyNum中分别获取按键和长 *
0002 ; * 按键的扫描码,两个值不能同时不为KeyNull *
0002 ; * 6、允许通过_USE_KEY_MANUL_REFRESH来选择自动刷 *
0002 ; * 新按键缓冲区的模式。 *
0002 ; * 7、可以通过宏_USE_KEY_LONG_PRESS_DELAY_TIME来 *
0002 ; * 定义长按键的最小判定时间。 *
0002 ; * 9、可以通过宏_USE_KEY_LONG_PRESS_REPEAT来打开 *
0002 ; * 长按键重复触发功能。 *
0002 ; * 8、宏_USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL可 *
0002 ; * 以用来设定长按键时重复触发的最小时间间隔等 *
0002 ; * 级。取值范围是0至4,数值越大,时间间隔越小 *
0002 ; * 默认情况下为2,即一秒钟重复4次。 *
0002 ; ***********************************************************/
0002 ;
0002 ; /********************
0002 ; * 头 文 件 配 置 区 *
0002 ; ********************/
0002 ; # include "RD_MacroAndConst.h"
0002 ; # include "LIB_Config.h"
0002 ; # include "RD_UseKey.h"
0002 ;
0002 ; /********************
0002 ; * 系 统 宏 定 义 *
0002 ; ********************/
0002 ;
0002 ;
0002 ; /*------------------*
0002 ; * 常 数 宏 定 义 *
0002 ; *------------------*/
0002 ; #ifndef KEY_BUFF_SIZE
0002 ; # define KEY_BUFF_SIZE 8
0002 ; #endif
0002 ; #ifndef KEY_NULL
0002 ; # define KEY_NULL 0xff
0002 ; #endif
0002 ;
0002 ; #ifndef KEY_PRESS_DELAY
0002 ; # define KEY_PRESS_DELAY 50
0002 ; #endif
0002 ;
0002 ; #ifndef _USE_KEY_LONG_PRESS_DELAY_TIME
0002 ; # define _USE_KEY_LONG_PRESS_DELAY_TIME 1000
0002 ; #endif
0002 ; #ifndef _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL
0002 ; # define _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL 2
0002 ; #endif
0002 ;
0002 ; #if _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL == 0
0002 ; # define _USE_KEY_LONG_PRESS_FASTEST_SPEED 0x03ff
0002 ; #elif _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL == 1
0002 ; # define _USE_KEY_LONG_PRESS_FASTEST_SPEED 0x01ff
0002 ; #elif _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL == 2
0002 ; # define _USE_KEY_LONG_PRESS_FASTEST_SPEED 0x00ff
0002 ; #elif _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL == 3
0002 ; # define _USE_KEY_LONG_PRESS_FASTEST_SPEED 0x007f
0002 ; #elif _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL == 4
0002 ; # define _USE_KEY_LONG_PRESS_FASTEST_SPEED 0x003f
0002 ; #else
0002 ; # define _USE_KEY_LONG_PRESS_FASTEST_SPEED 0x00ff
0002 ; #endif
0002 ;
0002 ; /********************
0002 ; * 函 数 声 明 区 *
0002 ; ********************/
0002 ; static void _Key_Scan(void);
0002 ;
0002 ; /********************
0002 ; * 函 数 声 明 区 *
0002 ; ********************/
0002 ; void Add_Key_Code(void);
0002 ; unsigned char Get_Key_Code(void);
0002 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -