亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? keypad.c

?? 一個(gè)通用嵌入式產(chǎn)品按鍵處理程序
?? C
字號(hào):
/*
*******************************************************************************
*                     (c) Copyright 2008 
*                             All Rights Reserved
*
*                                   Version V1.00
*
* Product Number: 
* Compiler Tool : 
* MCU		: 
* File 		: Keypad.c
* By   		: Tom.Yin
* Date 		: 
*******************************************************************************
*/

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


/*
*******************************************************************************
*				      GLOBAL 
*******************************************************************************
*/
unsigned char Key_Any;


/*
*******************************************************************************
* 		             LOCAL DEFINE
*******************************************************************************
*/
#define KEYPAD_DEBOUNCE_DELAY			2

/*
*******************************************************************************
* 		             LOCAL PARAMETER
*******************************************************************************
*/
static unsigned char Got_Key;
static unsigned char Pressed_Key_Counter;
static unsigned char Key_Debounce_Delay;
static unsigned char Keys;
static unsigned char Key_Old_Scaned;
static unsigned char Key_Save_Scaned;

/*
*******************************************************************************
* 		            FUNCTION DECLARE
*******************************************************************************
*/
void Init_Keypad(void);
void Clear_Keys(void);
void Process_Keypad_Events_1(void);
void Pressed_Key_count(void);
void Process_Keypad_Events(void);

unsigned char Is_Key_Hold(char Key_Index);
unsigned char Is_Any_Key_Hold(void);
unsigned char Is_Key_Pressed(char Key_Index);


