今日處理工作時遇到了一個問題,操作非連發按鍵時也會喚醒機器,但不會有連發動作,檢視程式碼瞭解到也是歷史遺留問題。
它採用掩碼形式,將多個按鍵鍵值或運算到一起,最後在與收到的按鍵值與運算來檢視該按鍵是否可以連發,這樣有一個弊端,即多個按鍵的按鍵值佔用多個位,會導致非連發按鍵的鍵值也被包裹進或運算後的掩碼裡,導致一直接收按鍵喚醒。如
#define K1 0X01
#define K2 0X02
#define K3 0X0C
#define K4 0X04
#define code=(K1|K2|K3)
判斷函式
if((code&reception)==reception) //reception為實際接收到的按鍵碼值
{//一些處理}
這時會出現K4不在code裡,但是也會進入到判斷函式里,code=00001111,K4=00000100,因為code把K4的鍵值給包含了,導致誤進入判斷函式(如果每個鍵值只佔一bit位,不會發生該現象)。
解決方法如下,不使用掩碼,依次判斷,如下
if((K1==reception)||(K2==reception)||(K3==reception))
{//一些處理}
或者更好的方法,採用連結串列資料,尋表查詢鍵值,如下
#define K1 0X01
#define K2 0X02
#define K3 0X0C
#define K4 0X04
#define num (3)
#define const code[num]={K1,K2,K3}
for(i=0;i<num;i++)
{if(code[i]==reception)
{//一些處理}
}
此時不會再出現誤進入的現象。
2024.04.19每日收穫之連結串列與邏輯操作
相關文章
- 資料結構之連結串列操作資料結構
- 資料結構之連結串列篇(單連結串列的常見操作)資料結構
- 每週一資料結構之連結串列(Kotlin描述)資料結構Kotlin
- 連結串列入門與插入連結串列
- 2024.4.15每日收穫之變數賦初值變數
- 11.21日每日收穫
- 11.18日每日收穫
- 2024.04.18每日收穫之聯合體結構體記憶體分配結構體記憶體
- 資料結構之連結串列:206. 反轉連結串列資料結構
- 4-雙連結串列的操作
- 02-單連結串列的操作
- 資料結構實驗之連結串列二:逆序建立連結串列資料結構
- 資料結構實驗之連結串列九:雙向連結串列資料結構
- 連結串列與遞迴遞迴
- 陣列與連結串列陣列
- 資料結構之連結串列資料結構
- 資料結構之「連結串列」資料結構
- 連結串列-迴圈連結串列
- 連結串列-雙向連結串列
- 連結串列 - 單向連結串列
- 資料結構實驗之連結串列三:連結串列的逆置資料結構
- 資料結構實驗之連結串列五:單連結串列的拆分資料結構
- 資料結構實驗之連結串列六:有序連結串列的建立資料結構
- 資料結構實驗之連結串列一:順序建立連結串列資料結構
- 演算法 - 連結串列操作思想 && case演算法
- golang二級指標操作連結串列Golang指標
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 資料結構之單連結串列的建立與刪除資料結構
- 03 Javascript資料結構與演算法 之 連結串列JavaScript資料結構演算法
- 003 通過連結串列學Rust之給連結串列新增函式Rust函式
- 012 通過連結串列學習Rust之持久化單連結串列Rust持久化
- 019 通過連結串列學Rust之雙連結串列實現PeekRust
- 003 透過連結串列學Rust之給連結串列新增函式Rust函式
- 012 透過連結串列學習Rust之持久化單連結串列Rust持久化
- 019 透過連結串列學Rust之雙連結串列實現PeekRust
- 資料結構之單連結串列資料結構
- JAVA資料結構之連結串列Java資料結構
- JavaScript資料結構 之 連結串列JavaScript資料結構