📄 keyscan.h
字号:
#ifndef KeyScan_H
#define KeyScan_H
#define KeyMaxNum 8 // 实际系统中按键的数目
// 由于按键扫描程序是在定时器中被调用,所以在使用该函数前,首先要确认定时间隔,
// 这是下面按键几个重要参数间隔时间的基准
#define KeyDelayTime 6 // 按键抗干扰检测次数,一般间隔10ms检测一次
#define KeyMaxTime 200 // 从第一次按下后,确定按键连击的时间
#define KeyMinTime 60 // 连击中,决定连击间隔
typedef struct {
unsigned char KeyYearCnt[KeyMaxNum]; // 按键“年份”计数器
unsigned char KeyDownF_Flag; // 第一次进入按键的状态
unsigned char KeyDownM_Flag; // 多次进入按键的状态
}_KeyScanStatus;
/*******************************************************************************************************
** 名 称:Key_Scan
** 功 能:本程序是采用查询的方式来扫描按键的,此处是假定KEY键全部接在P0口上的,在使用的时候要根据
实际的情况更改。由于此程序是在定时器0#中断中被调用,所以此处把它定义为可重入函数
** 入口参数:PinValue 按键实际连接的物理端口
** 出口参数:无
** 注 意:该程序执行时间的长短与所需要扫描的按键数目有关系;
如果在强实时系统上,可以把该定时器0#中断设为最低优先级;需要强实时的处理在更高的优先级
中断中进行。
**----------------------------------------------------------------------------------------------------
** 作 者 : 严俊生
** 日 期 : 2007-07-06
**----------------------------------------------------------------------------------------------------
** 修改人 :
** 日 期 :
*******************************************************************************************************/
extern void Key_Scan(unsigned char PinValue) reentrant;
/*******************************************************************************************************
** 名 称:GetKey_Value
** 功 能:本程序根据扫描的结果来判断按键的状态,是第一次按键,还是连击
** 入口参数:无
** 出口参数:返回按键的键号,支持多个按键同时按下
**----------------------------------------------------------------------------------------------------
** 作 者 : 严俊生
** 日 期 : 2007-07-06
**----------------------------------------------------------------------------------------------------
** 修改人 :
** 日 期 :
*******************************************************************************************************/
extern unsigned char GetKey_Value(void);
#endif
/********************************* End *************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -