找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1760|回復(fù): 16
收起左側(cè)

關(guān)于編碼開關(guān)連接單片機作為地址,實現(xiàn)硬件更改本機ID

[復(fù)制鏈接]
ID:963748 發(fā)表于 2021-12-13 10:33 | 顯示全部樓層 |閱讀模式
用兩個編碼開關(guān)連接P0口,實現(xiàn)硬件更改本機ID。現(xiàn)在 P0 = 0xXX;然后if( Data == P0),只能實現(xiàn)一個固定的ID,更改ID還要在程序上更改。(XX為ID)

讀取單片機P0口高低電平作為地址,和發(fā)送的數(shù)據(jù)對比,具體怎么寫?

編碼開關(guān)

編碼開關(guān)
回復(fù)

使用道具 舉報

ID:963748 發(fā)表于 2021-12-13 10:57 | 顯示全部樓層
定義變量ID = P0;然后再去判斷,也實現(xiàn)不了
回復(fù)

使用道具 舉報

ID:963748 發(fā)表于 2021-12-13 11:17 | 顯示全部樓層
Zzwh 發(fā)表于 2021-12-13 10:57
定義變量ID = P0;然后再去判斷,也實現(xiàn)不了

是數(shù)據(jù)類型的問題嗎?
回復(fù)

使用道具 舉報

ID:883242 發(fā)表于 2021-12-13 11:23 | 顯示全部樓層
到底是發(fā)送還是接收???
發(fā)送直接ID=P0,然后把數(shù)據(jù)發(fā)出去就好了。
如果是接收“現(xiàn)在 P0 = 0xXX;然后if( Data == P0)”這句完全無法理解,完全沒有必要去設(shè)置P0。
回復(fù)

使用道具 舉報

ID:963748 發(fā)表于 2021-12-13 11:32 | 顯示全部樓層
Hephaestus 發(fā)表于 2021-12-13 11:23
到底是發(fā)送還是接收???
發(fā)送直接ID=P0,然后把數(shù)據(jù)發(fā)出去就好了。
如果是接收“現(xiàn)在 P0 = 0xXX;然后if ...

謝謝回復(fù),我現(xiàn)在也知道不用設(shè)置P0了,但直接拿P0去和指令Data對比數(shù)據(jù)也不行
回復(fù)

使用道具 舉報

ID:883242 發(fā)表于 2021-12-13 11:39 | 顯示全部樓層
Zzwh 發(fā)表于 2021-12-13 11:32
謝謝回復(fù),我現(xiàn)在也知道不用設(shè)置P0了,但直接拿P0去和指令Data對比數(shù)據(jù)也不行

P0=0xff; // set P0 to input mode
if(Data==P0){}

這不就行了嗎?你隨時改撥碼開關(guān),然后Data跟撥碼開關(guān)的值比對,如果對上了就接受。
回復(fù)

使用道具 舉報

ID:963748 發(fā)表于 2021-12-13 11:40 | 顯示全部樓層
Hephaestus 發(fā)表于 2021-12-13 11:23
到底是發(fā)送還是接收???
發(fā)送直接ID=P0,然后把數(shù)據(jù)發(fā)出去就好了。
如果是接收“現(xiàn)在 P0 = 0xXX;然后if ...

把兩個編碼開關(guān)調(diào)到1和0;設(shè)置P0 = 0x10; 然后再拿P0去判斷就可以;但只能程序上更改ID
回復(fù)

使用道具 舉報

ID:883242 發(fā)表于 2021-12-13 11:43 | 顯示全部樓層
Zzwh 發(fā)表于 2021-12-13 11:40
把兩個編碼開關(guān)調(diào)到1和0;設(shè)置P0 = 0x10; 然后再拿P0去判斷就可以;但只能程序上更改ID

把兩個編碼開關(guān)調(diào)到1和0;設(shè)置P0 = 0xff; 然后再拿P0去判斷ID就可以;因為P0讀到的值是0x10,如果你接收數(shù)據(jù)指示ID=0x10就接收,不等于0x10就放棄。不需要程序上更改ID,因為ID的值是撥碼開關(guān)設(shè)定的。
回復(fù)

使用道具 舉報

ID:963748 發(fā)表于 2021-12-13 11:53 | 顯示全部樓層
Hephaestus 發(fā)表于 2021-12-13 11:39
P0=0xff; // set P0 to input mode
if(Data==P0){}

這樣也不行
回復(fù)

使用道具 舉報

ID:963748 發(fā)表于 2021-12-13 11:57 | 顯示全部樓層
Hephaestus 發(fā)表于 2021-12-13 11:43
把兩個編碼開關(guān)調(diào)到1和0;設(shè)置P0 = 0xff; 然后再拿P0去判斷ID就可以;因為P0讀到的值是0x10,如果你接收 ...

謝謝,明白了,但還是不行
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2021-12-13 12:37 | 顯示全部樓層
你說的不行,到底是什么?
還有,你知道不知道, 這個撥碼開關(guān)連接P0口到底代表什么意思? 以及,你有沒有手段確切地知道P0口的讀值?最后,你知道不知道,8951的話,不上拉,P0口是沒有1的?
回復(fù)

使用道具 舉報

ID:883242 發(fā)表于 2021-12-13 13:38 | 顯示全部樓層
Zzwh 發(fā)表于 2021-12-13 11:57
謝謝,明白了,但還是不行

還是不行,是怎么不行?貼代碼出來。
回復(fù)

使用道具 舉報

ID:301191 發(fā)表于 2021-12-14 01:57 | 顯示全部樓層
頂一下
回復(fù)

使用道具 舉報

ID:963748 發(fā)表于 2021-12-14 10:35 | 顯示全部樓層
188610329 發(fā)表于 2021-12-13 12:37
你說的不行,到底是什么?
還有,你知道不知道, 這個撥碼開關(guān)連接P0口到底代表什么意思? 以及,你有沒有手 ...

謝謝大佬的回復(fù),通過串口把P0口的值讀出來發(fā)現(xiàn)是高低4位反過來了(因為硬件是個成品,我是拿來搞程序的),現(xiàn)在把高低4位互換搞好了
回復(fù)

使用道具 舉報

ID:963748 發(fā)表于 2021-12-14 10:36 | 顯示全部樓層
Hephaestus 發(fā)表于 2021-12-13 13:38
還是不行,是怎么不行?貼代碼出來。

謝謝大佬的回復(fù),是我的問題,通過串口把P0口的值讀出來發(fā)現(xiàn)是高低4位反過來了(因為硬件是個成品,我是拿來搞程序的),現(xiàn)在把高低4位互換搞好了
回復(fù)

使用道具 舉報

ID:887371 發(fā)表于 2021-12-14 10:45 | 顯示全部樓層
是不是硬件問題?
把2個撥碼開關(guān)都撥到0位,看P0的8個腳是否全為0。
把2個撥碼開關(guān)都撥到3位,看P0的8個腳是否為00110011。
回復(fù)

使用道具 舉報

ID:963748 發(fā)表于 2021-12-14 11:46 | 顯示全部樓層
datouyuan 發(fā)表于 2021-12-14 10:45
是不是硬件問題?
把2個撥碼開關(guān)都撥到0位,看P0的8個腳是否全為0。
把2個撥碼開關(guān)都撥到3位,看P0的8個 ...

謝謝回復(fù),是硬件的問題,把高低4位互換就好了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表