在80C51單片機中有4個雙向的8位I/O口P0~P3,在無片外存儲器的系統(tǒng)中,這4個I/O口的每一位都可以作為準雙向通用I/O使用。
在具有片外存儲器的系統(tǒng)中,P0口作為地址線的低8位以及雙向數(shù)據總線,P2口作為高8位的地址線。這4個I/O口除了可以按字節(jié)尋址外,還可以按位尋址。
P0口
下圖給出了P0口的邏輯結構,它由一個鎖存器,兩個三態(tài)輸入緩沖器,一個多路復用開關,一個與門,一個非門以及控制電路和驅動電路組成。
“鎖存器,是數(shù)字電路中的一種具有記憶功能的邏輯元件。鎖存,就是把信號暫存以維持某種電平狀態(tài),在數(shù)字電路中則可以記錄二進制數(shù)字信號"0"和"1"。
只有在有鎖存信號時輸入的狀態(tài)被保存到輸出,直到下一個鎖存信號。通常只有0和1兩個值。
三態(tài)緩沖器(Three-state buffer),又稱為三態(tài)門、三態(tài)驅動器,其三態(tài)輸出受到使能輸出端的控制。
當使能輸出有效時,器件實現(xiàn)正常邏輯狀態(tài)輸出(邏輯0、邏輯1),當使能輸入無效時,輸出處于高阻狀態(tài),即等效于與所連的電路斷開?!?/p>
P0口可以作為輸入或輸出口,在實際應用中通常作為地址/數(shù)據復用總線。
在訪問外部存儲器時,P0口才是真正的雙向口。
當P0口輸出地址/數(shù)據信息時,此時控制信號線為高電平,模擬開關將地址/數(shù)據線與場效應管VT2接通,同時與門輸出有效,輸出結果由地址/數(shù)據線信號決定。
與門輸出的地址/數(shù)據信息去驅動VT1,同時通過非門反相信號后驅動VT2。VT1與與VT2為推拉結構,同一時刻,只有一個管能導通。若地址/數(shù)據線為1,則VT1導通,VT2截止,P0口輸出高電平;反之輸出低電平。
當數(shù)據從P0口輸入時,讀引腳使三態(tài)緩沖器打開,端口上的數(shù)據經三態(tài)緩沖器后送到內部的數(shù)據總線,完成讀引腳。
當P0口作為通用I/O時,CPU向端口輸出數(shù)據,此時控制信號為低電平,模擬開關與鎖存器的反相端連接,寫信號與鎖存器的控制總線(時鐘線)相連,于是內部數(shù)據總線上的數(shù)據經反相后出現(xiàn)在VT2端,再經VT2反相后輸出到P0端口,輸出的數(shù)據經過兩次反相后相位不變。
由于VT2位漏極開路輸出,為了完成VT2反相功能,此時需要外接上拉電阻。
當P0口作為輸入時,由于信號加載在VT2上被送入三態(tài)緩沖器,若該接口此前剛鎖存過數(shù)據0,則VT2是導通的,VT2的輸出被鉗位在0,此時輸入的1無法讀入,所以當P0口作為通用I/O時,在輸入數(shù)據之前,必須先向端口寫1,使VT2截止。不過當在訪問外部程序存儲器時,CPU會自動向P0口寫1。
有時需要先將端口的數(shù)據寫入,經過修改后再輸出到端口,若此時P0口的負載正好是晶體管的基極,并且其輸出為1,這必然導致該引腳為低,若此時讀取引腳信號,則會將剛輸出的1誤讀為0,為了避免這類誤讀的錯誤,于是單片機還提供了讀鎖存器的功能。
例如執(zhí)行INC P0時,CPU先讀P0鎖存器中的數(shù)據,然后再執(zhí)行加1操作,最后將結果送回P0口,這樣單片機從結構上滿足了讀改寫這類操作的需要。
P1口
P1口是一個準雙向口,通常作為通用I/O使用,結構圖如下。
由于在其輸出端接有上拉電阻,故可以直接輸出而不需要外接上拉電阻。
同P0口一樣,當做輸出口時,必須先向端口寫1,使場效應管截止。同時,它可以被任何數(shù)字邏輯電路驅動,包括TTL電路,MOS電路和OC電路。
P2口
P2口位結構圖如下。
P2口作為一個準雙向口,其位結構與P0口相似,當系統(tǒng)外接片外存儲器時,它輸出高8位地址,此時開關在CPU的控制下接通地址信號。
同時它還可以作為通用I/O使用,此時開關接通鎖存器的Q端。對于80C51單片機來說,P2口通常用作地址信號輸出。
P3口
P3口位結構圖如下。
P3口位雙功能口,當P3口作為通用I/O口使用時,它為準雙向口,且每位都可定義為輸入或輸出,其工作原理與P1口類似。
P3口還有第二功能,其引腳描述如下表:
對于輸出而言,此時相應位的鎖存器由CPU自動輸出1,有效輸出第二功能。
對于輸入而言,無論該位是作為通用輸入口還是第二功能輸入口,相應的鎖存器和選擇輸出功能端都應置1,該工作在開機或復位時CPU自動完成。
80C51系列單片機的并行I/O接口有以下應用特性:1)P0,P1,P2,P3作為通用雙向I/O口使用時,輸入操作是讀引腳狀態(tài);輸出操作是對口的鎖存器的寫入操作,鎖存器狀態(tài)立即反映到引腳上;
2)P1,P2,P3作為輸出口時,由于電路內部帶上拉電阻,因此無須外接上拉電阻。
3)P0,P1,P2,P3作為通用輸入口時,必須使電路中的鎖存器寫入高電平1。
4)I/O口功能自動識別,無論是P0,P2的總線復用功能,還是P3口的第二功能復用,單片機會自動選擇。
5)兩種讀端口的方式,包括端口鎖存器的讀、改,寫操作和讀引腳操作。在單片機中,有些指令是讀端口鎖存器的,如一些邏輯運算指令,置位/復位指令,條件轉移指令以及將I/O口作為目的地址的操作指令;有些指令是讀引腳的,如以I/O口作為源操作數(shù)的指令MOV A,P1。
6)I/O的驅動特性。由于P1,P2,P3口內部帶上拉電阻,其引腳拉出電流能力弱,吸入電流能力強,也就是輸出驅動能力弱,可驅動4個LS TTL輸入;而P0口每個I/O可以驅動8個LS TTL輸入。
評論