找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 6964|回復(fù): 16
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)P2口賦值問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:442990 發(fā)表于 2020-4-21 11:09 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
請教一個(gè)問題:

#define motor(x) {p2&=0xf0;p2|=x},這是怎么給P2口賦值的,謝謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:734207 發(fā)表于 2020-4-21 11:37 來自觸屏版 | 只看該作者
你確定是這個(gè)端口嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:734207 發(fā)表于 2020-4-21 11:37 來自觸屏版 | 只看該作者
我覺得這個(gè)端口不對吧
回復(fù)

使用道具 舉報(bào)

地板
ID:442990 發(fā)表于 2020-4-21 15:15 | 只看該作者
主函數(shù)中調(diào)用motor(x),x=0x01等,該程序是驅(qū)動步進(jìn)電機(jī)的,分別給不同相供電
回復(fù)

使用道具 舉報(bào)

5#
ID:220661 發(fā)表于 2020-4-21 20:39 | 只看該作者
這個(gè)得結(jié)合電路連接了,看似是P2低位四位驅(qū)動輸出,先清0,再賦值的,如果是那種玩具電機(jī),就逐位為1.
回復(fù)

使用道具 舉報(bào)

6#
ID:311846 發(fā)表于 2020-4-22 11:58 | 只看該作者
在51中一般你這個(gè)是P2端口組,代表這P2^0到P2^7的8個(gè)端口,p2&=0xf0,把0xf0轉(zhuǎn)變?yōu)槎M(jìn)制為11110000再與P2的8個(gè)IO口做位與運(yùn)算,是把P2^0到P2^3四個(gè)IO口賦值為0,P2^4到P2^7端口不變,p2|=x就是將X的值賦值給P2的8個(gè)IO,x為1字節(jié)=8個(gè)比特,每個(gè)比特代表一個(gè)IO
回復(fù)

使用道具 舉報(bào)

7#
ID:442990 發(fā)表于 2020-4-22 17:21 | 只看該作者
十分感謝各位回復(fù)!謝謝!
回復(fù)

使用道具 舉報(bào)

8#
ID:97249 發(fā)表于 2020-4-22 19:22 | 只看該作者
#define motor(x) {p2&=0xf0;p2|=x},
等于
#define motor(x)  {p2=p2&0xf0;p2=p2|x},
p2&0xf0低4位 置0,
回復(fù)

使用道具 舉報(bào)

9#
ID:97249 發(fā)表于 2020-4-22 22:58 | 只看該作者
權(quán)威人物 發(fā)表于 2020-4-22 11:58
在51中一般你這個(gè)是P2端口組,代表這P2^0到P2^7的8個(gè)端口,p2&=0xf0,把0xf0轉(zhuǎn)變?yōu)槎M(jìn)制為11110000再與P2 ...

p2|=x就是將X的值賦值給P2的8個(gè)IO,----這一句是有誤的。
p2|=x相當(dāng):p2=p2|x   p2與x進(jìn)行或運(yùn)算再賦值給p2.
回復(fù)

使用道具 舉報(bào)

10#
ID:442990 發(fā)表于 2020-4-23 07:52 | 只看該作者
@權(quán)威人物@紅塵有你,二位的解答讓我學(xué)習(xí)了,非常感謝!
回復(fù)

使用道具 舉報(bào)

11#
ID:191511 發(fā)表于 2020-4-23 10:16 | 只看該作者
宏定義里前一句,與0xf0求&,是為了給低4位清零,高4位保持原來的值不變,這個(gè)是&的邏輯運(yùn)算特性決定的。下一句是P2口在上一句結(jié)果上和輸入?yún)?shù)x求或操作。
其實(shí)這兩句最后的結(jié)果應(yīng)該是在保持高4位不變的情況下,把x的值傳入P2口。從而也可以猜出來,x的值低4位有效(有效指的是有可能值是0,也可能非0),而高4位應(yīng)該是0。如果不是0,會修改P2高4位值,與第一句操作不符。
回復(fù)

使用道具 舉報(bào)

12#
ID:519352 發(fā)表于 2020-4-23 10:49 | 只看該作者
motor(x) 等效為 {p2=p2&0xf0;p2=p2|x}
回復(fù)

使用道具 舉報(bào)

13#
ID:442990 發(fā)表于 2020-4-23 13:11 | 只看該作者
銀河天地 發(fā)表于 2020-4-23 10:49
motor(x) 等效為 {p2=p2&0xf0;p2=p2|x}

假如x分別等于0x09和ox01,P2值各是多少?
回復(fù)

使用道具 舉報(bào)

14#
ID:538345 發(fā)表于 2020-4-23 13:33 | 只看該作者
P2口高四位 為1,帶參數(shù)的宏定義的話,則P2|=x,即只會對低四位進(jìn)行操作看具體賦值多少即可。
回復(fù)

使用道具 舉報(bào)

15#
ID:672349 發(fā)表于 2020-4-23 13:36 | 只看該作者
學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

16#
ID:97249 發(fā)表于 2020-4-24 11:09 | 只看該作者
jhz931920 發(fā)表于 2020-4-23 13:11
假如x分別等于0x09和ox01,P2值各是多少?

p2=0x09&0xf0   =  0
p2= o|0x09 = 0x09
x=0x01時(shí)也是一樣。樓主要加強(qiáng)位運(yùn)算的學(xué)習(xí)啊
回復(fù)

使用道具 舉報(bào)

17#
ID:442990 發(fā)表于 2020-4-24 16:46 | 只看該作者
紅塵有你 發(fā)表于 2020-4-24 11:09
p2=0x09&0xf0   =  0
p2= o|0x09 = 0x09
x=0x01時(shí)也是一樣。樓主要加強(qiáng)位運(yùn)算的學(xué)習(xí)啊

收到!謝謝指導(dǎo)!
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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