熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2021-12-13 10:33
正文摘要:用兩個(gè)編碼開(kāi)關(guān)連接P0口,實(shí)現(xiàn)硬件更改本機(jī)ID。現(xiàn)在 P0 = 0xXX;然后if( Data == P0),只能實(shí)現(xiàn)一個(gè)固定的ID,更改ID還要在程序上更改。(XX為ID) 讀取單片機(jī)P0口高低電平作為地址,和發(fā)送的數(shù)據(jù)對(duì)比,具體怎么 ... |
datouyuan 發(fā)表于 2021-12-14 10:45 謝謝回復(fù),是硬件的問(wèn)題,把高低4位互換就好了 |
是不是硬件問(wèn)題? 把2個(gè)撥碼開(kāi)關(guān)都撥到0位,看P0的8個(gè)腳是否全為0。 把2個(gè)撥碼開(kāi)關(guān)都撥到3位,看P0的8個(gè)腳是否為00110011。 |
Hephaestus 發(fā)表于 2021-12-13 13:38 謝謝大佬的回復(fù),是我的問(wèn)題,通過(guò)串口把P0口的值讀出來(lái)發(fā)現(xiàn)是高低4位反過(guò)來(lái)了(因?yàn)橛布莻(gè)成品,我是拿來(lái)搞程序的),現(xiàn)在把高低4位互換搞好了 |
188610329 發(fā)表于 2021-12-13 12:37 謝謝大佬的回復(fù),通過(guò)串口把P0口的值讀出來(lái)發(fā)現(xiàn)是高低4位反過(guò)來(lái)了(因?yàn)橛布莻(gè)成品,我是拿來(lái)搞程序的),現(xiàn)在把高低4位互換搞好了 |
頂一下 |
Zzwh 發(fā)表于 2021-12-13 11:57 還是不行,是怎么不行?貼代碼出來(lái)。 |
你說(shuō)的不行,到底是什么? 還有,你知道不知道, 這個(gè)撥碼開(kāi)關(guān)連接P0口到底代表什么意思? 以及,你有沒(méi)有手段確切地知道P0口的讀值?最后,你知道不知道,8951的話,不上拉,P0口是沒(méi)有1的? |
Hephaestus 發(fā)表于 2021-12-13 11:43 謝謝,明白了,但還是不行 |
Hephaestus 發(fā)表于 2021-12-13 11:39 這樣也不行 ![]() |
Zzwh 發(fā)表于 2021-12-13 11:40 把兩個(gè)編碼開(kāi)關(guān)調(diào)到1和0;設(shè)置P0 = 0xff; 然后再拿P0去判斷ID就可以;因?yàn)镻0讀到的值是0x10,如果你接收數(shù)據(jù)指示ID=0x10就接收,不等于0x10就放棄。不需要程序上更改ID,因?yàn)镮D的值是撥碼開(kāi)關(guān)設(shè)定的。 |
Hephaestus 發(fā)表于 2021-12-13 11:23 把兩個(gè)編碼開(kāi)關(guān)調(diào)到1和0;設(shè)置P0 = 0x10; 然后再拿P0去判斷就可以;但只能程序上更改ID |
Zzwh 發(fā)表于 2021-12-13 11:32 P0=0xff; // set P0 to input mode if(Data==P0){} 這不就行了嗎?你隨時(shí)改撥碼開(kāi)關(guān),然后Data跟撥碼開(kāi)關(guān)的值比對(duì),如果對(duì)上了就接受。 |
Hephaestus 發(fā)表于 2021-12-13 11:23 謝謝回復(fù),我現(xiàn)在也知道不用設(shè)置P0了,但直接拿P0去和指令Data對(duì)比數(shù)據(jù)也不行 |
到底是發(fā)送還是接收??? 發(fā)送直接ID=P0,然后把數(shù)據(jù)發(fā)出去就好了。 如果是接收“現(xiàn)在 P0 = 0xXX;然后if( Data == P0)”這句完全無(wú)法理解,完全沒(méi)有必要去設(shè)置P0。 |
Zzwh 發(fā)表于 2021-12-13 10:57 是數(shù)據(jù)類型的問(wèn)題嗎? |
定義變量ID = P0;然后再去判斷,也實(shí)現(xiàn)不了 |
Powered by 單片機(jī)教程網(wǎng)