熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2019-9-8 10:22
正文摘要:大家好,還是我,之前的問題已經(jīng)解決了,現(xiàn)在我來問問P0&0x0f 這種代碼,這個(gè)我明白是檢測(cè)電平變化,但是我自己不懂得該怎么寫,就是面對(duì)一個(gè)不熟悉的單片機(jī)時(shí)候,要怎么寫這種類型的控制,我用KEY=P3_ ... |
P0&0x0f 這個(gè)只是表達(dá)屏蔽高4位,只取低4位作狀態(tài)判斷,也就是按鍵是接在低4位,用每次對(duì)應(yīng)低4位狀態(tài)值變化而判斷即可 |
用腦子想一下,你要區(qū)分三個(gè)不同的按鍵,即使用沒有時(shí)序,它也有8種按鍵組合方式(不按、單按、雙按、三按),你想如何簡(jiǎn)單呢? 簡(jiǎn)單與復(fù)雜與你的設(shè)計(jì)要求相關(guān)。 |
學(xué)到矩陣按鍵的掃描時(shí),最好能結(jié)合仿真軟件比如proteus來看一下引腳的電平實(shí)際變化,會(huì)更容易理解的。 |
這個(gè)其實(shí)還是比較簡(jiǎn)單的。主要還是你沒有習(xí)慣這種方法。 按照l(shuí)z的意思,應(yīng)該是這樣的: key = P0; key = key & 0x0f; 然后是 if(key != 0x0f) { //執(zhí)行語(yǔ)句 } 意思大致是:key先存儲(chǔ)P0口的高低電平狀態(tài),然后和0x0f做“與”運(yùn)算(不一定非要是0x0f)。然后得到“與”運(yùn)算之后的結(jié)果,“與”運(yùn)算的結(jié)果如果和0x0f不一致,則表明P0口的數(shù)據(jù)發(fā)生了變化,即按鍵按下之后,改變了P0的電平狀態(tài)。如果數(shù)據(jù)一致,則表示P0電平未發(fā)生變化,按鍵沒有被按下。 舉個(gè)栗子: 若按鍵在P0.3,P0初始為0x0f,(0000 0111 b),按下按鍵之后,會(huì)變成0x07(0000 0111b), 若按鍵按下0x07(0000 0111) & 0x0f(0000 1111) = 0x07(0000 0111)不等于0x0f 此時(shí),key的值會(huì)賦值給P2。 |
不同類型按鍵要采用不同的檢測(cè)方法,你表達(dá)不清楚 |
Powered by 單片機(jī)教程網(wǎng)