|
發布時間: 2021-12-13 10:33
正文摘要:用兩個編碼開關連接P0口,實現硬件更改本機ID。現在 P0 = 0xXX;然后if( Data == P0),只能實現一個固定的ID,更改ID還要在程序上更改。(XX為ID) 讀取單片機P0口高低電平作為地址,和發送的數據對比,具體怎么 ... |
datouyuan 發表于 2021-12-14 10:45 謝謝回復,是硬件的問題,把高低4位互換就好了 |
|
是不是硬件問題? 把2個撥碼開關都撥到0位,看P0的8個腳是否全為0。 把2個撥碼開關都撥到3位,看P0的8個腳是否為00110011。 |
Hephaestus 發表于 2021-12-13 13:38 謝謝大佬的回復,是我的問題,通過串口把P0口的值讀出來發現是高低4位反過來了(因為硬件是個成品,我是拿來搞程序的),現在把高低4位互換搞好了 |
188610329 發表于 2021-12-13 12:37 謝謝大佬的回復,通過串口把P0口的值讀出來發現是高低4位反過來了(因為硬件是個成品,我是拿來搞程序的),現在把高低4位互換搞好了 |
| 頂一下 |
Zzwh 發表于 2021-12-13 11:57 還是不行,是怎么不行?貼代碼出來。 |
|
你說的不行,到底是什么? 還有,你知道不知道, 這個撥碼開關連接P0口到底代表什么意思? 以及,你有沒有手段確切地知道P0口的讀值?最后,你知道不知道,8951的話,不上拉,P0口是沒有1的? |
Hephaestus 發表于 2021-12-13 11:43 謝謝,明白了,但還是不行 |
Hephaestus 發表于 2021-12-13 11:39 這樣也不行 ![]() |
Zzwh 發表于 2021-12-13 11:40 把兩個編碼開關調到1和0;設置P0 = 0xff; 然后再拿P0去判斷ID就可以;因為P0讀到的值是0x10,如果你接收數據指示ID=0x10就接收,不等于0x10就放棄。不需要程序上更改ID,因為ID的值是撥碼開關設定的。 |
Hephaestus 發表于 2021-12-13 11:23 把兩個編碼開關調到1和0;設置P0 = 0x10; 然后再拿P0去判斷就可以;但只能程序上更改ID |
Zzwh 發表于 2021-12-13 11:32 P0=0xff; // set P0 to input mode if(Data==P0){} 這不就行了嗎?你隨時改撥碼開關,然后Data跟撥碼開關的值比對,如果對上了就接受。 |
Hephaestus 發表于 2021-12-13 11:23 謝謝回復,我現在也知道不用設置P0了,但直接拿P0去和指令Data對比數據也不行 |
|
到底是發送還是接收??? 發送直接ID=P0,然后把數據發出去就好了。 如果是接收“現在 P0 = 0xXX;然后if( Data == P0)”這句完全無法理解,完全沒有必要去設置P0。 |
Zzwh 發表于 2021-12-13 10:57 是數據類型的問題嗎? |
| 定義變量ID = P0;然后再去判斷,也實現不了 |