⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key_switch.h

📁 MEGA32L 单片机的按键,LED,LCD等测试例程,ICCAVR编译器
💻 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 + -