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

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

?? rd_usekey._c

?? LCD1602鍵盤顯示模塊實(shí)例
?? _C
字號(hào):
/***********************************************************
*   函數(shù)庫說明:按鍵處理函數(shù)庫                             *
*   版本:      v2.00                                      *
*   作者:      傻孩子                                     *
*   創(chuàng)建日期:  2005年11月27日                             *
* -------------------------------------------------------- *
*  [支 持 庫]                                              *
*   支持庫名稱:RD_MacroAndConst.h                         *
*   需要版本:  v0.01 &abv                                 *
*   支持庫說明:系統(tǒng)常用宏定義庫                           *
*                                                          *
*   支持庫名稱:RD_UseKey.h                                *
*   需要版本:  ----                                       *
*   支持庫說明:按鍵處理聲明庫                             *
* -------------------------------------------------------- *
*  [版本更新]                                              *
*   修改:      傻孩子                                     *
*   修改日期:  2006年4月15日                              *
*   版本:      v1.3                                       *
*                                                          *
*   修改:      傻孩子                                     *
*   修改日期:  2006年4月23日                              *
*   版本:      v1.31                                      *
*                                                          *
*   修改:      傻孩子                                     *
*   修改日期:  2006年5月5日                               *
*   版本:      v1.32                                      *
*                                                          *
*   修改:      王卓然                                     *
*   修改日期:  2007年2月25日                              *
*   版本:      v2.00                                      *
* -------------------------------------------------------- *
*  [版本歷史]                                              *
*     v1.3以下  1、提供了對鍵盤緩沖區(qū)的支持。              *
*               2、支持長按鍵處理。                        *
*               3、需要外部提供一個(gè)毫秒級(jí)的延時(shí)計(jì)數(shù)器。    *
*               4、需要外部提供一個(gè)有返回值得鍵盤掃描      *
*                  函數(shù),該函數(shù)需要做基本的去抖。          *
*               5、可以外部定義緩沖區(qū)大小,空鍵值。        *
*               6、增加了一個(gè)入口鍵盤掃描碼的噪聲抑制參    *
*                 KEY_PRESS_DELAY,該值為毫秒級(jí)的單向      *
*                 遞減數(shù)值,即如果值不為零,則減到0為。    *
*                 如果鍵盤響應(yīng)過于遲鈍,可以適當(dāng)改小該     *
*                 參數(shù)值。                                 *
*     v1.3      修改了頭文件的組織形式,對外的接口模式     *
*               對一些時(shí)間計(jì)數(shù)器進(jìn)行了分類和統(tǒng)一宏定義     *
*               允許外部通過宏定義將這些接口連接到實(shí)際     *
*               的計(jì)數(shù)器上。同時(shí)兼容從前的版本。           *
*     v1.31     修正了按鍵去抖計(jì)數(shù)器會(huì)干擾外部單向計(jì)數(shù)     *
*               器的錯(cuò)誤。                                 *
*     v1.32     允許選擇自動(dòng)刷新按鍵和手動(dòng)刷新按鍵兩種模式 *
*     v2.00     支持長按鍵以重復(fù)的間隔觸發(fā)。               *
* -------------------------------------------------------- *
*  [說明]                                                  *
*            1、在外部合適的位置(毫秒中斷程序)增加         *
*               USEKEY_INSERT_MS_TIMER_OVF_ISR_CODE來保證  *
*               頭文件的正常使用。                         *
*            2、可以通過定義KEY_BUFF_SIZE來設(shè)置鍵盤緩沖區(qū)  *
*               的大小。                                   *
*            3、可以通過定義KEY_PRESS_DELAY來設(shè)置去抖得    *
*               時(shí)間常數(shù)。                                 *
*            4、可以通過_USE_KEY_PRESS_SCAN_FUNC_INTERFACE *
*               來連接用于鍵盤掃描的函數(shù)。該函數(shù)必須返回   *
*               掃描碼。                                   *
*            5、通過GetKeyCode()函數(shù)來獲得緩沖區(qū)狀態(tài),當(dāng)   *
*               該函數(shù)返回True時(shí),可以從ReturnKeyNum和     *
*               ReturnLongPressKeyNum中分別獲取按鍵和長    *
*               按鍵的掃描碼,兩個(gè)值不能同時(shí)不為KeyNull    *
*            6、允許通過_USE_KEY_MANUL_REFRESH來選擇自動(dòng)刷 *
*               新按鍵緩沖區(qū)的模式。                       *
*            7、可以通過宏_USE_KEY_LONG_PRESS_DELAY_TIME來 *
*               定義長按鍵的最小判定時(shí)間。                 *
*            9、可以通過宏_USE_KEY_LONG_PRESS_REPEAT來打開 *
*               長按鍵重復(fù)觸發(fā)功能。                       *
*            8、宏_USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL可  *
*               以用來設(shè)定長按鍵時(shí)重復(fù)觸發(fā)的最小時(shí)間間隔等 *
*               級(jí)。取值范圍是0至4,數(shù)值越大,時(shí)間間隔越小 *
*               默認(rèn)情況下為2,即一秒鐘重復(fù)4次。           *
***********************************************************/

