欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機C語言函數指針的按鍵驅動程序源碼
[打印本頁]
作者:
dbdx880201
時間:
2018-5-10 13:33
標題:
單片機C語言函數指針的按鍵驅動程序源碼
給大家分享一個很有用的函數指針的按鍵驅動程序
0.png
(46 KB, 下載次數: 45)
下載附件
2018-5-10 16:49 上傳
單片機源程序如下:
/******************************************************************************
版權所有 (C), 2008-2018, 杭州信多達電器有限公司
******************************************************************************
文 件 名 : KeyDriver.c
版 本 號 : 初稿
生成日期 : 2018年4月10日
最近修改 :
功能描述 : 通用按鍵處理驅動模塊,統一產生按鍵信息用于應用層處理
函數列表 :
修改歷史 :
1.日 期 : 2018年4月10日
作 者 : 錢百靜
修改內容 : 創建文件
******************************************************************************/
/*----------------------------------------------*
* 包含頭文件 *
*----------------------------------------------*/
#include "KeyDriver.h"
/*----------------------------------------------*
* 外部變量說明 *
*----------------------------------------------*/
/*----------------------------------------------*
* 外部函數原型說明 *
*----------------------------------------------*/
/*----------------------------------------------*
* 內部函數原型說明 *
*----------------------------------------------*/
/*----------------------------------------------*
* 全局變量 *
*----------------------------------------------*/
/*----------------------------------------------*
* 模塊級變量 *
*----------------------------------------------*/
/*----------------------------------------------*
* 常量定義 *
*----------------------------------------------*/
/*----------------------------------------------*
* 宏定義 *
*----------------------------------------------*/
/*****************************************************************************
函 數 名: void f_KeyDriverTimer(KeyDriver const *pKeyDriver)
功能描述:
輸入參數: pKeyDriver:按鍵驅動指針
返 回 值:
注 意: 系統10ms時基調用
修改歷史:
1.日 期 : 2018年4月11日
作 者 : 錢百靜
修改內容 : 新生成函數
*****************************************************************************/
void f_KeyDriverDeal(KEY_DRIVER *pKeyDriver)
{
uchar i;
//系統10ms判斷
if (NULL == pKeyDriver->pHardDriver || NULL == pKeyDriver->dealCallback)
{
return;
}
//按鍵輸入獲取
pKeyDriver->pHardDriver->GetKeys(pKeyDriver);
switch (pKeyDriver->dealStep)
{
case KEY_DEAL_IDLE://按鍵空閑狀態
pKeyDriver->data.pressTm = 0;
pKeyDriver->data.name = KEY_DRIVER_NO_KEY;
//有按鍵按下
if (KEY_DRIVER_NO_KEY != pKeyDriver->data.newName)
{
pKeyDriver->dealStep = KEY_DEAL_PRESS;
pKeyDriver->data.state |= KEY_PRESSED;//產生按下信息
}
pKeyDriver->data.name = pKeyDriver->data.newName;
break;
case KEY_DEAL_PRESS://按鍵按下狀態
pKeyDriver->flag.bit.bHasKey = true;
if (pKeyDriver->data.pressTm < 0xffff)//后續用通用函數處理
{
pKeyDriver->data.pressTm ++;
}
if (pKeyDriver->flag.bit.bDealDone)//當前產生的按鍵信息已處理,直接等待釋放
{
pKeyDriver->dealStep = KEY_DEAL_WATE_RELEASE;
}
//自定義狀態產生
for (i = 0; ; i++)
{
if (SetTimeInf(i) == 0xff)
{
break;
}
//按鍵狀態只產生一次
if (pKeyDriver->data.pressTm == GetTime(i))
{
pKeyDriver->data.state |= SetTimeInf(i);
break;
}
}
break;
case KEY_DEAL_WATE_RELEASE://按鍵等待釋放狀態
//等待全部按鍵釋放,釋放時產生釋放狀態,按鍵已處理不產生釋放信息
if (KEY_DRIVER_NO_KEY == pKeyDriver->data.newName)
{
pKeyDriver->dealStep = KEY_DEAL_IDLE;
if (!pKeyDriver->flag.bit.bDealDone)
{
pKeyDriver->data.state |= KEY_RELEASE;
}
}
break;
default:
pKeyDriver->data.name = KEY_DRIVER_NO_KEY;
pKeyDriver->data.newName = KEY_DRIVER_NO_KEY;
pKeyDriver->dealStep = KEY_DEAL_IDLE;
break;
}
//按鍵處理函數
pKeyDriver->dealCallback(pKeyDriver);
//處理后數據清除
pKeyDriver->data.state = KEY_STATE_IDLE;
}
/*****************************************************************************
函 數 名: void f_KeyDriverInit( KeyDriver const *pKeyDriver,
KeyHardwareDriver const *pKeyDriverHardware,
KeyDriverCallback const pKeyDealFunc)
功能描述:
輸入參數: pKeyDriver:按鍵驅動指針;
pKeyDriverHardware:按鍵驅動硬件層指針;
pKeyDealFunc:按鍵處理回調函數
返 回 值:
注 意: 初始化注冊調用一次
修改歷史:
1.日 期 : 2018年4月11日
作 者 : 錢百靜
修改內容 : 新生成函數
*****************************************************************************/
void f_KeyDriverInit( KEY_DRIVER *pKeyDriver,
KEY_HARDWARE_DRIVER const *pKeyDriverHardware,
KeyDriverCallback const pKeyDealFunc)
{
//f_MemSet(pKeyDriver, 0, sizeof(KEY_DRIVER));
pKeyDriver->pHardDriver = pKeyDriverHardware;
pKeyDriver->dealCallback = pKeyDealFunc;
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
Src.rar
(5.89 KB, 下載次數: 36)
2018-5-10 13:32 上傳
點擊文件名下載附件
按鍵驅動程序源碼
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1