精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個按鍵的多次擊鍵組合應該如何判別詳細技巧程序概述

Wildesbeast ? 來源:未知 ? 作者:佚名 ? 2019-11-09 10:45 ? 次閱讀

有時在設計中,往往要用一個按鍵來輸入多種信息。如:單擊/雙擊/三擊、短擊/長擊、還有各種組合擊鍵方式。可以用以下程序來做。

如果按鍵閉合時間《500MS,判斷為一次短擊(0);

如果按鍵閉合時間》500MS,判斷為一次長擊(1);

兩次擊鍵時間間隔應《700MS,如果按鍵釋放后700MS內無鍵按下,則結束讀鍵。

讀鍵完畢返回一個鍵號值KEY_NUM。其意義如下:

KEY_NUM 意義

00000000 無鍵按下過

00000001 無意義

00000010 單次短擊

00000011 單次長擊

00000100 短擊 + 短擊

00000101 短擊 + 長擊

00000110 長擊 + 短擊

00000111 長擊 + 長擊

…… ……

10000000 7次短擊

11111111 7次長擊

上表中的KEY_NUM值的規律是,從左向右看,第一個“1”后面的每一位代表一次擊鍵;“0”代表短擊,“1”代表長擊。掌握該規律后,我們可將任何一個8位的二進制數“翻譯”成一種擊鍵組合。例如:01010101,代表的是:短+長+短+長+短+長。

該程序最多可識別7次連續擊鍵,共254種組合。但并非每個程序中用得上。在大多數程序中,能判斷雙擊即可以了,這時可將程序中的ZHBIT定義為2。同理,如果要判斷3次按鍵,將ZHBIT定義為3即可。

當ZHBIT=“1”時,程序僅能判斷一次擊鍵,包括2種組合(短擊/長擊);當ZHBIT=“2”時,程序還能判斷兩次擊鍵,包括6(2+4)種組合(短擊/長擊/(短+短)/(短+長)/(長+短)/(長+長));以次類推,當ZHBIT=“3”時,程序能判斷三次擊鍵,包括14(2+4+8)種組合。

ZHBIT 組合種類

1 2

2 2+4=6

3 2+4+8=14

4 2+4+8+16=30

5 2+4+8+16+32=62

6 2+4+8+16+32+64=126

7 2+4+8+16+32+64+128=254

下面這段程序摘自小匠的一個智能充電器程序(MCU是EM78P458),如下:

;********************************

;讀鍵子程序

;出口: KEY_NUM =鍵號值

;中間: KEY_DL =計數器

;說明:

/*

短擊:鍵按下時間《500MS

長擊:鍵按下時間》500MS

兩次按鍵間隔時間《700MS

鍵號定義:

KEY_NUM=“00000000”: 無鍵按下

KEY_NUM=“00000001”: 無意義

KEY_NUM=“00000010”: 單次短擊

KEY_NUM=“00000011”: 單次長擊

KEY_NUM=“00000100”: 短擊 + 短擊

KEY_NUM=“00000101”: 短擊 + 長擊

KEY_NUM=“00000110”: 長擊 + 短擊

KEY_NUM=“00000111”: 長擊 + 長擊

。..

。..

KEY_NUM=“11111110”: 長擊 + 長擊 + 長擊 + 長擊 + 長擊 + 長擊 + 短擊

KEY_NUM=“11111111”: 長擊 + 長擊 + 長擊 + 長擊 + 長擊 + 長擊 + 長擊

*/

ZHBIT EQU 2 ;按鍵組合位(選擇范圍1~7)

;********************************

READKEY:

CLR KEY_NUM ;清鍵號

JKOFF READKEYF ;鍵未按下跳

BS KEY_NUM,0 ;“1” -》 鍵號低位

;=================

READKEYA:

CLR KEY_DL ;清計數器

READKEYB:

CALL DL10MS

INC KEY_DL

MOV A,@50

SUB A,KEY_DL

JBC R3,C

JMP READKEYC ;計數器溢出跳

JKON READKEYB ;鍵未釋放跳

BC R3,C ;C=“0”

JMP READKEYD

;=================

READKEYC:

WDTC ;喂狗

JKON READKEYC ;鍵未釋放跳

BS R3,C ;C=“1”

READKEYD:

RLLC KEY_NUM ;鍵號左移一位,C -》 鍵號低位

JBC KEY_NUM,ZHBIT ;按鍵檢測未完成繼續

RET

;=================

CLR KEY_DL ;清計數器

READKEYE:

CALL DL10MS

INC KEY_DL

MOV A,@70

SUB A,KEY_DL

JBC R3,C

READKEYF:

RET ;計數器溢出返回

JKOFF READKEYE ;鍵未按下跳

JMP READKEYA ;再次檢測

;=================

;鍵閉合跳(宏)

;=================

JKON MACRO ADDRESS

JBS R5,KEY ;鍵斷開跳

FJMP ADDRESS ;鍵閉合跳

CALL DL10MS ;延時去抖動

JBS R5,KEY ;鍵斷開跳

FJMP ADDRESS ;鍵閉合跳

ENDM

;=================

;鍵斷開跳(宏)

;=================

JKOFF MACRO ADDRESS

JBC R5,KEY ;鍵閉合跳

FJMP ADDRESS ;鍵斷開跳