/********************
* 頭 文 件 配 置 區(qū) *
********************/
# include "RD_MacroAndConst.h"
# include "LIB_Config.h"
# include "RD_UseKey.h"

/********************
*   系 統(tǒng) 宏 定 義  *
********************/


/*------------------*
*   常 數(shù) 宏 定 義  *
*------------------*/
#ifndef KEY_BUFF_SIZE
    # define KEY_BUFF_SIZE     8
#endif
#ifndef KEY_NULL
    # define KEY_NULL         0xff
#endif

#ifndef KEY_PRESS_DELAY
    # define KEY_PRESS_DELAY  50
#endif

#ifndef _USE_KEY_LONG_PRESS_DELAY_TIME
    # define _USE_KEY_LONG_PRESS_DELAY_TIME     1000
#endif
#ifndef _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL
    # define _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL 2
#endif

#if _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL == 0
    # define _USE_KEY_LONG_PRESS_FASTEST_SPEED 0x03ff
#elif _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL == 1
    # define _USE_KEY_LONG_PRESS_FASTEST_SPEED 0x01ff
#elif _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL == 2
    # define _USE_KEY_LONG_PRESS_FASTEST_SPEED 0x00ff
#elif _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL == 3
    # define _USE_KEY_LONG_PRESS_FASTEST_SPEED 0x007f
#elif _USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL == 4
    # define _USE_KEY_LONG_PRESS_FASTEST_SPEED 0x003f
#else
    # define _USE_KEY_LONG_PRESS_FASTEST_SPEED 0x00ff 
#endif

/********************
*   函 數(shù) 聲 明 區(qū)  *
********************/
static void _Key_Scan(void);

/********************
*   函 數(shù) 聲 明 區(qū)  *
********************/
void Add_Key_Code(void);
unsigned char Get_Key_Code(void);

/********************
*   函 數(shù) 引 用 區(qū)  *
********************/
#ifndef _USE_KEY_PRESS_SCAN_FUNC_INTERFACE
    # error Need for _USE_KEY_PRESS_SCAN_FUNC_INTERFACE
#else
    extern unsigned char _USE_KEY_PRESS_SCAN_FUNC_INTERFACE(void);
#endif

/********************
*   全局變量聲明區(qū)  *
********************/
unsigned char g_cReturnKeyNum = KEY_NULL;
unsigned char g_cReturnLongPressKeyNum = KEY_NULL;
unsigned int g_wKeyPressTimeCounter = 0;
unsigned int g_wKeyPressDelayCounter = 0;

/********************
*   模塊變量聲明區(qū)  *
********************/
static unsigned char s_cKeyBUFF[KEY_BUFF_SIZE][2];
static unsigned char s_cKeyBUFFCounter = 0;
static unsigned char s_cKeyBUFFHeadPoint = 0;
static unsigned char s_cKeyBUFFTailPoint = 0;

