欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1550|回復: 1
打印 上一主題 下一主題
收起左側

為什么我完全照抄的這段單片機按鍵長按短按代碼會不能用呢?

[復制鏈接]
跳轉到指定樓層
樓主
ID:1112147 發表于 2024-3-17 21:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void KeyScan(void) //此函數放在定時中斷里每 1ms 掃描一次
{
static unsigned char Su8KeyLock1;
static unsigned int Su16KeyCnt1;
static unsigned char Su8KeyShortFlag=0; //按鍵“短按”觸發的標志
if(0!=KEY_INPUT1)//單個 K1 按鍵沒有按下,及時清零一些標志。
{
Su8KeyLock1=0; //按鍵解鎖
Su16KeyCnt1=0; //去抖動延時計數器清零,此行非常巧妙,是全場的亮點。
if(1==Su8KeyShortFlag) //松手的時候,如果“短按”標志有效就觸發一次“短按”
{
Su8KeyShortFlag=0;
//先清零“短按”標志避免一直觸發。
vGu8SingleKeySec=1;
//觸發 K1 的“短按”
}
}
else if(0==Su8KeyLock1)//單個按鍵 K1 被按下
{
Su16KeyCnt1++; //累加定時中斷次數
if(Su16KeyCnt1>=KEY_SHORT_TIME) //“短按”兼“濾波”的“穩定時間”KEY_SHORT_TIME
{
//注意,這里不能“自鎖”。后面“長按”觸發的時候才“自鎖”。
Su8KeyShortFlag=1;
//K1 的“短按”標志有效,待松手時觸發。
}if(Su16KeyCnt1>=KEY_LONG_TIME) //“長按”兼“濾波”的“穩定時間”KEY_LONG_TIME
{
Su8KeyLock1=1;
//此時“長按”觸發才“自鎖”
Su8KeyShortFlag=0; //既然此時“長按”有效,那么就要廢除潛在的“短按”。
vGu8SingleKeySec=2; //觸發 K1 的“長按”
}
}
}
不知道為什么,按鍵完全沒用啊,有沒有好用的按鍵長按短按程序推薦一下
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2024-3-18 10:01 | 只看該作者
這段代碼本身沒有什么問題,關鍵是要在特定環境中運行。第一行明確注釋:此函數放在定時中斷里每 1ms 掃描一次。
還有一個關鍵點是變量Su8KeyShortFlag的使用。Su8KeyShortFlag的初值=0,短按值=1,長按值=2。當按鍵服務函數響
應了Su8KeyShortFlag后必須清0。例如:
//按鍵服務函數
void key_service()
{
        if(Su8KeyShortFlag==1)
        {
                //......執行任務1
                Su8KeyShortFlag=0;
        }
        if(Su8KeyShortFlag==2)
        {
                //......執行任務2
                Su8KeyShortFlag=0;
        }
}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表