CALL DL10MS ;延時去抖動

JBC R5,KEY ;鍵閉合跳

FJMP ADDRESS ;鍵斷開跳

ENDM
責任編輯 LK

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 程序
    +關注

    關注

    116

    文章

    3777

    瀏覽量

    80855
  • 按鍵
    +關注

    關注

    4

    文章

    223

    瀏覽量

    57573
收藏 人收藏

    評論

    相關推薦

    按鍵學習 按鍵漫談+單個按鍵多次擊鍵的檢測方法

    非常好的按鍵學習資料,在此共享,為了照顧沒E幣的人,不浪費你們的E幣,我打包起來了。三文件:按鍵漫談.pdf+單個按鍵多次
    發表于 06-24 22:47

    單個按鍵多次擊鍵的檢測方法

    單個按鍵多次擊鍵的檢測方法
    發表于 08-19 23:33

    按鍵高級使用:短按、長按、連續、雙擊、組合鍵實現

    /zhang_en/beauty_key.git視頻地址:【開源的按鍵處理程序-可以實現短按、長按、雙擊、組合】 https://www
    發表于 10-24 21:35

    如何為單片機的按鍵鎖防止多次觸發?

    如何為單片機的按鍵鎖防止多次觸發
    發表于 10-30 08:21

    按鍵多次擊鍵組合判別技巧匯編程序

    由于在學習用DS1302來做LED時鐘時,發現開發板附的程序按鍵操作,很不靈活,后來在網上找到篇《
    發表于 06-08 15:00 ?2747次閱讀

    基于狀態機的單片機按鍵短按長按功能的實現

    本文主要介紹了基于狀態機的單片機按鍵短按長按功能的實現,按鍵擊鍵過程也是種狀態的切換,也可以看著是
    發表于 12-28 08:43 ?1.9w次閱讀
    基于狀態機的單片機<b class='flag-5'>按鍵</b>短按長按功能的實現

    PID程序算法的詳細資料概述免費下載

    本文檔的主要內容詳細介紹的是PID程序算法的詳細資料概述免費下載
    發表于 07-24 08:00 ?36次下載

    用兩IO口檢測5按鍵程序詳細資料免費下載

    本文檔的主要內容詳細介紹的是用兩IO口檢測5按鍵程序詳細資料免費下載。
    發表于 03-29 15:16 ?26次下載
    用兩<b class='flag-5'>個</b>IO口檢測5<b class='flag-5'>個</b><b class='flag-5'>按鍵</b>的<b class='flag-5'>程序</b><b class='flag-5'>詳細</b>資料免費下載

    如何為單片機的按鍵鎖防止多次觸發實例資料和程序免費下載

    儲存著兩樣信息,力度和鍵值。那么在我寫的程序的項目要求是這樣的,要求每個按鍵次只能觸發次,并且觸發的時候要發出不同的鍵碼,通過音頻解碼盒將該鍵碼值讀出來,比如第
    發表于 08-14 17:32 ?0次下載
    如何為單片機的<b class='flag-5'>按鍵</b>加<b class='flag-5'>一</b><b class='flag-5'>個</b>鎖防止<b class='flag-5'>多次</b>觸發實例資料和<b class='flag-5'>程序</b>免費下載

    應該如何學習STM32資料概述

    本文檔的主要內容詳細介紹的是教你應該如何學習STM32資料概述
    發表于 11-08 14:45 ?26次下載
    <b class='flag-5'>應該</b>如何學習STM32資料<b class='flag-5'>概述</b>

    單片機C程序設計的六實例詳細講解

    本文檔的主要內容詳細介紹的是單片機C程序設計的5實例詳細講解包括了:按鍵程序編寫的基礎,模塊化
    發表于 11-18 08:00 ?1次下載
    單片機C<b class='flag-5'>程序</b>設計的六<b class='flag-5'>個</b>實例<b class='flag-5'>詳細</b>講解

    STM32 獨立按鍵掃描功能大全-支持連擊、組合連擊、任意連擊

    STM32 獨立按鍵掃描功能大全-支持連擊、組合連擊、任意連擊本人剛學習STM32開發,最近看了硬漢的按鍵檢測程序,進行了架構的深度優化,所以跟大家分享
    發表于 12-04 20:36 ?58次下載
    STM32 獨立<b class='flag-5'>按鍵</b>掃描功能大全-支持連擊、<b class='flag-5'>組合</b>連擊、任意連擊

    RT-Thread大會:如何實現4按鍵的手勢組合

    我有基于電極的非觸摸程序,如何實現4按鍵的手勢組合?   通過4路波形判斷手勢   即
    的頭像 發表于 05-27 11:01 ?1123次閱讀
    RT-Thread大會:如何實現4<b class='flag-5'>個</b><b class='flag-5'>按鍵</b>的手勢<b class='flag-5'>組合</b>?

    stm32單片機如何實現按鍵切換兩程序

    ,非常實用。下面,我們將詳細介紹如何在STM32單片機上實現按鍵切換兩程序
    的頭像 發表于 09-14 14:22 ?5971次閱讀

    idea如何多次運行程序

    些實際的示例。 內容: 、使用循環結構 1.1 for循環 最常用的多次運行程序的方法之是使用循環結構。其中最常用的循環結構是for
    的頭像 發表于 12-06 14:59 ?1405次閱讀