📄 key_switch.h
字号:
//======================================
//按键模块头文件
//FileName =key_switch.h
//Date Time=20071229
//======================================
#include"public.h"
#include"int_serv.h"
#ifndef _KEY_SWITCH_H_
#define _KEY_SWITCH_H_
//--------------------------------------
//硬件引脚和操作代码宏定义
//--------------------------------------
#define HD_PIN_KEY_MENU PA4
#define HD_PIN_KEY_EXIT PA5
#define HD_PIN_KEY_UP PA6
#define HD_PIN_KEY_DOWN PA7
//--------------------------------------
//常数的定义
//--------------------------------------
#define CONST_KEY_PRESS_IS_SHORT 0
#define CONST_KEY_PRESS_IS_LONG 1
#define CONST_HAS_READ_KEY 1
#define CONST_NOT_READ_KEY 0
#define CONST_NKEY_WAIT_PRESS 0 //等待按键
#define CONST_NKEY_PRESS_DELAY 1 //已经按键,开始延时
#define CONST_NKEY_WAIT_UP 2 //等待按键弹起
#define COSNT_NKEY_UP_DELAY 3 //已经弹起,开始延时
#define CONST_KEY_PRESS_DELAY_TIME 31 //判断按键按下的延时时间,单位:毫秒
#define CONST_KEY_CONTINUE_DELAY_TIME 51 //连续按键的间隔的延时时间,单位:毫秒
#define CONST_KEY_CONTINUE_DELAY_TIME_1 351 //第一次连续按键的间隔的延时时间,单位:毫秒
#define CONST_KEY_PRESS_DELAY (uint)(CONST_KEY_PRESS_DELAY_TIME/CONST_TIMER0_INT_TIMES_UNIT) //判断按键按下的延时数
#define CONST_KEY_CONTINUE_DELAY (uint)(CONST_KEY_CONTINUE_DELAY_TIME/CONST_TIMER0_INT_TIMES_UNIT) //判断连续按键的间隔延时数
#define CONST_KEY_CONTINUE_DELAY_FIRST (uint)(CONST_KEY_CONTINUE_DELAY_TIME_1/CONST_TIMER0_INT_TIMES_UNIT) //第一次判断连续按键的间隔延时数
//按键端口值,已经取反
#define CONST_KEY_PORT_VAL_MENU 0x10
#define CONST_KEY_PORT_VAL_EXIT 0x20
#define CONST_KEY_PORT_VAL_UP 0x40
#define CONST_KEY_PORT_VAL_DOWN 0x80
//按键标识
#define CONST_KEY_LABEL_IDEL 0x00
#define CONST_KEY_LABEL_MENU 0x01
#define CONST_KEY_LABEL_EXIT 0x02
#define CONST_KEY_LABEL_UP 0x03
#define CONST_KEY_LABEL_DOWN 0x04
//--------------------------------------
//数据类型的定义
//--------------------------------------
//当前按键的结构,按键处理的时候,如果同时发生则本地按键优先
struct _st_curr_key{
uchar flag_key_is_long_type; //=1 当前的按键长按键, =0 当前按键是短按键, =0xff 初始值
uchar local_key_label; //本地按键标识
};
//此结构仅仅是本文件内使用的!!
//读入按键端口数据值判断结构
struct _st_judge_key{
uint byte_key_delay_time; //判断按键按下、弹起延时时间(单位:ms)
uint press_now_key_value; //按键判断期间的本次判断的按键
uint press_last_key_value; //按键判断期间的前次判断的按键
uint curr_get_key_value; //当前的按键端口值, !=0 有按键
uchar curr_key_is_long; //=1 当前按键是长按键方式
};
//--------------------------------------
//外部变量的说明
//--------------------------------------
extern volatile struct _st_judge_key st_judge_key; //按键判断使用的变量结构
extern volatile struct _st_curr_key st_curr_key; //外部流程使用的数据
//--------------------------------------
//函数的预定义
//--------------------------------------
uchar judge_read_local_keys(void);
#endif
//End Of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -