8051單片機端口結(jié)構(gòu)—P3口
P3口是一個多功能端口,對比P1的結(jié)構(gòu)圖不難看出,P3口與P2口的差別在于多了與非門和緩沖器。正是這兩個部分,使得P3口除了具有P1口的準雙向I/O功能之外,還可以使用各引腳所具有的第二功能。
與非門的作用實際上是一個開關(guān),決定是輸出鎖存器上的數(shù)據(jù)還是輸出第二功能W的信號。WR和RD三個第二輸出功能引腳。當W=1時,輸出Q端信號;當Q=1時,可輸出W線信號。編程時,可不必事先由軟件設(shè)置P3口為通用I/O口還是第二功能。
當CPU對P3口進行特殊功能寄存器尋址訪問時,由內(nèi)部硬件自動將第二功能輸出線W置1,這時P3口為通用I/O口;當CPU不把P3口作為特殊功能寄存器尋址訪問時,即可用作第二功能輸出/輸入線時,由內(nèi)部硬件使鎖存器Q=1.P3口可作為通用I/O口使用時,工作原理與P1口類似.
P3口作為通用I/O進行特殊功能寄存器尋址時,"第二輸出端"W保持高電平,打開與非門,所以D鎖存器輸出端Q的狀態(tài)可通過與非門送至FET場效應(yīng)管輸出,這是作通用I/O輸出的情況.當P3口作為輸入使用(即CPU讀引腳狀態(tài))時,同P0-P2口一樣,先用軟件向口鎖存器寫入"1",即使D鎖存器Q端保持為1,與非門輸出為0,FET場效應(yīng)管截止,引腳端可作為高阻輸入.
當CPU發(fā)出讀命令時,使緩沖器上的"讀引腳"信號有效,三態(tài)緩沖器導通,于是引腳的狀態(tài)經(jīng)緩沖器2,緩沖器1送到CPU內(nèi)部總線.當P3口用于第二功能時,8個引腳可獨立定義.當某個被用作第二功能時,該位的D端鎖存器Q應(yīng)被內(nèi)部硬件置1,使與非門對"第二輸出功能端"W是暢通的."第二輸出功能端"W可為TXD,WR和RD三個第二輸出功能引腳.
例如,某一位被選擇為RD功能,則該位的W線上即RD控制信號狀態(tài)通過與非門和FET輸出引腳端.由于D鎖存器Q端已被置1,W線不作第二功能輸出時保持為1,場效應(yīng)管FET截止,該引腳為高阻輸入,此時,第二輸入功能為:RXD,INTO,INT1,TO和T1. 由于端口不作為通用I/O口,"讀引腳"信號無效,三態(tài)緩沖器不導通,某位引腳的第二輸入功能信號經(jīng)緩沖器2送入功能端,然后再進入各自的第二功能處理機構(gòu).
綜上所述,P0口的輸出級與P1-P3口的輸出級在結(jié)構(gòu)上是不同的,因此,它們的負載能力和接口要求也是各不相同.下面我們回顧一下四個端口的特點:
P0口與其他口號不同,它的輸出級無上拉電阻.當把它用作通用I/O口使用時,輸出極是開漏電路, 故用作輸出時需外接上拉電阻,用作輸入時應(yīng)先向口鎖存器寫1;把它當作地址/數(shù)據(jù)總線時,則無需外接上拉電阻,也無需先寫1.P0口的每一位輸出可驅(qū)動8個TTL負載.
P1-P3口的輸出級外接有內(nèi)部上拉電阻,它們的每一位輸出可驅(qū)動4個LS型TTL負載輸入端.由于它們的輸出級具有上拉電阻,所以無需外接上拉電阻.P1-P3口也都是準雙向口,即作輸入時,必須先在相應(yīng)端口鎖存器寫1.