|
發布時間: 2019-9-8 10:22
正文摘要:大家好,還是我,之前的問題已經解決了,現在我來問問P0&0x0f 這種代碼,這個我明白是檢測電平變化,但是我自己不懂得該怎么寫,就是面對一個不熟悉的單片機時候,要怎么寫這種類型的控制,我用KEY=P3_ ... |
| P0&0x0f 這個只是表達屏蔽高4位,只取低4位作狀態判斷,也就是按鍵是接在低4位,用每次對應低4位狀態值變化而判斷即可 |
|
用腦子想一下,你要區分三個不同的按鍵,即使用沒有時序,它也有8種按鍵組合方式(不按、單按、雙按、三按),你想如何簡單呢? 簡單與復雜與你的設計要求相關。 |
| 學到矩陣按鍵的掃描時,最好能結合仿真軟件比如proteus來看一下引腳的電平實際變化,會更容易理解的。 |
|
這個其實還是比較簡單的。主要還是你沒有習慣這種方法。 按照lz的意思,應該是這樣的: key = P0; key = key & 0x0f; 然后是 if(key != 0x0f) { //執行語句 } 意思大致是:key先存儲P0口的高低電平狀態,然后和0x0f做“與”運算(不一定非要是0x0f)。然后得到“與”運算之后的結果,“與”運算的結果如果和0x0f不一致,則表明P0口的數據發生了變化,即按鍵按下之后,改變了P0的電平狀態。如果數據一致,則表示P0電平未發生變化,按鍵沒有被按下。 舉個栗子: 若按鍵在P0.3,P0初始為0x0f,(0000 0111 b),按下按鍵之后,會變成0x07(0000 0111b), 若按鍵按下0x07(0000 0111) & 0x0f(0000 1111) = 0x07(0000 0111)不等于0x0f 此時,key的值會賦值給P2。 |
|
不同類型按鍵要采用不同的檢測方法,你表達不清楚 |