專利名稱:一種應(yīng)用于動態(tài)令牌的按鍵處理方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機(jī)領(lǐng)域,具體涉及一種應(yīng)用于動態(tài)令牌的按鍵處理方法。
背景技術(shù):
伴隨著動態(tài)令牌的廣泛使用,動態(tài)令牌的功能向多元化發(fā)展,除了原有的基本功能之外,還增加了許多新的功能模塊。要想實現(xiàn)這些功能,就需要在動態(tài)令牌面板上安裝定義更多的按鍵進(jìn)行操作使用,這對動態(tài)令牌的功能設(shè)計和外觀設(shè)計提出了更高的要求。外觀小巧攜帶方便是動態(tài)令牌設(shè)備的一大優(yōu)勢,按鍵繁多的控制面板不便于用戶使用,因此迫切需要一種新型的按鍵處理方法,以實現(xiàn)一鍵多用的目的,也可使得動態(tài)令牌的面板設(shè)計更加簡單美觀,更方便用戶使用。
發(fā)明內(nèi)容
為解決上述技術(shù)問題,本發(fā)明提出了一種應(yīng)用于動態(tài)令牌的按鍵處理方法。本發(fā)明采取的技術(shù)方案是:一種應(yīng)用于動態(tài)令牌的按鍵處理方法,當(dāng)所述動態(tài)令牌檢測到按鍵喚醒標(biāo)志被置位后包括:步驟S1:掃描按鍵,獲取鍵值;判斷鍵值是否為空,是則執(zhí)行步驟S4 ;否則檢測按鍵按下到按鍵松開的時間是否達(dá)到預(yù)設(shè)時間,是則執(zhí)行步驟S2,否則根據(jù)鍵值識別按鍵后執(zhí)行步驟S3 ; 步驟S2:根據(jù)鍵值設(shè)置按鍵,若鍵值為第一數(shù)值則將按鍵設(shè)置為左移鍵,若鍵值為第二數(shù)值則將按鍵設(shè)置為右移鍵,若鍵值為第三數(shù)值則將按鍵設(shè)置為小數(shù)點(diǎn)鍵,若鍵值為第四數(shù)值則將按鍵設(shè)置為長刪除鍵,若鍵值為第五數(shù)值則將按鍵設(shè)置為電源鍵;然后執(zhí)行步驟S3 ;步驟S3:根據(jù)按鍵類型和系統(tǒng)狀態(tài)執(zhí)行相應(yīng)響應(yīng)操作;步驟S4:將所述按鍵喚醒標(biāo)志復(fù)位。上述步驟S3所述根據(jù)按鍵類型和系統(tǒng)狀態(tài)執(zhí)行相應(yīng)響應(yīng)操作包括:當(dāng)按鍵為確認(rèn)鍵或刪除鍵或電源鍵,且系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),則動態(tài)令牌開機(jī),顯示開機(jī)界面;當(dāng)按鍵為確認(rèn)鍵或刪除鍵且系統(tǒng)狀態(tài)為等待狀態(tài),則清除顯示屏上顯示的口令,置系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài);當(dāng)按鍵為長刪除鍵且系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),則刪除顯示屏上顯示的所有數(shù)據(jù);當(dāng)按鍵為左移或右移鍵且系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),則將顯示屏顯示數(shù)據(jù)左移或右移八位;當(dāng)按鍵為小數(shù)點(diǎn)鍵且系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),則將小數(shù)點(diǎn)顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位;當(dāng)按鍵為電源鍵且系統(tǒng)狀態(tài)為非關(guān)機(jī)狀態(tài),則動態(tài)令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài);所述非關(guān)機(jī)狀態(tài)包括等待狀態(tài)、輸入挑戰(zhàn)碼狀態(tài)、輸入激活碼狀態(tài)、設(shè)定密碼狀態(tài)、檢查密碼狀態(tài)、一級鎖定狀態(tài)、二級鎖定狀態(tài)。上述步驟S3所述根據(jù)按鍵類型和系統(tǒng)狀態(tài)執(zhí)行相應(yīng)響應(yīng)操作具體為:步驟S3:判斷按鍵類型,若為刪除鍵則執(zhí)行步驟S3-1,若為確認(rèn)鍵則執(zhí)行步驟S3-2,若為數(shù)字鍵則執(zhí)行步驟S3-3,若為左移或右移鍵則執(zhí)行步驟S3-4,若為長刪除鍵則執(zhí)行步驟S3-5,若為小數(shù)點(diǎn)鍵則執(zhí)行步驟S3-6,若為電源鍵則執(zhí)行步驟S3-7 ;步驟S3-1:判斷系統(tǒng)狀態(tài),當(dāng)系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),則動態(tài)令牌開機(jī),顯示開機(jī)界面,執(zhí)行步驟S4 ;當(dāng)系統(tǒng)狀態(tài)為等待狀態(tài),則清除顯示屏上顯示的口令,將系統(tǒng)狀態(tài)置為輸入挑戰(zhàn)碼狀態(tài),執(zhí)行步驟S4;當(dāng)系統(tǒng)狀態(tài)為輸入激活碼、設(shè)定密碼、檢查密碼、一級鎖定、二級鎖定、輸入挑戰(zhàn)碼中的任一狀態(tài),則刪除顯示屏最右邊的一位數(shù)據(jù),原有顯示數(shù)據(jù)右移一位,執(zhí)行步驟S4 ;當(dāng)系統(tǒng)狀態(tài)為其他狀態(tài)則直接執(zhí)行步驟S4 ;步驟S3-2:判斷系統(tǒng)狀態(tài),當(dāng)系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),則動態(tài)令牌開機(jī),顯示開機(jī)界面,執(zhí)行步驟S4 ;當(dāng)系統(tǒng)狀態(tài)為等待狀態(tài),則清除顯示屏上顯示的口令,將系統(tǒng)狀態(tài)置為輸入挑戰(zhàn)碼狀態(tài),執(zhí)行步驟S4;當(dāng)系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),則產(chǎn)生動態(tài)口令,在顯示屏上顯示口令,將系統(tǒng)狀態(tài)置為等待狀態(tài),執(zhí)行步驟S4 ;當(dāng)系統(tǒng)狀態(tài)為輸入激活碼、設(shè)定密碼、檢查密碼、一級鎖定、二級鎖定中的任一狀態(tài),則執(zhí)行相應(yīng)狀態(tài)下的確認(rèn)操作后執(zhí)行步驟S4 ;當(dāng)系統(tǒng)狀態(tài)為其他狀態(tài)則直接執(zhí)行步驟S4 ; 步驟S3-3:判斷系統(tǒng)狀態(tài)是否為輸入激活碼、設(shè)定密碼、檢查密碼、一級鎖定、二級鎖定、輸入挑戰(zhàn)碼中的任一狀態(tài),是則將數(shù)字鍵的值顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位,然后執(zhí)行步驟S4 ;否則直接執(zhí)行步驟S4 ;步驟S3-4:判斷系統(tǒng)狀態(tài)是否為輸入激活碼狀態(tài),是則將顯示屏上顯示的數(shù)據(jù)左移或右移八位,然后執(zhí)行步驟S4 ;否則直接執(zhí)行步驟S4 ;步驟S3-5:判斷系統(tǒng)狀態(tài)是否為輸入激活碼狀態(tài),是則刪除顯示屏上顯示的所有數(shù)據(jù),然后執(zhí)行步驟S4 ;否則直接執(zhí)行步驟S4 ;步驟S3-6:判斷系統(tǒng)狀態(tài)是否為輸入激活碼狀態(tài),是則將小數(shù)點(diǎn)顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位,然后執(zhí)行步驟S4 ;否則直接執(zhí)行步驟S4 ;步驟S3-7:判斷系統(tǒng)狀態(tài)是否為開機(jī)狀態(tài),是則動態(tài)令牌開機(jī),顯示開機(jī)界面,然后執(zhí)行步驟S4 ;否則動態(tài)令牌關(guān)機(jī),關(guān)閉顯示屏,將系統(tǒng)狀態(tài)置為關(guān)機(jī)狀態(tài),然后執(zhí)行步驟S4。上述步驟S3所述根據(jù)按鍵類型和系統(tǒng)狀態(tài)執(zhí)行相應(yīng)響應(yīng)操作具體為:步驟S3:判斷系統(tǒng)狀態(tài),當(dāng)系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài)執(zhí)行步驟S3-1,當(dāng)系統(tǒng)狀態(tài)為等待狀態(tài)執(zhí)行步驟S3-2,當(dāng)系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài)執(zhí)行步驟S3-3,當(dāng)系統(tǒng)狀態(tài)為輸入激活碼、設(shè)定密碼、檢查密碼、一級鎖定、二級鎖定中的任一狀態(tài)執(zhí)行步驟S3-4,當(dāng)系統(tǒng)狀態(tài)為其他狀態(tài)直接執(zhí)行步驟S3-5 ;步驟S3-1:判斷按鍵類型,若為電源鍵或刪除鍵或確認(rèn)鍵,則動態(tài)令牌開機(jī),顯示開機(jī)界面,執(zhí)行步驟S4 ;若為其他鍵,則直接執(zhí)行步驟S4 ;步驟S3-2:判斷按鍵類型,若為刪除鍵或確認(rèn)鍵,則清除顯示屏上顯示的口令,置系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),執(zhí)行步驟S4 ;若為電源鍵,則動態(tài)令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),執(zhí)行步驟S4 ;若為其他鍵,則直接執(zhí)行步驟S4 ;步驟S3-3:判斷按鍵類型,若為數(shù)字鍵或小數(shù)點(diǎn)鍵,將數(shù)字鍵的值或小數(shù)點(diǎn)顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位,執(zhí)行步驟S4 ;若為左移或右移鍵,顯示屏上顯示數(shù)據(jù)左移或右移八位,執(zhí)行步驟S4 ;若為刪除鍵,刪除顯示屏最右邊數(shù)據(jù)位,原有顯示數(shù)據(jù)右移一位,執(zhí)行步驟S4 ;若為長刪除鍵,刪除顯示屏上顯示的所有數(shù)據(jù),執(zhí)行步驟S4 ;若為確認(rèn)鍵,產(chǎn)生動態(tài)口令,在顯示屏上顯示動態(tài)口令,將系統(tǒng)狀態(tài)置為等待狀態(tài),執(zhí)行步驟S4 ;若為電源鍵,則動態(tài)令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),執(zhí)行步驟S4 ;若為其他鍵,則直接執(zhí)行步驟S4;步驟S3-4:判斷按鍵類型,若為數(shù)字鍵,將數(shù)字鍵的值顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位,執(zhí)行步驟S4 ;若為刪除鍵,刪除顯示屏最右邊一位數(shù)據(jù),原有顯示數(shù)據(jù)右移一位,執(zhí)行步驟S4 ;若為確認(rèn)鍵則執(zhí)行相應(yīng)狀態(tài)下的確認(rèn)操作,執(zhí)行步驟S4 ;若為電源鍵,則動態(tài)令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),執(zhí)行步驟S4 ;若為其他鍵,則直接執(zhí)行步驟S4。所述方法還包括:所述動態(tài)令牌檢測按鍵保護(hù)標(biāo)志是否被置位,是則執(zhí)行步驟A2,否則執(zhí)行步驟Al ;步驟Al:將按鍵輸出IO 口輸出低電平,開啟按鍵中斷;步驟A2:所述動態(tài)令牌進(jìn)入低速時鐘停止模式或休眠模式,等待中斷;當(dāng)檢測到RTC中斷時將RTC 喚醒標(biāo)志置位;當(dāng)檢測到PO中斷時,根據(jù)中斷標(biāo)志寄存器中的數(shù)據(jù)將按鍵喚醒標(biāo)志或通信喚醒標(biāo)志置位,然后清所述中斷標(biāo)志寄存器;步驟A3:所述動態(tài)令牌進(jìn)入高速時鐘模式,檢測是否有按鍵喚醒標(biāo)志被置位,是則執(zhí)行相應(yīng)處理后返回繼續(xù)檢測所述按鍵保護(hù)標(biāo)志是否被置位,否則直接返回繼續(xù)檢測所述按鍵保護(hù)標(biāo)志是否被置位。所述根據(jù)中斷標(biāo)志寄存器中的數(shù)據(jù)將按鍵喚醒標(biāo)志或通信喚醒標(biāo)志置位具體為:判斷所述中斷標(biāo)志寄存器的最高位是否為1,是則將所述通信喚醒標(biāo)志置位,否則將所述按鍵喚醒標(biāo)志置位。所述步驟SI中當(dāng)判斷鍵值不為空時還包括清零無按鍵計數(shù)器,清零按鍵按下計數(shù)器;當(dāng)所述動態(tài)令牌檢測到所述RTC喚醒標(biāo)志被置位后,所述執(zhí)行相應(yīng)處理包括:步驟B1:將所述無按鍵計數(shù)器加1,判斷系統(tǒng)狀態(tài)是否為等待狀態(tài),是則通過顯示屏顯示時間條,然后執(zhí)行步驟B3,否則執(zhí)行步驟B2 ;步驟B2:判斷所述無按鍵計數(shù)器是否大于60,是則清零所述無按鍵計數(shù)器,動態(tài)令牌關(guān)機(jī),否則執(zhí)行步驟B3;步驟B3:檢測按鍵,判斷是否有按鍵按下,是則執(zhí)行步驟B4,否則執(zhí)行步驟B5 ;步驟B4:所述按鍵按下計數(shù)器加I,清零按鍵松開計數(shù)器;判斷所述按鍵按下計數(shù)器是否大于10,是則動態(tài)令牌關(guān)機(jī),將所述按鍵保護(hù)標(biāo)志置位,清零所述按鍵按下計數(shù)器,然后執(zhí)行步驟B6 ;否則直接執(zhí)行步驟B6 ;步驟B5:所述按鍵松開計數(shù)器加1,清零所述按鍵按下計數(shù)器;判斷按鍵松開計數(shù)器是否大于4,是則將所述按鍵保護(hù)標(biāo)志復(fù)位,清零所述按鍵松開計數(shù)器,然后執(zhí)行步驟B6,否則直接執(zhí)行步驟B6;步驟B6:所述動態(tài)令牌檢測按鍵保護(hù)標(biāo)志是否被置位,是則將按鍵輸出IO 口輸出高電平,關(guān)閉按鍵中斷,執(zhí)行步驟B7,否則直接執(zhí)行步驟B7 ;步驟B7:將所述RTC喚醒標(biāo)志復(fù)位。所述步驟SI中所述掃描按鍵,獲取鍵值具體為:步驟1-1:切換系統(tǒng)時鐘為低速時鐘停止模式,初始化掃描次數(shù)和長按鍵標(biāo)識;步驟1-2:掃描一次按鍵,如果有按鍵按下,記錄當(dāng)前掃描值為第一掃描值,執(zhí)行步驟1-3 ;如果無按鍵按下,返回鍵值為空;步驟1-3:繼續(xù)掃描按鍵,判斷按鍵是否松開,如果按鍵松開,則根據(jù)當(dāng)前掃描值計算得到鍵值,如果按鍵未松開,記錄當(dāng)前掃描值,所述掃描次數(shù)加1,并判斷當(dāng)前掃描值是否等于第一掃描值,是則執(zhí)行步驟1-4,否則返回鍵值為空;步驟1-4:判斷掃描次數(shù)是否達(dá)到220,是則將長按鍵標(biāo)識置位,并根據(jù)當(dāng)前掃描值計算得到鍵值,切換時鐘為高速時鐘模式;否則繼續(xù)執(zhí)行步驟1-3。上述步驟SI是通過檢測長按鍵標(biāo)識是否置位來檢測所述按鍵按下到按鍵松開的時間是否達(dá)到預(yù)設(shè)時間。所述掃描按鍵是指掃描由4個按鍵輸出IO為列和3個按鍵輸入IO為行組成矩陣鍵盤,無按鍵按下時所述按鍵輸出IO分別順序輸出低電平,所述按鍵輸入IO分別輸入高電平; 所述當(dāng)前掃描值包括掃描所述矩陣鍵盤得到的列數(shù)據(jù)和行IO位置,根據(jù)當(dāng)前掃描值計算得到鍵值的計算公式為:鍵值=(列數(shù)據(jù)&0x70) I (行IO位置&0x0F)。上述步驟SI所述根據(jù)鍵值識別按鍵具體為:若鍵值為第四數(shù)值則按鍵為刪除鍵,若鍵值為第五數(shù)值則按鍵為確認(rèn)鍵,若鍵值為第一數(shù)值則按鍵為數(shù)字鍵4,若鍵值為第二數(shù)值則按鍵為數(shù)字鍵6,若鍵值為第三數(shù)值則按鍵為數(shù)字鍵0,若鍵值為第六數(shù)值、第七數(shù)值、第八數(shù)值、第九數(shù)值、第十?dāng)?shù)值、第十一數(shù)值、第十二數(shù)值則按鍵分分別對應(yīng)為數(shù)字鍵1、數(shù)字鍵2、數(shù)字鍵3、數(shù)字鍵5、數(shù)字鍵7、數(shù)字鍵8和數(shù)字鍵9。本發(fā)明的有益效果是,采用本發(fā)明提出的按鍵處理方法的動態(tài)令牌,可以達(dá)到體積更小巧、使用和攜帶更方便的效果,更加符合用戶的使用需求。
圖1是本發(fā)明實施例1提供的動態(tài)令牌的工作流程圖;圖2是本發(fā)明實施例1提供的動態(tài)令牌的通信處理方法流程圖;圖3-1是本發(fā)明實施例2提供的動態(tài)令牌的按鍵處理方法流程圖;圖3-2是本發(fā)明實施例3提供的動態(tài)令牌的按鍵處理方法流程圖;圖4是本發(fā)明實施例1提供的動態(tài)令牌的RTC處理方法流程圖;圖5是實施例2步驟202和實施例3步驟202’的細(xì)化流程圖;圖6是實施例2步驟202-206和實施例3步驟202’ -206’的細(xì)化流程圖。
具體實施例方式下面將結(jié)合附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。實施例1如圖1所示,本實施例提供的動態(tài)令牌的工作流程圖,包括:步驟1:設(shè)備上電,初始化;具體地包括:初始化時鐘為高速時鐘模式,本實施例中初始化時鐘為高速500K時鐘;初始化系統(tǒng)狀態(tài),具體為初始化系統(tǒng)標(biāo)志位為默認(rèn)值0,所述系統(tǒng)標(biāo)志位用于標(biāo)識系統(tǒng)狀態(tài);初始化按鍵保護(hù)標(biāo)志位,具體為將按鍵保護(hù)標(biāo)志位設(shè)置為默認(rèn)值O ;初始化RTC開啟秒中斷、初始化LCD驅(qū)動、初始化按鍵端口、使能通信中斷、開啟中斷。其中,本實施例中所述設(shè)備是指動態(tài)令牌設(shè)備。步驟2:判斷按鍵保護(hù)標(biāo)志位是否置位,是則執(zhí)行步驟4,否則執(zhí)行步驟3 ;具體地,判斷按鍵保護(hù)標(biāo)志位是否為I,是則執(zhí)行步驟4,否則執(zhí)行步驟3。步驟3:將按鍵輸 出IO 口輸出低電平,開啟按鍵中斷,順序執(zhí)行步驟4 ;步驟4:設(shè)備進(jìn)入低速時鐘停止模式或休眠模式,等待中斷;具體地,當(dāng)系統(tǒng)狀態(tài)為關(guān)機(jī)且時鐘輸出標(biāo)志為O時,設(shè)備進(jìn)入休眠模式;否則設(shè)備關(guān)閉高速時鐘,進(jìn)入低速時鐘停止模式,具體地將時鐘切換到低速32K時鐘。步驟5:判斷是否有中斷喚醒,若是PO中斷則執(zhí)行步驟6,若是RTC中斷則執(zhí)行步驟10,否則等待中斷繼續(xù)執(zhí)行本步驟;步驟6:判斷中斷標(biāo)志寄存器的最高位是否為1,是則執(zhí)行步驟7,否則執(zhí)行步驟8 ;具體地,中斷標(biāo)志寄存器的空間優(yōu)選為I個字節(jié)。步驟7:將通信喚醒標(biāo)志置位,執(zhí)行步驟9 ;優(yōu)選地,將通信喚醒標(biāo)志置為I。步驟8:將按鍵喚醒標(biāo)志置位,順序執(zhí)行步驟9 ;優(yōu)選的,將按鍵喚醒標(biāo)志置為I。步驟9:清中斷標(biāo)志寄存器,然后執(zhí)行步驟11 ;步驟10:將RTC喚醒標(biāo)志置位,順序執(zhí)行步驟11 ;優(yōu)選地,將RTC喚醒標(biāo)志置為I。步驟11:設(shè)備進(jìn)入高速時鐘模式;具體地,設(shè)備將時鐘切換為高速500K時鐘。步驟12:判斷通信喚醒標(biāo)志是否置位,是則執(zhí)行步驟13,否則執(zhí)行步驟14 ;優(yōu)選地,判斷通信喚醒標(biāo)志是否為1,是則執(zhí)行步驟13,否則執(zhí)行步驟14。步驟13:進(jìn)入通信處理流程,通信處理流程結(jié)束后返回繼續(xù)執(zhí)行步驟14 ;具體地,設(shè)備進(jìn)入通信處理流程對接收到的指令數(shù)據(jù)進(jìn)行處理并返回處理結(jié)果數(shù)據(jù)。一般的,該通信處理流程為工裝時設(shè)備與上位機(jī)之間的通信處理流程。步驟14:判斷按鍵喚醒標(biāo)志是否置位,是則執(zhí)行步驟15,否則執(zhí)行步驟16 ;優(yōu)選地,判斷按鍵喚醒標(biāo)志是否為1,是則執(zhí)行步驟15,否則執(zhí)行步驟16。步驟15:進(jìn)入按鍵處理流程,按鍵處理流程結(jié)束后返回繼續(xù)執(zhí)行步驟16 ;
具體地,按鍵處理流程為本發(fā)明的重點(diǎn),通過所述按鍵處理流程來實現(xiàn)動態(tài)令牌的按鍵復(fù)用。步驟16:判斷RTC喚醒標(biāo)志是否置位,是則執(zhí)行步驟17,否則返回步驟2 ;優(yōu)選地,判斷RTC喚醒標(biāo)志是否為1,是則執(zhí)行步驟17,否則返回步驟2。步驟17:進(jìn)入RTC處理流程,RTC處理流程結(jié)束后返回步驟2。具體地,所述RTC處理流程實現(xiàn)了動態(tài)令牌的實時時鐘和按鍵保護(hù)。上述步驟13中所述通信處理流程如圖2所示,具體包括:步驟101:關(guān)閉通信中斷; 步驟102:判斷是否接收到喚醒信號,是則執(zhí)行步驟103,否則返回;步驟103:將通信IO 口設(shè)為輸入口,接收數(shù)據(jù);步驟104:對接收到的數(shù)據(jù)進(jìn)行處理;步驟105:將通信IO 口設(shè)為輸出口,發(fā)送處理結(jié)果數(shù)據(jù);步驟106:打開通信中斷;步驟107:清通信喚醒標(biāo)志,然后返回。圖2所示返回是指返回圖1的步驟14繼續(xù)執(zhí)行。當(dāng)設(shè)備檢測到按鍵喚醒標(biāo)志被置位后進(jìn)入的步驟15所述的按鍵處理流程,包括:步驟S1:掃描按鍵,獲取鍵值;判斷鍵值是否為空,是則執(zhí)行步驟S4 ;否則檢測按鍵按下到按鍵松開的時間是否達(dá)到預(yù)設(shè)時間,是則執(zhí)行步驟S2,否則根據(jù)鍵值識別按鍵后執(zhí)行步驟S3 ;步驟S2:根據(jù)鍵值設(shè)置按鍵,若鍵值為第一數(shù)值則將按鍵設(shè)置為左移鍵,若鍵值為第二數(shù)值則將按鍵設(shè)置為右移鍵,若鍵值為第三數(shù)值則將按鍵設(shè)置為小數(shù)點(diǎn)鍵,若鍵值為第四數(shù)值則將按鍵設(shè)置為長刪除鍵,若鍵值為第五數(shù)值則將按鍵設(shè)置為電源鍵;然后執(zhí)行步驟S3 ;步驟S3:根據(jù)按鍵類型和系統(tǒng)狀態(tài)執(zhí)行相應(yīng)響應(yīng)操作;所述根據(jù)按鍵類型和系統(tǒng)狀態(tài)執(zhí)行相應(yīng)響應(yīng)操作包括:當(dāng)按鍵為確認(rèn)鍵或刪除鍵或電源鍵,且系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),則動態(tài)令牌開機(jī),顯示開機(jī)界面;當(dāng)按鍵為確認(rèn)鍵或刪除鍵,且系統(tǒng)狀態(tài)為等待狀態(tài),則清除顯示屏顯示的口令,置系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài);當(dāng)按鍵為長刪除鍵且系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),則刪除顯示屏顯示的所有數(shù)據(jù);當(dāng)按鍵為左移或右移鍵且系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),則顯示屏顯示數(shù)據(jù)左移或右移八位;當(dāng)按鍵為小數(shù)點(diǎn)鍵且系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),則小數(shù)點(diǎn)顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位;當(dāng)按鍵為電源鍵且系統(tǒng)狀態(tài)為非關(guān)機(jī)狀態(tài),則動態(tài)令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài);所述非關(guān)機(jī)狀態(tài)包括等待狀態(tài)、輸入挑戰(zhàn)碼狀態(tài)、輸入激活碼狀態(tài)、設(shè)定密碼狀態(tài)、檢查密碼狀態(tài)、一級鎖定狀態(tài)、二級鎖定狀態(tài)。
步驟S4:將所述按鍵喚醒標(biāo)志復(fù)位;圖1所示流程的步驟17所述RTC處理流程如圖4所示,具體包括:步驟301:無按鍵計數(shù)器加I ;步驟302:判斷系統(tǒng)狀態(tài)是否為等待狀態(tài),是則執(zhí)行步驟303,否則執(zhí)行步驟304 ;步驟303:通過液晶屏顯示時間條,然后執(zhí)行步驟306 ;步驟304:判斷無按鍵計數(shù)器是否大于60,是則執(zhí)行步驟305,否則執(zhí)行步驟306 ;步驟305:清零無按鍵計數(shù)器,設(shè)備關(guān)機(jī),順序執(zhí)行步驟306 ;步驟306:檢測按鍵,判斷是否有按鍵按下,是則執(zhí)行步驟307,否則執(zhí)行步驟310 ;步驟307:按鍵按下計數(shù)器加I,清零按鍵松開計數(shù)器;步驟308:判斷按鍵按下計數(shù)器是否大于10,是則執(zhí)行步驟309,否則執(zhí)行步驟313 ; 步驟309:設(shè)備關(guān)機(jī),置位按鍵保護(hù)標(biāo)志,清零按鍵按下計數(shù)器,然后執(zhí)行步驟313 ;步驟310:按鍵松開計數(shù)器加1,清零按鍵按下計數(shù)器;步驟311:判斷按鍵松開計數(shù)器是否大于4,是則執(zhí)行步驟312,否則執(zhí)行步驟313 ;步驟312:清按鍵保護(hù)標(biāo)志,清零按鍵松開計數(shù)器,順序執(zhí)行步驟313 ;步驟313:判斷按鍵保護(hù)標(biāo)志是否置位,是則執(zhí)行步驟314,否則執(zhí)行步驟315 ;步驟314:將按鍵輸出IO 口輸出高電平,關(guān)閉按鍵中斷,順序執(zhí)行步驟315 ;步驟315:清RTC喚醒標(biāo)志,返回圖1所示步驟2。實施例2在實施例1的基礎(chǔ)上,其圖1的步驟15所述按鍵處理流程的實現(xiàn)方式如圖3-1所示,具體包括:步驟201:關(guān)閉按鍵中斷;步驟202:掃描按鍵,獲取鍵值;具體地,4個按鍵輸出IO和3個按鍵輸入IO組成矩陣鍵盤,無按鍵時按鍵輸出IO分別順序輸出低電平,按鍵輸入IO分別輸入高電平;掃描按鍵,獲取鍵值具體為:判斷按鍵輸入IO是否有低電平,如果沒有,則返回鍵值空,如果有低電平,根據(jù)當(dāng)前按鍵輸出IO和按鍵輸入IO的位置判斷得出鍵值,并返回相應(yīng)鍵值。步驟203:判斷鍵值是否為空,是則執(zhí)行步驟208,否則執(zhí)行步驟204 ;步驟204:檢測按鍵按下到按鍵松開的時間是否達(dá)到預(yù)設(shè)時間,是則執(zhí)行步驟205,否則執(zhí)行步驟206 ;本實施例中具體地,從按鍵按下到按鍵松開記錄得到一個時間值,判斷該時間值是否達(dá)到1.5秒,是則執(zhí)行步驟205,否則執(zhí)行步驟206。步驟205:根據(jù)鍵值設(shè)置按鍵;然后執(zhí)行步驟207 ;具體包括:當(dāng)鍵值等于數(shù)字鍵4的鍵值時,將按鍵設(shè)置為左移鍵;當(dāng)鍵值等于刪除鍵的鍵值時,將按鍵設(shè)置為長刪除鍵;
當(dāng)鍵值等于數(shù)字鍵O的鍵值時,將按鍵設(shè)置為小數(shù)點(diǎn)鍵;當(dāng)鍵值等于數(shù)字鍵6的鍵值時,將按鍵設(shè)置為右移鍵;步驟206:根據(jù)鍵值識別按鍵;然后執(zhí)行步驟207 ;具體包括:若鍵值為第四數(shù)值則按鍵為刪除鍵,若鍵值為第五數(shù)值則按鍵為確認(rèn)鍵,若鍵值為第一數(shù)值則按鍵為數(shù)字鍵4,若鍵值為第二數(shù)值則按鍵為數(shù)字鍵6,若鍵值為第三數(shù)值則按鍵為數(shù)字鍵0,若鍵值為第六數(shù)值、第七數(shù)值、第八數(shù)值、第九數(shù)值、第十?dāng)?shù)值、第十一數(shù)值、第十二數(shù)值則按鍵分分別對應(yīng)為數(shù)字鍵1、數(shù)字鍵2、數(shù)字鍵3、數(shù)字鍵5、數(shù)字鍵7、數(shù)字鍵8和數(shù)字鍵9。步驟207:判斷系統(tǒng)狀態(tài),并根據(jù)系統(tǒng)狀態(tài)和按鍵類型執(zhí)行相應(yīng)操作后執(zhí)行步驟208 ;具體地,動態(tài)令牌根據(jù)系統(tǒng)狀態(tài)和按鍵類型執(zhí)行相應(yīng)操作包括:當(dāng)系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài)且按鍵為確認(rèn)鍵或刪除鍵或電源鍵時,令牌開機(jī),顯示開機(jī)界面后執(zhí)行步驟208,否則直接執(zhí)行步驟208 ;當(dāng)系統(tǒng)狀態(tài)為輸入激活碼、設(shè)定密碼、檢查密碼、一級鎖定、二級鎖定中任一種狀態(tài)時,判斷按鍵類型:
當(dāng)按鍵為數(shù)字鍵時,將數(shù)字鍵的值顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位;其中,所述數(shù)字鍵包括數(shù)字鍵0-9。當(dāng)按鍵為刪除鍵時,刪除顯示屏最右邊一位的數(shù)據(jù),原有顯示數(shù)據(jù)右移一位;當(dāng)按鍵為確認(rèn)鍵時,執(zhí)行相應(yīng)狀態(tài)下的確認(rèn)操作;當(dāng)按鍵為電源鍵時,令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài);當(dāng)按鍵為其他時,直接跳轉(zhuǎn)執(zhí)行步驟208。當(dāng)系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài)時,判斷按鍵類型:當(dāng)按鍵為數(shù)字鍵或小數(shù)點(diǎn)鍵時,將數(shù)字鍵的值顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位;其中,所述數(shù)字鍵包括數(shù)字鍵0-9。當(dāng)按鍵為左移鍵時,顯示屏顯示數(shù)據(jù)左移八位;當(dāng)按鍵為右移鍵時,顯示屏顯示數(shù)據(jù)右移八位;當(dāng)按鍵為刪除鍵時,刪除顯示屏最右邊一位數(shù)據(jù),原有顯示數(shù)據(jù)右移一位;當(dāng)按鍵為長刪除鍵時,刪除顯示屏上顯示的所有數(shù)據(jù);當(dāng)按鍵為確認(rèn)鍵時,產(chǎn)生動態(tài)口令,顯示動態(tài)口令,置系統(tǒng)狀態(tài)為等待狀態(tài);當(dāng)按鍵為電源鍵時,令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài);當(dāng)按鍵為其他時,直接跳轉(zhuǎn)執(zhí)行步驟208。當(dāng)系統(tǒng)狀態(tài)為等待狀態(tài)時,判斷按鍵類型:當(dāng)按鍵為刪除鍵或確認(rèn)鍵時,清除顯示屏顯示的口令,置系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài);當(dāng)按鍵為電源鍵時,令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài);當(dāng)按鍵為其他時,直接跳轉(zhuǎn)執(zhí)行步驟208。當(dāng)系統(tǒng)狀態(tài)為其他狀態(tài)時,執(zhí)行步驟208。步驟208:清按鍵喚醒標(biāo)志,然后返回圖1所示步驟16。本實施例中圖3-1所示步驟202掃描按鍵,獲取鍵值的具體流程如圖5所示,包括:步驟3-1:切換系統(tǒng)時鐘為低速時鐘停止模式,初始化掃描次數(shù)和長按鍵標(biāo)識;步驟3-2:掃描一次按鍵,判斷是否有按鍵按下,是則執(zhí)行步驟3-3,否則鍵值為空,執(zhí)行步驟3-10 ;步驟3-3:記錄當(dāng)前掃描值為第一掃描值;步驟3-4:繼續(xù)掃描按鍵,判斷按鍵是否松開,是則執(zhí)行步驟3-9,否則執(zhí)行步驟3-5 ;步驟3-5:記錄當(dāng)前掃描值,掃描次數(shù)加I ;步驟3-6:判斷當(dāng)前掃描值是否等于第一掃描值,是則執(zhí)行步驟3-7,否則鍵值為空,執(zhí)行步驟3-10 ;步驟3-7:判斷掃描次數(shù)是否達(dá)到220,是則執(zhí)行步驟3_8,否則返回步驟3_4 ;步驟3-8:將長按鍵標(biāo)識置位,順序執(zhí)行步驟3-9 ;步驟3-9:根據(jù)當(dāng)前掃描值計算得到鍵值;本實施例中,所述當(dāng)前掃描值包括掃描所述矩陣鍵盤得到的列數(shù)據(jù)和行IO位置,根據(jù)當(dāng)前掃描值計算得到鍵值的計算公式為:鍵值=( COlInEffect&0X70) I(iEffect&OxOF),其中 ColInEffect 為列數(shù)據(jù),iEffect 為行 IO 位置。步驟3-10:切換系統(tǒng)時鐘為高速時鐘模式。本實施例中圖3-1所示步驟202-206可以具體為如下過程,如圖6所示:在進(jìn)行按鍵掃描時,首先切換系統(tǒng)時鐘到32K低速時鐘,定義相關(guān)變量并初始化:Longkey=O, ColInEffect=O, iEffect=0 ;讀取列IO狀&0x70,得到列數(shù)據(jù);判斷列數(shù)據(jù)是否等于三個預(yù)設(shè)值(0Χ30、0Χ50、0Χ60)之一,是則開始第I次掃描,否則返回鍵值為空,執(zhí)行步驟 2-12 ;第I次掃描開始:1-1:置循環(huán)變量i=0,行輸出變量RowOut=OxOl ;1-2:將行輸出變量按位取反賦值給行IO輸出,即行IO輸出= RowOut ;1-3:讀取列IO狀態(tài)&0x70,得到列數(shù)據(jù),判斷列數(shù)據(jù)是否等于預(yù)設(shè)值,是則1_4,否則 1-5 ;本實施例的預(yù)設(shè)值為0x30或0x50或0x60 ;1-4:記錄列數(shù)據(jù)為ColInO,記錄i的值為i0 ;進(jìn)入第2_220次掃描;1-5 =RowOut左移一位,i加1,判斷i < 4是否成立,是則返回1_2,否則返回鍵值為空,執(zhí)行步驟2-12。第2-220次掃描開始:2-1:置循環(huán)變量j=0 ;2-2:置按鍵個數(shù)變量KeyNum=O,按下標(biāo)志f Iagdown=O ;循環(huán)變量i=0,行輸出變量RowOut=OxOl ;2-3:將行輸出變量按位取反賦值給行10輸出,即行10輸出= RowOut ;2-4:讀取列10狀態(tài)&0x70,得到列數(shù)據(jù),判斷列數(shù)據(jù)是否不等于0x70,是則置按下標(biāo)志f Iagdown=I后繼續(xù)下一步,否則直接進(jìn)入下一步;2-5:判斷列數(shù)據(jù)是否 等于預(yù)設(shè)值,是則記錄列數(shù)據(jù)為ColInEffect,記錄i的值為iEffect, KeyNum加I后繼續(xù)下一步,否則直接進(jìn)入下一步;本實施例的預(yù)設(shè)值為0x30或0x50或0x60 ;2-6 =RowOut左移一位,i加1,判斷i < 4是否成立,是則返回2_3,否則進(jìn)入下一
;2-7:判斷是否滿足 ColInEffect ! = ColInO 或 iEffect ! = iO,是則返回鍵值為空,執(zhí)行步驟2-12,否則繼續(xù)下一步;2-8:判斷KeyNum > I是否成立,是則返回鍵值為空,否則繼續(xù)下一步;2-9:判斷按下標(biāo)志flagdown=0是否成立,是則繼續(xù)下一步,否則j加1,判斷j< 220是否成立,是則返回2-2,否則繼續(xù)下一步;2-10:判斷j < 5是否成立,是則返回鍵值為空,否則判斷j=220是否成立,是則置長按鍵標(biāo)Longkey=I后計算鍵值keyvalue,否則直接計算鍵值keyvalue,計算公式為:keyvalue=( ColInEffect&0x70) I (iEffect&OxOF);2-11:清零無按鍵計數(shù)器,清零按鍵按下計數(shù)器;判斷長按鍵標(biāo)識是否為1,是則根據(jù)鍵值設(shè)置按鍵,執(zhí)行步驟2-12,否則根據(jù)鍵值識別按鍵,執(zhí)行步驟2-12 ;具體地,根據(jù)鍵值keyvalue識別按鍵包括:keyvalue=OxlO 表不數(shù)字鍵 I,keyvalue=Oxll 表不數(shù)字鍵 4,keyvalue=0xl2 表不數(shù)字鍵7, keyvalue=0xl3表示刪除鍵,keyvalue=0x43表示確認(rèn)鍵,keyvalue=0x21表示數(shù)字鍵 5, keyvalue=0x22 表不數(shù)字鍵 8, keyvalue=0x23 表不數(shù)字鍵 O, keyvalue=0x40 表不數(shù)字鍵 3, keyvalue=0x41 表不數(shù)字鍵 6, keyvalue=0x42 表不數(shù)字鍵 9, keyvalue=0x20 表示數(shù)字鍵2。具體地,根據(jù)鍵值keyvalue設(shè)置按鍵包括:keyvalue=Oxll時設(shè)置按鍵為左移鍵,keyvalue=0xl3時設(shè)置按鍵為長刪除鍵,keyvalue=0x23時設(shè)置按鍵為小數(shù)點(diǎn)鍵,keyvalue=0x41時設(shè)置按鍵為右移鍵,keyvalue=0x43時設(shè)置按鍵為電源鍵。2-12:切換系統(tǒng)時鐘到500K高速時鐘。進(jìn)一步的,在第一次讀取列數(shù)據(jù)時候還可以加入延時5毫秒的鍵盤防抖處理。實施例3在實施例1的基礎(chǔ)上,其圖1的步驟15所述按鍵處理流程的實現(xiàn)方式還可以是如圖3-2所示,具體包括:步驟201:關(guān)閉按鍵中斷;步驟202’:掃描按鍵,獲取鍵值;步驟203’:判斷鍵值是否為空,是則執(zhí)行步驟208’,否則執(zhí)行下一步;步驟204’:檢測按鍵按下到按鍵松開的時間是否達(dá)到預(yù)設(shè)時間,是則執(zhí)行步驟205’,否則執(zhí)行步驟206,;本實施例中具體地,從按鍵按下到按鍵松開記錄得到一個時間值,判斷該時間值是否達(dá)到1.5秒,是則執(zhí)行步驟205’,否則執(zhí)行步驟206’。步驟205’:根據(jù)鍵值設(shè)置按鍵,執(zhí)行步驟207’ ;所述根據(jù)鍵值設(shè)置按鍵具體包括:
當(dāng)鍵值等于數(shù)字鍵4的鍵值時,將按鍵設(shè)置為左移鍵;當(dāng)鍵值等于刪除鍵的鍵值時,將按鍵設(shè)置為長刪除鍵;當(dāng)鍵值等于數(shù)字鍵O的鍵值時,將按鍵設(shè)置為小數(shù)點(diǎn)鍵;當(dāng)鍵值等于數(shù)字鍵6的鍵值時,將按鍵設(shè)置為右移鍵;步驟206’:根據(jù)鍵值識別按鍵,執(zhí)行步驟207’ ;所述根據(jù)鍵值識別按鍵具體包括:若鍵值為第四數(shù)值則按鍵為刪除鍵,若鍵值為第五數(shù)值則按鍵為確認(rèn)鍵,若鍵值為第一數(shù)值則按鍵為數(shù)字鍵4,若鍵值為第二數(shù)值則按鍵為數(shù)字鍵6,若鍵值為第三數(shù)值則按鍵為數(shù)字鍵0,若鍵值為第六數(shù)值、第七數(shù)值、第八數(shù)值、第九數(shù)值、第十?dāng)?shù)值、第十一數(shù)值、第十二數(shù)值則按鍵分分別對應(yīng)為數(shù)字鍵1、數(shù)字鍵2、數(shù)字鍵3、數(shù)字鍵5、數(shù)字鍵7、數(shù)字鍵8和數(shù)字鍵9。步驟207’:判斷按鍵類型;當(dāng)按鍵為刪除鍵時,判斷系統(tǒng)狀態(tài):系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),則令牌開機(jī),顯示開機(jī)界面,執(zhí)行步驟208’ ;系統(tǒng)狀態(tài)為等待狀態(tài),則清除顯示屏上顯示的口令,置系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),執(zhí)行步驟208’ ;系統(tǒng)狀態(tài)為輸入激活碼、設(shè)定密碼、檢查密碼、一級鎖定、二級鎖定、輸入挑戰(zhàn)碼中的其中之一,則刪除顯示屏最右邊一位的數(shù)據(jù),原有顯示數(shù)據(jù)右移一位,執(zhí)行步驟208’ ;系統(tǒng)狀態(tài)為其他狀態(tài)時候,直接執(zhí)行步驟208’。當(dāng)按鍵為確認(rèn)鍵時,判斷系統(tǒng)狀態(tài):系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),則令牌開機(jī),顯示開機(jī)界面,執(zhí)行步驟208’ ;系統(tǒng)狀態(tài)為等待狀態(tài),則清除顯示屏上顯示的口令,置系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),執(zhí)行步驟208’ ;系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),則產(chǎn)生動態(tài)口令,顯示動態(tài)口令,置系統(tǒng)狀態(tài)為等待狀態(tài),執(zhí)行步驟208’ ;系統(tǒng)狀態(tài)為輸入激活碼、設(shè)定密碼、檢查密碼、一級鎖定、二級鎖定中的其中之一,則執(zhí)行相應(yīng)狀態(tài)下的確認(rèn)操作,執(zhí)行步驟208’ ;系統(tǒng)狀態(tài)為其他狀態(tài)時候,直接執(zhí)行步驟208’。當(dāng)按鍵為數(shù)字鍵0-9時,判斷系統(tǒng)狀態(tài)是否等于輸入激活碼、設(shè)定密碼、檢查密碼、一級鎖定、二級鎖定、輸入挑戰(zhàn)碼狀態(tài)中的其中之一,是則將數(shù)字鍵的值顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位,然后執(zhí)行步驟208’ ;否則直接執(zhí)行步驟208’ ;當(dāng)按鍵為左移或右移鍵時,判斷系統(tǒng)狀態(tài)是否等于輸入挑戰(zhàn)碼狀態(tài),是則顯示屏顯示數(shù)據(jù)左移或右移八位,然后執(zhí)行步驟208’ ;否則直接執(zhí)行步驟208’ ;當(dāng)按鍵為長刪除鍵時,判斷系統(tǒng)狀態(tài)是否等于輸入挑戰(zhàn)碼狀態(tài),是則刪除顯示屏顯示的所有數(shù)據(jù),然后執(zhí)行步驟208’ ;否則直接執(zhí)行步驟208’ ;當(dāng)按鍵為小數(shù)點(diǎn)鍵時,判斷系統(tǒng)狀態(tài)是否等于輸入挑戰(zhàn)碼狀態(tài),是則將小數(shù)點(diǎn)顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位,然后執(zhí)行步驟208’ ;否則直接執(zhí)行步驟208’ ;當(dāng)按鍵為電源鍵時,判斷系統(tǒng)狀態(tài)是否等于關(guān)機(jī),是則令牌開機(jī),顯示開機(jī)界面,然后執(zhí)行步驟208 ’ ;否則令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng) 狀態(tài)為關(guān)機(jī)狀態(tài),然后執(zhí)行步驟208,;
步驟208’:清按鍵喚醒標(biāo)志。然后返回步驟16。上述步驟202’中掃描按鍵,獲取鍵值的具體過程同實施例2中圖5所示相同。上述步驟202’ -206’的具體實現(xiàn)過程同實施例2中圖6所示相同。在此不再贅述。
以上所述,僅為本發(fā)明的具體實施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種應(yīng)用于動態(tài)令牌的按鍵處理方法,其特征在于,當(dāng)所述動態(tài)令牌檢測到按鍵喚醒標(biāo)志被置位后包括: 步驟S1:掃描按鍵,獲取鍵值;判斷鍵值是否為空,是則執(zhí)行步驟S4 ;否則檢測按鍵按下到按鍵松開的時間是否達(dá)到預(yù)設(shè)時間,是則執(zhí)行步驟S2,否則根據(jù)鍵值識別按鍵后執(zhí)行步驟S3 ; 步驟S2:根據(jù)鍵值設(shè)置按鍵,若鍵值為第一數(shù)值則將按鍵設(shè)置為左移鍵,若鍵值為第二數(shù)值則將按鍵設(shè)置為右移鍵,若鍵值為第三數(shù)值則將按鍵設(shè)置為小數(shù)點(diǎn)鍵,若鍵值為第四數(shù)值則將按鍵設(shè)置為長刪除鍵,若鍵值為第五數(shù)值則將按鍵設(shè)置為電源鍵;然后執(zhí)行步驟S3 ; 步驟S3:根據(jù)按鍵類型和系統(tǒng)狀態(tài)執(zhí)行相應(yīng)響應(yīng)操作; 步驟S4:將所述按鍵喚醒標(biāo)志復(fù)位。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟S3所述根據(jù)按鍵類型和系統(tǒng)狀態(tài)執(zhí)行相應(yīng)響應(yīng)操作包括: 當(dāng)按鍵為確認(rèn)鍵或刪除鍵或電源鍵,且系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),則動態(tài)令牌開機(jī),顯示開機(jī)界面; 當(dāng)按鍵為確認(rèn)鍵或刪除鍵且系統(tǒng)狀態(tài)為等待狀態(tài),則清除顯示屏上顯示的口令,置系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài); 當(dāng)按鍵為長刪除鍵且系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),則刪除顯示屏上顯示的所有數(shù)據(jù); 當(dāng)按鍵為左移或右移鍵且系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),則將顯示屏顯示數(shù)據(jù)左移或右移八位; 當(dāng)按鍵為小數(shù)點(diǎn)鍵且系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),則將小數(shù)點(diǎn)顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位; 當(dāng)按鍵為電源鍵且系統(tǒng)狀態(tài)為非關(guān)機(jī)狀態(tài),則動態(tài)令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài); 所述非關(guān)機(jī)狀態(tài)包括等待狀態(tài)、輸入挑戰(zhàn)碼狀態(tài)、輸入激活碼狀態(tài)、設(shè)定密碼狀態(tài)、檢查密碼狀態(tài)、一級鎖定狀態(tài)、二級鎖定狀態(tài)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟S3所述根據(jù)按鍵類型和系統(tǒng)狀態(tài)執(zhí)行相應(yīng)響應(yīng)操作具體為: 步驟S3:判斷按鍵類型,若為刪除鍵則執(zhí)行步驟S3-1,若為確認(rèn)鍵則執(zhí)行步驟S3-2,若為數(shù)字鍵則執(zhí)行步驟S3-3,若為左移或右移鍵則執(zhí)行步驟S3-4,若為長刪除鍵則執(zhí)行步驟S3-5,若為小數(shù)點(diǎn)鍵則執(zhí)行步驟S3-6,若為電源鍵則執(zhí)行步驟S3-7 ; 步驟S3-1:判斷系統(tǒng)狀態(tài),當(dāng)系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),則動態(tài)令牌開機(jī),顯示開機(jī)界面,執(zhí)行步驟S4 ;當(dāng)系統(tǒng)狀態(tài)為等待狀態(tài),則清除顯示屏上顯示的口令,將系統(tǒng)狀態(tài)置為輸入挑戰(zhàn)碼狀態(tài),執(zhí)行步驟S4 ;當(dāng)系統(tǒng)狀態(tài)為輸入激活碼、設(shè)定密碼、檢查密碼、一級鎖定、二級鎖定、輸入挑戰(zhàn)碼中的任一狀態(tài),則刪除顯示屏最右邊的一位數(shù)據(jù),原有顯示數(shù)據(jù)右移一位,執(zhí)行步驟S4 ;當(dāng)系統(tǒng)狀態(tài)為其他狀態(tài)則直接執(zhí)行步驟S4 ; 步驟S3-2:判斷系統(tǒng)狀態(tài),當(dāng)系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),則動態(tài)令牌開機(jī),顯示開機(jī)界面,執(zhí)行步驟S4;當(dāng)系統(tǒng)狀態(tài)為等待狀態(tài),則清除顯示屏上顯示的口令,將系統(tǒng)狀態(tài)置為輸入挑戰(zhàn)碼狀態(tài),執(zhí)行步驟S4;當(dāng)系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),則產(chǎn)生動態(tài)口令,在顯示屏上顯示口令,將系統(tǒng)狀態(tài)置為等待狀態(tài),執(zhí)行步驟S4;當(dāng)系統(tǒng)狀態(tài)為輸入激活碼、設(shè)定密碼、檢查密碼、一級鎖定、二級鎖定中的任一狀態(tài),則執(zhí)行相應(yīng)狀態(tài)下的確認(rèn)操作后執(zhí)行步驟S4 ;當(dāng)系統(tǒng)狀態(tài)為其他狀態(tài)則直接執(zhí)行步驟S4 ; 步驟S3-3:判斷系統(tǒng)狀態(tài)是否為輸入激活碼、設(shè)定密碼、檢查密碼、一級鎖定、二級鎖定、輸入挑戰(zhàn)碼中的任一狀態(tài),是則將數(shù)字鍵的值顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位,然后執(zhí)行步驟S4 ;否則直接執(zhí)行步驟S4 ; 步驟S3-4:判斷系統(tǒng)狀態(tài)是否為輸入激活碼狀態(tài),是則將顯示屏上顯示的數(shù)據(jù)左移或右移八位,然后執(zhí)行步驟S4 ;否則直接執(zhí)行步驟S4 ; 步驟S3-5:判斷系統(tǒng)狀態(tài)是否為輸入激活碼狀態(tài),是則刪除顯示屏上顯示的所有數(shù)據(jù),然后執(zhí)行步驟S4 ;否則直接執(zhí)行步驟S4 ; 步驟S3-6:判斷系統(tǒng)狀態(tài)是否為輸入激活碼狀態(tài),是則將小數(shù)點(diǎn)顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位,然后執(zhí)行步驟S4 ;否則直接執(zhí)行步驟S4 ; 步驟S3-7:判斷系統(tǒng)狀態(tài)是否為開機(jī)狀態(tài),是則動態(tài)令牌開機(jī),顯示開機(jī)界面,然后執(zhí)行步驟S4 ;否則動態(tài)令牌關(guān)機(jī),關(guān)閉顯示屏,將系統(tǒng)狀態(tài)置為關(guān)機(jī)狀態(tài),然后執(zhí)行步驟S4。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟S3所述根據(jù)按鍵類型和系統(tǒng)狀態(tài)執(zhí)行相應(yīng)響應(yīng)操作具體為: 步驟S3:判斷系統(tǒng)狀態(tài),當(dāng)系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài)執(zhí)行步驟S3-1,當(dāng)系統(tǒng)狀態(tài)為等待狀態(tài)執(zhí)行步驟S3-2,當(dāng)系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài)執(zhí)行步驟S3-3,當(dāng)系統(tǒng)狀態(tài)為輸入激活碼、設(shè)定密碼、檢查密碼、一級鎖定、二級鎖定中的任一狀態(tài)執(zhí)行步驟S3-4,當(dāng)系統(tǒng)狀態(tài)為其他狀態(tài)直接執(zhí)行步驟S3-5 ; 步驟S3-1:判斷按鍵類型,若為電源鍵或刪除鍵或確認(rèn)鍵,則動態(tài)令牌開機(jī),顯示開機(jī)界面,執(zhí)行步驟S4 ;若為其他鍵,則直接執(zhí)行步驟S4 ; 步驟S3-2:判斷按鍵類型,若為刪除鍵或確認(rèn)鍵,則清除顯示屏上顯示的口令,置系統(tǒng)狀態(tài)為輸入挑戰(zhàn)碼狀態(tài),執(zhí)行步驟S4 ;若為電源鍵,則動態(tài)令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),執(zhí)行步驟S4 ;若為其他鍵,則直接執(zhí)行步驟S4 ; 步驟S3-3:判斷按鍵類型,若為數(shù)字鍵或小數(shù)點(diǎn)鍵,將數(shù)字鍵的值或小數(shù)點(diǎn)顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位,執(zhí)行步驟S4 ;若為左移或右移鍵,顯示屏上顯示數(shù)據(jù)左移或右移八位,執(zhí)行步驟S4 ;若為刪除鍵,刪除顯示屏最右邊數(shù)據(jù)位,原有顯示數(shù)據(jù)右移一位,執(zhí)行步驟S4;若為長刪除鍵,刪除顯示屏上顯示的所有數(shù)據(jù),執(zhí)行步驟S4;若為確認(rèn)鍵,產(chǎn)生動態(tài)口令,在顯示屏上顯示動態(tài)口令,將系統(tǒng)狀態(tài)置為等待狀態(tài),執(zhí)行步驟S4 ;若為電源鍵,則動態(tài)令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),執(zhí)行步驟S4 ;若為其他鍵,則直接執(zhí)行步驟S4 ; 步驟S3-4:判斷按鍵類型,若為數(shù)字鍵,將數(shù)字鍵的值顯示到顯示屏最右邊,原有顯示數(shù)據(jù)左移一位,執(zhí)行步驟S4 ;若為刪除鍵,刪除顯示屏最右邊一位數(shù)據(jù),原有顯示數(shù)據(jù)右移一位,執(zhí)行步驟S4 ;若為確認(rèn)鍵則執(zhí)行相應(yīng)狀態(tài)下的確認(rèn)操作,執(zhí)行步驟S4 ;若為電源鍵,則動態(tài)令牌關(guān)機(jī),關(guān)閉顯示屏,置系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),執(zhí)行步驟S4 ;若為其他鍵,則直接執(zhí)行步驟S4。
5.根據(jù)權(quán)利要求1-4任一權(quán)利要求所述的方法,其特征在于,所述方法還包括:所述動態(tài)令牌檢測按鍵保護(hù)標(biāo)志是否被置位,是則執(zhí)行步驟A2,否則執(zhí)行步驟Al ;步驟Al:將按鍵輸出IO 口輸出低電平,開啟按鍵中斷; 步驟A2:所述動態(tài)令牌進(jìn)入低速時鐘停止模式或休眠模式,等待中斷; 當(dāng)檢測到RTC中斷時將RTC喚醒標(biāo)志置位; 當(dāng)檢測到PO中斷時,根據(jù)中斷標(biāo)志寄存器中的數(shù)據(jù)將按鍵喚醒標(biāo)志或通信喚醒標(biāo)志置位,然后清所述中斷標(biāo)志寄存器; 步驟A3:所述動態(tài)令牌進(jìn)入高速時鐘模式,檢測是否有按鍵喚醒標(biāo)志被置位,是則執(zhí)行相應(yīng)處理后返回繼續(xù)檢測所述按鍵保護(hù)標(biāo)志是否被置位,否則直接返回繼續(xù)檢測所述按鍵保護(hù)標(biāo)志是否被置位。
6.根據(jù)權(quán)利要求5述的方法,其特征在于,所述根據(jù)中斷標(biāo)志寄存器中的數(shù)據(jù)將按鍵喚醒標(biāo)志或通信喚醒標(biāo)志置位具體為:判斷所述中斷標(biāo)志寄存器的最高位是否為1,是則將所述通信喚醒標(biāo)志置位,否則將所述按鍵喚醒標(biāo)志置位。
7.根據(jù)權(quán)利要求5述的方法,其特征在于,所述步驟SI中當(dāng)判斷鍵值不為空時還包括清零無按鍵計數(shù)器,清零按鍵按下計數(shù)器; 當(dāng)所述動態(tài)令牌檢測到所述RTC喚醒標(biāo)志被置位后,所述執(zhí)行相應(yīng)處理包括: 步驟B1:將所述無按鍵計數(shù)器加I,判斷系統(tǒng)狀態(tài)是否為等待狀態(tài),是則通過顯示屏顯示時間條,然后執(zhí)行步驟B3,否則執(zhí)行步驟B2 ; 步驟B2:判斷所述無按鍵計數(shù)器是否大于60,是則清零所述無按鍵計數(shù)器,動態(tài)令牌關(guān)機(jī),否則執(zhí)行步驟B3; 步驟B3:檢測按鍵,判斷是否有按鍵按下,是則執(zhí)行步驟B4,否則執(zhí)行步驟B5 ; 步驟B4:所述按鍵按下計數(shù)器加I,清零按鍵松開計數(shù)器;判斷所述按鍵按下計數(shù)器是否大于10,是則動態(tài)令牌關(guān)機(jī),將所述按鍵保護(hù)標(biāo)志置位,清零所述按鍵按下計數(shù)器,然后執(zhí)行步驟B6 ;否則直接執(zhí)行步驟B6 ; 步驟B5:所述按鍵松開計數(shù)器加1,清零所述按鍵按下計數(shù)器;判斷按鍵松開計數(shù)器是否大于4,是則將所述按鍵保護(hù)標(biāo)志復(fù)位,清零所述按鍵松開計數(shù)器,然后執(zhí)行步驟B6,否則直接執(zhí)行步驟B6 ; 步驟B6:所述動態(tài)令牌檢測按鍵保護(hù)標(biāo)志是否被置位,是則將按鍵輸出IO 口輸出高電平,關(guān)閉按鍵中斷,執(zhí)行步驟B7,否則直接執(zhí)行步驟B7 ; 步驟B7:將所述RTC喚醒標(biāo)志復(fù)位。
8.根據(jù)權(quán)利要求1-4任一權(quán)利要求所述的方法,其特征在于,所述步驟SI中所述掃描按鍵,獲取鍵值具體為: 步驟1-1:切換系統(tǒng)時鐘為低速時鐘停止模式,初始化掃描次數(shù)和長按鍵標(biāo)識; 步驟1-2:掃描一次按鍵,如果有按鍵按下,記錄當(dāng)前掃描值為第一掃描值,執(zhí)行步驟1-3 ;如果無按鍵按下,返回鍵值為空; 步驟1-3:繼續(xù)掃描按鍵,判斷按鍵是否松開,如果按鍵松開,則根據(jù)當(dāng)前掃描值計算得到鍵值,如果按鍵未松開,記錄當(dāng)前掃描值,所述掃描次數(shù)加1,并判斷當(dāng)前掃描值是否等于第一掃描值,是則執(zhí)行步驟1-4,否則返回鍵值為空; 步驟1-4:判斷掃描次數(shù)是否達(dá)到220,是則將長按鍵標(biāo)識置位,并根據(jù)當(dāng)前掃描值計算得到鍵值,切換時鐘為高速時鐘模式;否則繼續(xù)執(zhí)行步驟1-3。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述步驟SI是通過檢測長按鍵標(biāo)識是否置位來檢測所述按鍵按下到按鍵松開的時間是否達(dá)到預(yù)設(shè)時間。
10.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述掃描按鍵是指掃描由4個按鍵輸出IO為列和3個按鍵輸入IO為行組成矩陣鍵盤,無按鍵按下時所述按鍵輸出IO分別順序輸出低電平,所述按鍵輸入IO分別輸入高電平; 所述當(dāng)前掃描值包括掃描所述矩陣鍵盤得到的列數(shù)據(jù)和行IO位置,根據(jù)當(dāng)前掃描值計算得到鍵值的計算公式為:鍵值=(列數(shù)據(jù)&0X70) I (行IO位置&0X0F)。
11.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟SI所述根據(jù)鍵值識別按鍵具體為:若鍵值為第四數(shù)值則 按鍵為刪除鍵,若鍵值為第五數(shù)值則按鍵為確認(rèn)鍵,若鍵值為第一數(shù)值則按鍵為數(shù)字鍵4,若鍵值為第二數(shù)值則按鍵為數(shù)字鍵6,若鍵值為第三數(shù)值則按鍵為數(shù)字鍵0,若鍵值為第六數(shù)值、第七數(shù)值、第八數(shù)值、第九數(shù)值、第十?dāng)?shù)值、第十一數(shù)值、第十二數(shù)值則按鍵分分別對應(yīng)為數(shù)字鍵1、數(shù)字鍵2、數(shù)字鍵3、數(shù)字鍵5、數(shù)字鍵7、數(shù)字鍵8和數(shù)字鍵9。
全文摘要
本發(fā)明公開一種應(yīng)用于動態(tài)令牌的按鍵處理方法,屬于計算機(jī)領(lǐng)域。該方法包括,當(dāng)動態(tài)令牌檢測到按鍵喚醒標(biāo)志被置位后執(zhí)行①掃描按鍵,獲取鍵值;判斷鍵值是否為空,是則執(zhí)行③,否則檢測按鍵按下到按鍵松開的時間是否達(dá)到預(yù)設(shè)時間,是則進(jìn)行按鍵復(fù)用設(shè)置后執(zhí)行步驟②,否則根據(jù)鍵值識別按鍵后執(zhí)行步驟②;②根據(jù)按鍵類型和系統(tǒng)狀態(tài)執(zhí)行相應(yīng)響應(yīng)操作;③將按鍵喚醒標(biāo)志復(fù)位。該方法使得動態(tài)令牌體積更加小巧,方便了用戶使用和攜帶。
文檔編號H04L9/32GK103227720SQ20131007819
公開日2013年7月31日 申請日期2013年3月12日 優(yōu)先權(quán)日2013年3月12日
發(fā)明者陸舟, 于華章 申請人:飛天誠信科技股份有限公司