/*
*******************************************************************************
*                             Init_Keypad
* Description: Inital Keypad process
*
* Arguments  : None
*
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void Init_Keypad(void)
{
	Init_Key_Scan();

	Got_Key				= 0;
	Key_Any				= 0;

	Key_Old_Scaned		= 0;
	Keys				= 0;

	Key_Debounce_Delay 	= 0;
	Pressed_Key_Counter	= 0;
}

/*
*******************************************************************************
*                             Is_Keypad_Changed
* Description: Any Key Status Changed, then get a change Information 
*
* Arguments  : None
*
* Returns    : Changed? Y return true, else return false
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
static unsigned char  Is_Keypad_Changed(void)
{
	if (Key_Old_Scaned != Key_Scaned)
	{
		return TRUE;
	}

	return FALSE;
}

/*
*******************************************************************************
*                             Get_Pressed_Keys
* Description: Count pressed keys
*
* Arguments  : None
*
* Returns    : How many Keys hold now.
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
static unsigned char Get_Pressed_Keys(unsigned char key)
{
	unsigned char keys;

	keys = 0;

	if (key & 1) keys ++;
	if (key & 2) keys ++;
	if (key & 4) keys ++;
	if (key & 8) keys ++;
	if (key & 16) keys ++;
	if (key & 32) keys ++;
	if (key & 64) keys ++;
	if (key & 128) keys ++;

	return keys;
}

/*
*******************************************************************************
*                             Process_Keypad_Events_1
* Description: Key Debounce Process
*
* Arguments  : None
*
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void Process_Keypad_Events_1(void)  
{
	Tick_Timer(Key_Debounce_Delay);

	Get_Key_Scan_Status();

	Key_Any = 0;
	Keys	= 0;

	if (Is_Keypad_Changed())
	{
		Key_Old_Scaned 		= Key_Scaned;
		Key_Debounce_Delay	= KEYPAD_DEBOUNCE_DELAY;
		return;
	}

	if (Key_Debounce_Delay)
	{
		return;
	}

	if (Has_New_Key_Pressed())
	{
		if (Got_Key)
		{
			// append fast key process wait...
			if (Key_Save_Scaned != Key_Scaned )
			{
				Got_Key			= 0;
			}
		}    
		else
		{
			unsigned char Keys_Pressed;

			Key_Any			= 1;
			Got_Key			= 1;
			Keys_Pressed	= 0;
			Keys			= Key_Scaned;
			Keys_Pressed 	+= Get_Pressed_Keys(Keys);
		}
		
		Key_Save_Scaned = Key_Scaned;
	} 
	else 
	{
		Got_Key 		= 0;
	}
}

/*
*******************************************************************************
*                             Pressed_Key_count
* Description: After key debounce process, count how many keys pressed
*
* Arguments  : None
*
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void Pressed_Key_count(void)
{
	unsigned char key_count;
	unsigned char key_count_bak;

	key_count_bak	= Pressed_Key_Counter;
	key_count		= 0; 

	key_count		+= Get_Pressed_Keys(Key_Scaned);
	
	if (key_count_bak > 1)
	{
		if (key_count > 0)
		{
			Pressed_Key_Counter = 2;
		}
		else
		{
			Pressed_Key_Counter = 0;
		}
	}
	else
	{
		Pressed_Key_Counter = key_count;
	}
}

/*
*******************************************************************************
*                             Process_Keypad_Events
* Description: Keypad Event Process
*
* Arguments  : None
*
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void Process_Keypad_Events(void)
{
	Process_Keypad_Events_1();
	Pressed_Key_count();
}

/*
*******************************************************************************
*                             Is_Key_Hold
* Description: appoint key hold now?
*
* Arguments  : Key_Index--------------appoint key(KI_UP...KI_BACK)
*
* Returns    : hold return true, else return false
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
unsigned char Is_Key_Hold(char key_index)
{
	unsigned char baddr;

	baddr = key_index & 0x07;

	return (Key_Scaned & (1 << baddr)) != 0;
}

/*
*******************************************************************************
*                             Is_Any_Key_Hold
* Description: any key hold now?
*
* Arguments  : None
*
* Returns    : hold return true, else return false
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
unsigned char  Is_Any_Key_Hold(void)
{
	unsigned char hold_keys;

	hold_keys = 0;
	hold_keys += Get_Pressed_Keys(Key_Old_Scaned);

	if (hold_keys > 0)
	{
		return true;
	}
	else
	{
		return false;
	}
}

/*
*******************************************************************************
*                             Is_Key_Pressed
* Description: appoint key pressed now?
*
* Arguments  : Key_Index--------------appoint key(KI_UP...KI_BACK)
*
* Returns    : hold return true, else return false
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
unsigned char  Is_Key_Pressed(char key_index)
{
	unsigned char baddr;

	baddr = key_index & 0x07;

	return ((Keys & (1 << baddr)) != 0) && (Pressed_Key_Counter == 1);
}

/*
*******************************************************************************
*                             Clear_Keys
* Description: Clearn all keys flg
*
* Arguments  : None
*
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void Clear_Keys(void)
{
	Keys = 0;
}




?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色涩在线第一页| 5月丁香婷婷综合| 亚洲成在人线免费| 欧美成人伊人久久综合网| 国产福利精品导航| 一区二区三区日韩欧美| 日韩天堂在线观看| 色综合欧美在线视频区| 久久99久久99精品免视看婷婷| 国产精品久久久久久久久晋中 | 欧美一区二区视频在线观看2022 | 欧美影视一区在线| 国产乱码字幕精品高清av| 亚洲精品免费看| 久久九九99视频| 在线不卡欧美精品一区二区三区| 激情综合网av| 亚洲成人在线免费| 中文字幕一区在线观看| 亚洲精品一线二线三线| 欧美日韩一区二区欧美激情| 成人va在线观看| 韩国三级电影一区二区| 亚洲国产精品影院| 亚洲欧美中日韩| 久久精品亚洲国产奇米99| 日韩欧美国产麻豆| 欧美人与禽zozo性伦| 91免费版在线| 成人免费视频视频在线观看免费| 韩国成人在线视频| 日韩成人午夜精品| 亚洲国产日韩a在线播放| 最新不卡av在线| 中文无字幕一区二区三区 | 国产人成亚洲第一网站在线播放| 91麻豆精品国产无毒不卡在线观看| 一本大道久久a久久综合婷婷| 国内成+人亚洲+欧美+综合在线| 日韩高清一区在线| 偷拍自拍另类欧美| 亚洲电影一区二区| 亚洲一区在线视频观看| 夜夜嗨av一区二区三区| 亚洲欧美国产高清| 亚洲欧美日韩国产另类专区| 中文字幕乱码一区二区免费| 久久中文字幕电影| 26uuu国产日韩综合| 欧美videos中文字幕| 欧美成人精品高清在线播放| 欧美一区二区视频免费观看| 91精品国产91久久久久久一区二区| 欧美色图天堂网| 欧美日韩午夜在线| 欧美日韩你懂得| 91精品国产综合久久久久久漫画 | 欧美日本精品一区二区三区| 欧美绝品在线观看成人午夜影视| 欧美日韩二区三区| 337p亚洲精品色噜噜| 8x8x8国产精品| 日韩一级成人av| 久久亚洲精精品中文字幕早川悠里| 久久综合色之久久综合| 国产视频一区在线观看| 国产精品人人做人人爽人人添| 国产精品久久午夜| 亚洲女人****多毛耸耸8| 亚洲一区二区五区| 日韩高清一区在线| 国产一区二区在线观看视频| 成人动漫一区二区| 在线免费观看日韩欧美| 欧美日韩另类一区| 日韩精品中午字幕| 国产欧美视频在线观看| 亚洲人吸女人奶水| 偷窥国产亚洲免费视频| 激情综合亚洲精品| 99久久99精品久久久久久| 欧美视频在线观看一区二区| 日韩欧美一区二区免费| 国产清纯在线一区二区www| 亚洲女与黑人做爰| 久久精品99国产精品| 国产成人综合精品三级| 色婷婷久久久综合中文字幕| 日韩视频在线一区二区| 亚洲欧美综合网| 免费观看久久久4p| 风间由美中文字幕在线看视频国产欧美| 91丨九色丨国产丨porny| 欧美日本韩国一区二区三区视频 | 中文字幕一区二区在线观看| 亚洲国产精品久久人人爱| 精品综合久久久久久8888| 成人18精品视频| 欧美电视剧免费全集观看| 亚洲欧洲另类国产综合| 日本怡春院一区二区| 成人一区在线观看| 91精品婷婷国产综合久久竹菊| 国产日韩高清在线| 午夜电影网一区| 不卡一区中文字幕| 日韩精品一区二区三区四区| 亚洲美女精品一区| 国产精品自在在线| 欧美巨大另类极品videosbest | 亚洲一级电影视频| 国产高清在线精品| 欧美一区永久视频免费观看| 欧美国产在线观看| 久久精品国产一区二区三| 不卡视频在线观看| 久久先锋影音av鲁色资源| 亚洲国产成人av| 成人成人成人在线视频| 久久综合av免费| 日韩av电影天堂| 色老汉av一区二区三区| 久久久久久久久免费| 日本美女一区二区三区| 欧美在线免费播放| 国产精品久久久久影视| 日韩专区一卡二卡| 色域天天综合网| 国产精品大尺度| 丁香五精品蜜臀久久久久99网站| 欧美一区欧美二区| 亚洲国产一区二区视频| 99精品欧美一区二区三区小说| 国产婷婷色一区二区三区| 国内精品国产三级国产a久久| 337p亚洲精品色噜噜| 亚洲一区精品在线| 不卡影院免费观看| 国产精品麻豆久久久| 国产精品911| 精品久久久三级丝袜| 久草在线在线精品观看| 欧美一区二区三区男人的天堂| 亚洲一区二区美女| 欧美在线小视频| 亚洲一区中文在线| 精品视频资源站| 亚洲1区2区3区视频| 在线不卡中文字幕播放| 日韩高清一区二区| 欧美一卡在线观看| 美洲天堂一区二卡三卡四卡视频 | 成人av动漫在线| 中文字幕一区二区三区av| 懂色av一区二区三区免费观看 | 天天综合日日夜夜精品| 欧美日韩国产a| 男男视频亚洲欧美| 精品久久久久久久久久久久久久久久久| 奇米影视7777精品一区二区| 欧美一区二区三区精品| 久久综合综合久久综合| 精品精品国产高清一毛片一天堂| 久久er99精品| 国产人成亚洲第一网站在线播放| 成人av资源在线观看| 亚洲视频 欧洲视频| 在线免费观看日本一区| 日韩电影在线免费观看| 日韩一级免费观看| 国产成人av电影| 亚洲美女偷拍久久| 欧美男男青年gay1069videost| 午夜精品久久久久久久久| 日韩一区和二区| 国产91精品欧美| 亚洲精品国产a| 欧美一级片在线观看| 国产成人午夜电影网| 亚洲一区二区美女| 久久伊人中文字幕| 不卡一区中文字幕| 日韩精品1区2区3区| 久久亚洲精品国产精品紫薇| 91网站视频在线观看| 同产精品九九九| 欧美国产精品中文字幕| 欧美日韩一区高清| 国产一区三区三区| 亚洲欧美精品午睡沙发| 日韩视频在线永久播放| 99久久精品国产毛片| 奇米四色…亚洲| 国产精品女同互慰在线看| 欧美无人高清视频在线观看| 精品一区二区三区欧美| 一区二区三区在线不卡| 精品99一区二区三区| 色欧美片视频在线观看| 国产在线视频精品一区|