static unsigned char s_cLongKeyPressNum = KEY_NULL;
static unsigned char s_cKeyNum = KEY_NULL;


/***********************************************************
*   函數(shù)說明:按鍵掃描碼處理函數(shù)                           *
*   輸入:    無                                           *
*   輸出:    無                                           *
*   調(diào)用函數(shù):_USE_KEY_PRESS_SCAN_FUNC_INTERFACE()         *
* -------------------------------------------------------- *
*   [說    明]                                             *
*            按下一個(gè)鍵以后,1s以內(nèi)松開返回短按鍵鍵值      *
*            1s以上返回長按鍵鍵值。鍵值只保存一個(gè)周期      *
***********************************************************/
static void _Key_Scan(void)
{
    static unsigned char OldKeyCode = KEY_NULL;
    static unsigned char IfLongKeyPress = FALSE;
    static unsigned int  LongPressAcceleration = 0;
	 
    unsigned char NowKeyCode = _USE_KEY_PRESS_SCAN_FUNC_INTERFACE();
    s_cKeyNum = KEY_NULL;
	
    if ((OldKeyCode != NowKeyCode) && (g_wKeyPressDelayCounter == 0))
    {
        g_wKeyPressTimeCounter = 0;
        LongPressAcceleration = 0x01ff;
          
        if ((NowKeyCode == KEY_NULL) && (IfLongKeyPress == FALSE))
        {
            s_cKeyNum = OldKeyCode;
        }
		  
        g_wKeyPressDelayCounter = KEY_PRESS_DELAY;
		  
        OldKeyCode = NowKeyCode;
        IfLongKeyPress = FALSE;
    }
    else
    {
        s_cKeyNum = KEY_NULL;
        if ((g_wKeyPressTimeCounter > _USE_KEY_LONG_PRESS_DELAY_TIME) && (IfLongKeyPress == FALSE))
        {
            #ifdef _USE_KEY_LONG_PRESS_REPEAT
            if (LongPressAcceleration > _USE_KEY_LONG_PRESS_FASTEST_SPEED)
            {
                LongPressAcceleration >>= 1;
            }
            #endif
            s_cLongKeyPressNum = NowKeyCode;
            IfLongKeyPress = TRUE;
        }
        else
        {
            #ifdef _USE_KEY_LONG_PRESS_REPEAT
            if (!(g_wKeyPressTimeCounter & LongPressAcceleration))
            {
                IfLongKeyPress = FALSE;
            }
            else
            {
                s_cLongKeyPressNum = KEY_NULL;
            }
            #else
            s_cLongKeyPressNum = KEY_NULL;    
            #endif
        }
    }
	 
}

/***********************************************************
*   函數(shù)說明:鍵盤緩沖處理函數(shù)                             *
*   輸入:    無                                           *
*   輸出:    無                                           *
*   調(diào)用函數(shù):_Key_Scan()                                  *
***********************************************************/
void Add_Key_Code(void)
{
    _Key_Scan();
    
	if ((s_cKeyNum == KEY_NULL) && (s_cLongKeyPressNum == KEY_NULL))
	{
	    return ;
	}
	
	if ((s_cKeyBUFFHeadPoint == s_cKeyBUFFTailPoint) && (s_cKeyBUFFCounter != NULL))
	{
	    return ;
	}
	
	s_cKeyBUFF[s_cKeyBUFFTailPoint][0] = s_cKeyNum;
	s_cKeyBUFF[s_cKeyBUFFTailPoint][1] = s_cLongKeyPressNum;
	
	s_cKeyBUFFTailPoint ++;
	if (s_cKeyBUFFTailPoint == KEY_BUFF_SIZE)
	{
	    s_cKeyBUFFTailPoint = 0;
	}
	s_cKeyBUFFCounter ++;
}

