51微控制器P0口工作原理詳細講解

2021-03-04 00:01:40 字數 3634 閱讀 5409

一、p0埠的結構及工作原理

p0埠8位中的一位結構圖見下圖:

下面,我們先就組成p0口的每個單元部份跟大家介紹一下:

先看輸入緩衝器:在p0口中,有兩個三態的緩衝器,在學數位電路時,我們已知道,三態門有三個狀態,即在其的輸出端可以是高電平、低電平,同時還有一種就是高阻狀態(或稱為禁止狀態),大家看上圖,上面乙個是讀鎖存器的緩衝器,也就是說,要讀取d鎖存器輸出端q的資料,那就得使讀鎖存器的這個緩衝器的三態控制端(上圖中標號為『讀鎖存器』端)有效。下面乙個是讀引腳的緩衝器,要讀取p0.

x引腳上的資料,也要使標號為『讀引腳』的這個三態緩衝器的控制端有效,引腳上的資料才會傳輸到我們微控制器的內部資料匯流排上。

d鎖存器:構成乙個鎖存器,通常要用乙個時序電路,時序的單元電路在學數位電路時我們已知道,乙個觸發器可以儲存一位的二進位制數(即具有保持功能),在51微控制器的32根i/o口線中都是用乙個d觸發器來構成鎖存器的。大家看上圖中的d鎖存器,d端是資料輸入端,cp是控制端(也就是時序控制訊號輸入端),q是輸出端,q非是反向輸出端。

對於d觸發器來講,當d輸入端有乙個輸入訊號,如果這時控制端cp沒有訊號(也就是時序脈衝沒有到來),這時輸入端d的資料是無法傳輸到輸出端q及反向輸出端q非的。如果時序控制端cp的時序脈衝一旦到了,這時d端輸入的資料就會傳輸到q及q非端。資料傳送過來後,當cp時序控制端的時序訊號消失了,這時,輸出端還會保持著上次輸入端d的資料(即把上次的資料鎖存起來了)。

如果下乙個時序控制脈衝訊號來了,這時d端的資料才再次傳送到q端,從而改變q端的狀態。

多路開關:在51微控制器中,當內部的儲存器夠用(也就是不需要外擴充套件儲存器時,這裡講的儲存器包括資料儲存器及程式儲存器)時,p0口可以作為通用的輸入輸出埠(即i/o)使用,對於8031(內部沒有rom)的微控制器或者編寫的程式超過了微控制器內部的儲存器容量,需要外擴儲存器時,p0口就作為『位址/資料』匯流排使用。那麼這個多路選擇開關就是用於選擇是做為普通i/o口使用還是作為『資料/位址』匯流排使用的選擇開關了。

大家看上圖,當多路開關與下面接通時,p0口是作為普通的i/o口使用的,當多路開關是與上面接通時,p0口是作為『位址/資料』匯流排使用的。

輸出驅動部份:從上圖中我們已看出,p0口的輸出是由兩個mos管組成的推拉式結構,也就是說,這兩個mos管一次只能導通乙個,當v1導通時,v2就截止,當v2導通時,v1截止。

與門、與非門:這兩個單元電路的邏輯原理不做介紹。

前面我們已將p0口的各單元部件進行了乙個詳細的講解,下面我們就來研究一下p0口做為i/o口及位址/資料匯流排使用時的具體工作過程。

1、作為i/o埠使用時的工作原理

p0口作為i/o埠使用時,多路開關的控制訊號為0(低電平),看上圖中的線線部份,多路開關的控制訊號同時與與門的乙個輸入端是相接的,我們知道與門的邏輯特點是「全1出1,有0出0」那麼控制訊號是0的話,這時與門輸出的也是乙個0(低電平),與讓的輸出是0,v1管就截止,在多路控制開關的控制訊號是0(低電平)時,多路開關是與鎖存器的q非端相接的(即p0口作為i/o口線使用)。

p0口用作i/o口線,其由資料匯流排向引腳輸出(即輸出狀態output)的工作過程:當寫鎖存器訊號cp 有效,資料匯流排的訊號→鎖存器的輸入端d→鎖存器的反向輸出q非端→多路開關→v2管的柵極→v2的漏極到輸出端p0.x。

前面我們已講了,當多路開關的控制訊號為低電平0時,與門輸出為低電平,v1管是截止的,所以作為輸出口時,p0是漏極開路輸出,類似於oc門,當驅動上接電流負載時,需要外接上拉電阻。

下圖就是由內部資料匯流排向p0口輸出資料的流程圖(紅色箭頭)。

p0口用作i/o口線,其由引腳向內部資料匯流排輸入(即輸入狀態input)的工作過程:

資料輸入時(讀p0口)有兩種情況:

1、讀引腳

讀晶元引腳上的資料,讀引腳數時,讀引腳緩衝器開啟(即三態緩衝器的控制端要有效),通過內部資料匯流排輸入,請看下圖(紅色簡頭)。

2、讀鎖存器

通過開啟讀鎖存器三態緩衝器讀取鎖存器輸出端q的狀態,請看下圖(紅色箭頭):

在輸入狀態下,從鎖存器和從引腳上讀來的訊號一般是一致的,但也有例外。例如,當從內部匯流排輸出低電平後,鎖存器q=0,q非=1,場效電晶體t2開通,埠線呈低電平狀態。此時無論埠線上外接的訊號是低電乎還是高電平,從引腳讀入微控制器的訊號都是低電平,因而不能正確地讀入埠引腳上的訊號。

