官术网_书友最值得收藏!

第三節 I/O口

MCS-51共有四個8位的I/O口,分別記作P0、P1、P2、P3。每個口都包含一個鎖

存器、一個輸出驅動器和輸入緩沖器。實際上,它們已被歸入特殊功能寄存器之列,并且具有字節尋址和位尋址功能。

在訪問片外擴展存儲器時,低8位地址和數據由P0分時傳送,高8位地址由P2口傳送。在無片外擴展存儲器的系統中,這四個口的每一位均可作為雙向的I/O端口使用。

MCS-51單片機的P1、P2、P3口內部有拉高電平,稱為準雙向口,可以驅動四個LSTTL負載。P0口是開漏輸出的,內部沒有拉高電路,是三態雙向I/O口,可以驅動八個LSTTL負載。這些口在結構和特性上基本相同,但又各具特點。

一、P0口

P0口的口線邏輯電路如圖27所示。電路中包含一個數據輸出鎖存器、兩個三態數據輸入緩沖器、一個數據輸出的驅動電路和一個輸出控制電路。當對P0口進行寫操作時,由鎖存器和驅動電路構成數據輸出通路。由于通路中已有輸入鎖存器,因此數據輸出時可以與外設直接連

圖2-7 P0口位結構

接,而不需再加數據鎖存電路。

P0口既可以作為通用的I/O口進行數據輸入/輸出,也可以作為單片機系統的地址/數據線使用,為此在P0口的電路中有一個多路轉接電路MUX。在控制信號的作用下,多路轉接電路可以分別接通鎖存器輸出或地址/數據線。當作為通用的I/O口使用時,內部的控制信號為低電平,封鎖與門,將輸出電路的上拉場效應管截止,同時使多路轉接電路MUX接通鎖存器Q端的輸出通路。

當P0口作為輸出口使用時,內部的寫脈沖加在D觸發器的CLK端,數據寫入鎖存器,并向端口輸出。

當P0口作為輸入口使用時,應區分讀引腳和讀端口兩種情況,為此,在端口電路中有兩個用于讀入驅動的三態緩沖器。所謂讀引腳即讀芯片引腳的數據,這時使用下方的數據緩沖器,由“讀引腳”信號把緩沖器打開,把端口引腳上的數據從緩沖器通過內部總線讀進來。使用傳送指令(MOV)進行讀端口操作都是屬于這種情況。

讀端口是指通過上面的緩沖器讀鎖存器Q端的狀態。在端口已處于輸出狀態的情況下,Q端與引腳信號是一致的,這樣安排的目的是為了適應對端口進行“讀—修改—寫”操作指令的需要。例如,“ANL P0,A”就是屬于這類指令,執行時先讀入P0口鎖存器中的數據,然后與A的內容進行邏輯與,再把結果送回P0口。對于這類“讀—修改—寫”指令,不直接讀引腳而讀鎖存器是為了避免可能出現的錯誤。因為在端口已處于輸出狀態的情況下,如果端口的負載恰是一個晶體管的基極,導通了的PN結會把端口引腳的高電平拉低,這樣直接讀引腳就會把本來的“1”誤讀為“0”;但若從鎖存器Q端讀,就能避免這樣的錯誤,得到正確的數據。

需要注意的是,當P0口進行一般的I/O輸出時,由于輸出電路是漏極開路電路,因此必須外接上拉電阻才能有高電平輸出;當P0口進行一般的I/O輸入時,必須先向電路中的鎖存器寫入“1”使場效應管截止,以避免鎖存器為“0”狀態時對引腳讀入的封鎖。

在實際應用中,P0口絕大多數情況下都是作為單片機系統的地址/數據線使用,這要比一般I/O口應用簡單。當輸出地址或數據時,由內部發出控制信號,打開上面的與門,并使多路轉接電路MUX處于內部地址/數據線與驅動場效應管柵極反向接通狀態,這時輸出驅動電路由于上、下兩個場效應管處于反相,形成推拉式電路結構,使負載能力大為提高。當輸入數據時,數據信號直接從引腳通過輸入緩沖器進入內部總線。

二、P1口

P1口的口線邏輯電路如圖2-8所示。因為P1口通常是作為通用I/O口使用的,所以在電路結構上與P0口有一些不同之處:首先它不再需要多路轉接電路MUX;其次是電路的內部有上拉電阻,與場效應管共同組成輸出驅動電路。因此,P1口作為輸出口使用時,已經能向外提供推拉電流負載,無需再外接上拉電阻。當P1口作為輸入口使用時,同樣也需先使驅動電路場效應管截止。

三、P2口

P2口的口線邏輯電路如圖29所示。P2口電路比P1口電路多了一個多路轉接電路MUX,這又正好與P0口一樣。P2口可以作為通用I/O口使用,這時多路轉接電路開關倒向鎖存器Q端。通常情況下,P2口是作為高位地址線使用,此時多路轉接電路開關應倒向相反方向。

圖2-8 P1口位結構

圖2-9 P2口位結構

四、P3口

P3口的口線邏輯電路如圖2-10所示。P3口為多功能口,其特點在于適應引腳信號第二功能的需要,增強了第二功能控制邏輯。由于第二功能信號有輸入和輸出兩類,因此分兩種情況說明。對于第二功能為輸出的信號引腳,當作為I/O使用時,第二功能信號引腳應保持高電平,與非門開通,以維持從鎖存器到輸出端數據輸出通路的暢通。輸出第二功能信號時,該位的鎖存器應置“1”,使與非門對第二功能

圖2-10 P3口位結構

信號的輸出是暢通的,從而實現第二功能信號的輸出。

對于第二功能為輸入的信號引腳,在口線的輸入通路上增加了一個緩沖器,輸入的第二功能信號就從這個緩沖器的輸出端取得。而作為I/O使用的數據輸入,仍取自三態緩沖器的輸出端。不管是作為輸入口使用還是第二功能信號輸入,輸出電路中的鎖存器輸出和第二功能輸出信號線都應該保持高電平。

P3口的第二功能輸入/輸出定義如表2-7所示。

表2-7

P3口第二功能定義

主站蜘蛛池模板: 延吉市| 普兰县| 乌审旗| 五峰| 海丰县| 沭阳县| 通州市| 琼中| 平武县| 普兰县| 三门县| 丰台区| 探索| 饶平县| 邳州市| 和政县| 罗定市| 嘉峪关市| 鹤岗市| 宣武区| 修武县| 洛浦县| 乐安县| 苏尼特右旗| 安岳县| 黔西| 叙永县| 昭苏县| 石台县| 胶南市| 张家界市| 大姚县| 楚雄市| 错那县| 琼中| 洛川县| 新晃| 五台县| 昂仁县| 连州市| 峡江县|