新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)IO口總結(jié)

51單片機(jī)IO口總結(jié)

作者: 時(shí)間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
首先,看51單片機(jī)4類IO口,P0~P3,做一個(gè)結(jié)構(gòu)上直觀的比較

本文引用地址:http://m.butianyuan.cn/article/201611/315569.htm

之所以把P0口和P2口放在一起,是因?yàn)槠溆布Y(jié)構(gòu)上都包含一個(gè)多路開關(guān),用于選擇是做為普通I/O口使用還是作為‘數(shù)據(jù)/地址’總線使用。對(duì)于沒有內(nèi)部ROM的單片機(jī)(8031)或單片機(jī)內(nèi)部存儲(chǔ)器無法滿足程序大小需求,多路開關(guān)就與上面接通,作為單片機(jī)與擴(kuò)展存儲(chǔ)器通信的地址/數(shù)據(jù)總線使用。

它們之間的不同也顯而易見,P0口引腳前2個(gè)mosfet(金屬氧化物半導(dǎo)體場效應(yīng)管)構(gòu)成了一個(gè)推挽結(jié)構(gòu),而P2口前mosfet則為普通開關(guān)作用,且包含上拉電阻。

推挽結(jié)構(gòu):在輸出“地址/數(shù)據(jù)”信息時(shí),V1、V2管是交替導(dǎo)通的,負(fù)載能力很強(qiáng),可以直接與外設(shè)存儲(chǔ)器相連,無須增加總線驅(qū)動(dòng)器。

從結(jié)構(gòu)上決定了它們的用途:假設(shè)擴(kuò)展了存儲(chǔ)器,則P0口作為地址/數(shù)據(jù)總線口,P2口作為高8位地址線。P0口作為IO輸出口時(shí),漏極開路輸出,類似于OC門,當(dāng)驅(qū)動(dòng)上接電流負(fù)載時(shí),需要外接上拉電阻。,所以不推薦使用。而PP2端口的多路開關(guān)總是在進(jìn)行切換,分時(shí)地輸出從內(nèi)部總線來的數(shù)據(jù)和從地址信號(hào)線上來的地址。因此P2端口是動(dòng)態(tài)的I/O端口,不能輸出靜態(tài)的數(shù)據(jù),也不推薦作為IO口使用。推薦P0,P2保留作為擴(kuò)展存儲(chǔ)器,而非IO口使用。

另外,什么時(shí)候是IO口,什么時(shí)候是地址/數(shù)據(jù)口并非取決于硬件,而取決于當(dāng)前的狀態(tài)。

這才叫IO口,具有輸出鎖存的靜態(tài)口,不必細(xì)說。

P3端口和Pl端口的結(jié)構(gòu)相似,區(qū)別僅在于P3端口的各端口線有兩種功能選擇.

使P3端品各線處于第二功能的條件是:

1、串行I/O處于運(yùn)行狀態(tài)(RXD,TXD);

2、打開了處部中斷(INT0,INT1);

3、定時(shí)器/計(jì)數(shù)器處于外部計(jì)數(shù)狀態(tài)(T0,T1)

4、執(zhí)行讀寫外部RAM的指令(RD,WR)

而作為IO口使用時(shí)與P1完全相同。

在更多的場合是根據(jù)應(yīng)用的需要,把幾條端口線設(shè)置為第二功能,而另外幾條端口線處于第一功能運(yùn)行狀態(tài)。在這種情況下,不宜對(duì)P3端口作字節(jié)操作,需采用位操作的形式。

至于讀引腳和讀端口,一般教科書都會(huì)強(qiáng)調(diào),讀端口的指令為端口內(nèi)容取反這樣的“讀-修改-寫”指令。而讀引腳之前,先置1,然后用Mov A,Px之類的指令即可。沒有只讀端口的指令,因?yàn)槎丝趦?nèi)容是不會(huì)因?yàn)橐_的變化而變化,始終保持為為上次輸出值。只讀不改沒有意義。

那么可能會(huì)有疑問,在P0作為地址/數(shù)據(jù)總線使用時(shí),并沒有使其置1?

以訪問外部程序存儲(chǔ)器為例,P0口輸出低8位地址信息后,將變?yōu)閿?shù)據(jù)總線,以便讀指令碼(輸入)。在取指令期間,“控制”信號(hào)為“0”,V1管截止,多路開關(guān)也跟著轉(zhuǎn)向鎖存器反向輸出端Q非;CPU自動(dòng)將0FFH寫入P0口鎖存器,使V2管截止,在讀引腳信號(hào)控制下,通過讀引腳三態(tài)門電路將指令碼讀到內(nèi)部總線,這個(gè)過程和I/O讀引腳過程是一樣的。



關(guān)鍵詞: 51單片機(jī)IO口總

評(píng)論


技術(shù)專區(qū)

關(guān)閉