又如,當從內部匯流排輸出高電平後,鎖存器q=1,q非=0,場效電晶體t2截止。如外接引腳訊號為低電平,從引腳上讀入的訊號就與從鎖存器讀入的訊號不同。為此,8031微控制器在對埠p0一p3的輸入操作上,有如下約定:

為此,8051微控制器在對埠p0一p3的輸入操作上,有如下約定:凡屬於讀-修改-寫方式的指令,從鎖存器讀入訊號,其它指令則從埠引腳線上讀入訊號。

讀-修改-寫指令的特點是,從埠輸入(讀)訊號,在微控制器內加以運算(修改)後,再輸出(寫)到該埠上。下面是幾條讀--修改-寫指令的例子。

anl p0,#立即數 ;p0→立即數p0

orl p0,a ;p0→ap0

inc p1 ;p1+1→p1

dec p3 ;p3-1→p3

cpl p2 ;p2→p2

這樣安排的原因在於讀-修改-寫指令需要得到埠原輸出的狀態,修改後再輸出,讀鎖存器而不是讀引腳,可以避免因外部電路的原因而使原埠的狀態被讀錯。

p0埠是8031微控制器的匯流排口,分時出現資料d7一d0、低8位位址a7一ao,以及三態,用來介面儲存器、外部電路與外部裝置。p0埠是使用最廣泛的i/o埠。

2、作為位址/資料復用口使用時的工作原理

在訪問外部儲存器時p0口作為位址/資料復用口使用。

這時多路開關『控制』訊號為『1』,『與門』解鎖,『與門』輸出訊號電平由「位址/資料」線訊號決定;多路開關與反相器的輸出端相連,位址訊號經「位址/資料」線→反相器→v2場效電晶體柵極→v2漏極輸出。

例如:控制訊號為1,位址訊號為「0」時,與門輸出低電平,v1管截止;反相器輸出高電平,v2管導通,輸出引腳的位址訊號為低電平。請看下圖(蘭色字型為電平):

反之,控制訊號為「1」、位址訊號為「1」,「與門」輸出為高電平,v1管導通;反相器輸出低電平,v2管截止,輸出引腳的位址訊號為高電平。請看下圖(蘭色字型為電平):

可見,在輸出「位址/資料」資訊時,v1、v2管是交替導通的,負載能力很強,可以直接與外設儲存器相連,無須增加匯流排驅動器。

p0口又作為資料匯流排使用。在訪問外部程式儲存器時,p0口輸出低8位位址資訊後,將變為資料匯流排,以便讀指令碼(輸入)。

在取指令期間,「控制」訊號為「0」,v1管截止,多路開關也跟著轉向鎖存器反相輸出端q非;cpu自動將0ffh(11111111,即向d鎖存器寫入乙個高電平『1』)寫入p0口鎖存器,使v2管截止,在讀引腳訊號控制下,通過讀引腳三態閘電路將指令碼讀到內部匯流排。請看下圖

如果該指令是輸出資料,如movx @dptr,a(將累加器的內容通過p0口資料匯流排傳送到外部ram中),則多路開關「控制」訊號為『1』,「與門」解鎖,與輸出位址訊號的工作流程類似,資料據由「位址/資料」線→反相器→v2場效電晶體柵極→v2漏極輸出。

如果該指令是輸入資料(讀外部資料儲存器或程式儲存器),如movx a,@dptr(將外部ram某一儲存單元內容通過p0口資料匯流排輸入到累加器a中),則輸入的資料仍通過讀引腳三態緩衝器到內部匯流排,其過程類似於上圖中的讀取指令碼流程圖。

通過以上的分析可以看出,當p0作為位址/資料匯流排使用時,在讀指令碼或輸入資料前,cpu自動向p0口鎖存器寫入0ffh,破壞了p0口原來的狀態。因此,不能再作為通用的i/o埠。大家以後在系統設計時務必注意,即程式中不能再含有以p0口作為運算元(包含源運算元和目的運算元)的指令。

p0口工作原理詳解

由上圖可見,p0埠由鎖存器 輸入緩衝器 切換開關 乙個與非門 乙個與門及場效電晶體驅動電路構成。再看圖的右邊,標號為引腳的圖示,也就是說引腳可以是p0.0到p0.7的任何一位,即在p0口有8個與上圖相同的電路組成。下面,我們先就組成p0口的每個單元部份跟大家介紹一下 先看輸入緩衝器 在p0口中,有兩...

51微控制器IO引腳IO口工作原理

一 p0埠的結構及工作原理 p0埠8位中的一位結構圖見下圖 由上圖可見,p0埠由鎖存器 輸入緩衝器 切換開關 乙個與非門 乙個與門及場效電晶體驅動電路構成。再看圖的右邊,標號為p0.x引腳的圖示,也就是說p0.x引腳可以是p0.0到p0.7的任何一位,即在p0口有8個與上圖相同的電路組成。下面,我們...

51微控制器IO口使用經驗

按常規,在51埠 p1 p2 p3 某位用作輸入時,必須先向對應的鎖存器寫入1,使fet截止。一般情況是這樣,也有例外。所謂io口內部與電源相連的上拉電阻而非一常規線性電阻,實質上,該電阻是由兩個場效電晶體併聯在一起 乙個fet為負載管,其阻值固定 另乙個fet可工作在導通或截止兩種狀態 姑且叫可變...