/***********************************************************
*   函數(shù)說明:從鍵盤緩沖區(qū)中獲得一個(gè)按鍵掃描碼             *
*   輸出:    返回操作是否成功TRUE / FALSE                 *
*   輸入:    無                                           *
*   調(diào)用函數(shù):Add_Key_Code()                               *
* -------------------------------------------------------- *
*   [說    明]                                             *
*             將按鍵掃描碼放到專門的臨時(shí)緩沖變量中         *
***********************************************************/
unsigned char Get_Key_Code(void)
{
    g_cReturnKeyNum = KEY_NULL;
    g_cReturnLongPressKeyNum = KEY_NULL;
	
	#ifdef _USE_KEY_MANUL_REFRESH
	    Add_Key_Code();
	#endif
	
	if ((s_cKeyBUFFHeadPoint == s_cKeyBUFFTailPoint) && (s_cKeyBUFFCounter == NULL))
	{
	    return FALSE;
	}

    g_cReturnKeyNum = s_cKeyBUFF[s_cKeyBUFFHeadPoint][0];
	g_cReturnLongPressKeyNum = s_cKeyBUFF[s_cKeyBUFFHeadPoint][1];
			
	s_cKeyBUFFCounter--;
	s_cKeyBUFFHeadPoint++;
	if (s_cKeyBUFFHeadPoint == KEY_BUFF_SIZE)
	{
	    s_cKeyBUFFHeadPoint = 0;
	}
			
    return TRUE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品aⅴ在线视频| 麻豆精品久久久| 99久久精品免费| 国产精品嫩草影院av蜜臀| 懂色av一区二区三区蜜臀| 国产日韩精品久久久| 欧洲精品视频在线观看| 亚洲精品乱码久久久久| 欧美日韩国产乱码电影| 男人的j进女人的j一区| 久久久亚洲国产美女国产盗摄 | 视频在线在亚洲| 日韩一区二区三区免费看| 久久99精品国产.久久久久久| 日韩一级大片在线| 一区二区三区中文字幕电影 | 欧美一区二区在线视频| 首页亚洲欧美制服丝腿| 91美女精品福利| 亚洲电影一级片| 色婷婷精品大在线视频| 亚洲不卡av一区二区三区| gogo大胆日本视频一区| 国产精品久久福利| 欧洲另类一二三四区| 日韩**一区毛片| 久久天堂av综合合色蜜桃网| 国产精品18久久久久久久久久久久| 国产视频亚洲色图| 色视频欧美一区二区三区| 无吗不卡中文字幕| 26uuu成人网一区二区三区| 高清在线成人网| 亚洲综合激情网| 欧美一区二区三区思思人| 美脚の诱脚舐め脚责91| 久久久国产精华| 久久激情综合网| 亚洲精品视频免费看| 欧美一级高清片| 风间由美中文字幕在线看视频国产欧美| 中文字幕欧美日韩一区| 欧美性xxxxxxxx| 精品综合免费视频观看| 国产精品乱人伦| 在线91免费看| 成av人片一区二区| 日韩电影免费一区| 国产日本亚洲高清| 欧美日产国产精品| 成人免费看黄yyy456| 午夜伊人狠狠久久| 国产精品久久久久久久久免费樱桃| 在线视频国内自拍亚洲视频| 乱一区二区av| 亚洲午夜免费视频| 国产日韩在线不卡| 欧美高清精品3d| 懂色一区二区三区免费观看| 亚洲高清免费在线| 国产精品女同一区二区三区| 欧美唯美清纯偷拍| 成人午夜电影小说| 日韩国产欧美在线播放| 自拍偷拍国产亚洲| 久久综合久久鬼色中文字| 国产日韩欧美制服另类| 欧美日韩三级一区二区| 高清beeg欧美| 久久成人免费电影| 亚洲福利视频一区二区| 亚洲欧美一区二区在线观看| 日韩亚洲欧美成人一区| 91精彩视频在线| 9i在线看片成人免费| 国产乱国产乱300精品| 美女脱光内衣内裤视频久久影院| 亚洲精品乱码久久久久久日本蜜臀| 久久综合久久综合亚洲| 欧美成人vps| 欧美人狂配大交3d怪物一区| 色欧美片视频在线观看在线视频| 国产成人精品免费视频网站| 久久国产三级精品| 日本不卡的三区四区五区| 欧美国产97人人爽人人喊| 国产亚洲一区二区三区在线观看| 日韩一区二区免费电影| 欧美一区二区三区视频免费| 欧美群妇大交群中文字幕| 91福利国产精品| 91黄色激情网站| 日本高清视频一区二区| 91久久人澡人人添人人爽欧美| 成av人片一区二区| 99久久综合狠狠综合久久| 国产宾馆实践打屁股91| 国产精品99久| 成人激情免费网站| 成人的网站免费观看| www.66久久| 色综合久久久久综合体桃花网| 91在线视频播放地址| 色综合久久综合| 欧美性猛片xxxx免费看久爱| 一本久道中文字幕精品亚洲嫩| 99精品欧美一区| 欧美久久久一区| 日韩一卡二卡三卡四卡| 精品国产伦一区二区三区免费| 精品黑人一区二区三区久久| ww久久中文字幕| 国产精品美女久久久久久久网站| 国产精品国产三级国产三级人妇| 亚洲欧美韩国综合色| 一区二区三区在线不卡| 亚洲综合激情小说| 老汉av免费一区二区三区| 国产一区二区网址| jlzzjlzz亚洲女人18| 在线免费观看视频一区| 欧美一区二区大片| 久久精品一区二区三区av| 亚洲欧洲日韩av| 亚洲va韩国va欧美va| 蜜桃视频第一区免费观看| 成人亚洲一区二区一| 色菇凉天天综合网| 欧美一区二区三区公司| 国产视频一区二区在线| 亚洲专区一二三| 国精产品一区一区三区mba视频| 成人免费视频一区| 欧美日韩激情一区| 久久伊人中文字幕| 一区二区三区在线观看网站| 蜜桃视频在线观看一区| www.欧美色图| 欧美一区二区三区精品| 中文字幕在线不卡国产视频| 国产精一区二区三区| 欧美在线观看视频一区二区| 亚洲精品一区二区三区99| 国产精品国产三级国产aⅴ原创| 国产喷白浆一区二区三区| 视频精品一区二区| 狂野欧美性猛交blacked| 国产成人综合亚洲网站| 在线一区二区三区做爰视频网站| 色婷婷av一区二区三区软件| 91精品国产色综合久久ai换脸 | 国产精品一区一区三区| 欧美偷拍一区二区| 国产欧美一区二区在线观看| 午夜一区二区三区在线观看| 国产91综合网| 欧美一级高清大全免费观看| 亚洲欧美综合在线精品| 国产宾馆实践打屁股91| 日韩欧美一二区| 亚洲一卡二卡三卡四卡无卡久久 | 国产精品亚洲一区二区三区妖精 | 日本一区二区三区免费乱视频 | 欧美电视剧在线看免费| 亚洲一区二区高清| 国产成人精品免费网站| 久久久午夜精品| 久久精品国产成人一区二区三区 | 欧美国产1区2区| 久久99精品视频| 欧美精品第1页| 亚洲一区二区欧美| 一本一道综合狠狠老| 国产精品不卡在线| 粉嫩嫩av羞羞动漫久久久| 久久伊人蜜桃av一区二区| 久久黄色级2电影| 欧美va亚洲va| 久久se精品一区二区| 91精品国产入口| 日韩成人一区二区| 在线不卡免费av| 亚洲欧洲综合另类| 国内精品在线播放| 欧美精品一区二区蜜臀亚洲| 久久国产生活片100| 精品日产卡一卡二卡麻豆| 蜜桃精品视频在线| 26uuu久久综合| 国产成人免费视频网站高清观看视频 | 极品少妇xxxx精品少妇偷拍| 91精品国产一区二区三区| 免费在线观看一区| 日韩欧美中文字幕制服| 久久成人麻豆午夜电影| 久久综合色之久久综合| 国产成人精品综合在线观看| 欧美激情一区二区三区在线| aa级大片欧美| 亚洲综合一二区|