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

📄 key scan.c

📁 一个通用嵌入式产品按键处理程序
💻 C
字号:
/*
*******************************************************************************
*                     (c) Copyright 2008 
*                             All Rights Reserved
*
*                                   Version V1.00
*
* Product Number: 
* Compiler Tool : 
* MCU		: 
* File 		: Key Scan.c
* By   		: 
* Date 		: 
*******************************************************************************
*/

/*
*******************************************************************************
* 			          INCLUDE FILE
*******************************************************************************
*/
#include "Include.h"


/*
*******************************************************************************
*				      GLOBAL 
*******************************************************************************
*/
#define KEY_SCAN_MASK                 (((INT32U)BIN(00000011) << 24) + ((INT32U)BIN(11000000) << 16) + ((INT32U)BIN(00000000) << 8) + BIN(00000000))
unsigned char Key_Scaned;
/*
*******************************************************************************
* 		             LOCAL DEFINE
*******************************************************************************
*/

/*
*******************************************************************************
* 		             LOCAL PARAMETER
*******************************************************************************
*/

/*
*******************************************************************************
* 		            FUNCTION DECLARE
*******************************************************************************
*/
void Key_IO_Config(void);
void Init_Key_Scan(void);
unsigned char Get_Key_Scan_Status(void);
unsigned char Has_New_Key_Pressed(void);


/*
*******************************************************************************
*                             Key_IO_Config
* Description: Key IO interface config
*
* Arguments  : None
*
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void Key_IO_Config(void)
{
	SET_PIN_DIR(GPIO_0_22, INPUT_ATTRIBUTE);		//BTN_UP_PIN
	SET_PIN_DIR(GPIO_0_23, INPUT_ATTRIBUTE);		//BTN_DOWN_PIN
	SET_PIN_DIR(GPIO_0_24, INPUT_ATTRIBUTE);		//BTN_BACK_PIN
	SET_PIN_DIR(GPIO_0_25, INPUT_ATTRIBUTE);		//BTN_FRONT_PIN
}

/*
*******************************************************************************
*                             Init_Key_Scan
* Description: Initial Key Scan
*
* Arguments  : None
*
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void Init_Key_Scan(void)
{
	Key_IO_Config();
	Key_Scaned	= 0;
}

/*
*******************************************************************************
*                             Get_Key_Scan_Status
* Description: Get Key Scan Status
*
* Arguments  : None
*
* Returns    : Key Status
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
unsigned char Get_Key_Scan_Status(void)
{
	unsigned int key;
	
	IOSET0		|= KEY_SCAN_MASK;

	key			= ~IOPIN0 & KEY_SCAN_MASK;
	key 		= key >> 22;
	Key_Scaned	= (unsigned char)(key & 0xff);
	return	Key_Scaned;
}

/*
*******************************************************************************
*                             Has_New_Key_Pressed
* Description: Has New Key Pressed
*
* Arguments  : None
*
* Returns    : Has key hold then return true, else return false
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
unsigned char Has_New_Key_Pressed(void)
{
	if (Key_Scaned != 0)
	{
		return true;
	}
	
	return false;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -