1. 程式人生 > >80c51微控制器通用I/O口

80c51微控制器通用I/O口

80C51微控制器並行輸入/輸出口 
       80C51微控制器含有4 個8位並行I/O口P0、P1、P2和P3。每個口有8個引腳,如圖2-1所示,共有32個I/O引腳,每一個並行I/O口都能用作輸入或輸出。各口的第
一、第二功能如下:
       I/O口   引腳      第一功能      第二功能
       P0口   P0.0~P0.7  輸入與輸出    分時的傳送地址低8位與資料線
       P1口   P1.0~P0.7  輸入與輸出    無第二功能
       P2口   P2.0~P2.7  輸入與輸出    傳送地址的高8位
       P3口   P3.0~P3.7  輸入與輸出    P3.0——RXD:序列口輸入端

                                      P3.1——TXD:序列口輸出端

                                      P3.2—— :外部中斷0中斷請求輸入端

                                      P3.3—— :外部中斷1中斷請求輸入端

                                      P3.4——T0:定時器/計數器0外部輸入端

                                      P3.5——T1:定時器/計數器1外部輸入端

                                      P3.6——

 :外部資料儲存器寫選通訊號

                                      P3.7—— :外部資料儲存器讀選通訊號

       四個通道口都有一種特殊的線路結構,每個口都包含一個鎖存器,即特殊功能暫存器P0~P3,一個輸出驅動器和兩個(P3口有三個)三態緩衝器。這種結構在資料
輸出時,可以鎖存,即在重新輸出新的資料之前,口上的資料一直保持不變。但對於輸入訊號是不鎖存的,所以外設欲輸入的資料必須保持到取數指令執行(把資料讀取
後)為止。
       下面分別敘述各個埠的結構、功能和使用方法。
       (1)P0口的組成與功能 
       1)位結構
       在訪問外部儲存器時,P0口是一個真正的雙向資料匯流排口,並分時送出地址的低8位。圖2-4所示的是P0口的一位結構圖。它包含兩個輸入緩衝器、一個輸出鎖存器以及輸出驅動電路、輸出控制電路。輸出驅動電路由兩隻場效電晶體V1和V2組成,其工作狀態受輸出控制電路的控制。輸出控制電路包括與門、反相器和多路模擬開關MUX。P0口既能用作通用I/O口,又能用作地址/資料匯流排。
2)作為通用I/O口
       P0口作為通用I/O口使用時,CPU令控制訊號為低電平。這時多路開關MUX接通B端即輸出鎖存器的 端,同時使與門輸出低電平,場效電晶體V1截止,因而輸出級為開漏輸出電路。


       ①作為輸出口
       當用P0口輸出資料時,寫訊號加在鎖存器的時鐘端CL上,此時與內部匯流排相連的D端其資料經反相後出現的 端上,再經V2管反相,於是在P0口引腳上出現的資料正好是內部總線上的資料。由於輸出級為開漏電路,所以用作輸出口時應外接上拉電阻。
       ②作為輸入口
       當P0口用於輸入資料時,要使用埠中的兩個三態輸入緩衝器之一。這時有兩種工作方式:讀引腳和讀鎖存器。
       當CPU執行一般的埠輸入指令時,“讀引腳”訊號使圖2-4中下面一個緩衝器開通,於是埠引腳上的資料經過緩衝器輸入到內部總線上。
       當CPU執行“讀一修改一寫”一類指令時,“讀鎖存器”訊號使圖2-4上面一個緩衝器開通,鎖存器Q端的資料經緩衝器輸入內部資料匯流排。
       在P0口作為輸入口使用時,必須首先向埠鎖存器寫入“1”。這是因為當進行讀引腳操作時,如果V2是導通的,那麼不論引腳上的輸入狀態如何,都會變為低電平。為了正確讀入引腳上的邏輯電平,先要向鎖存器寫1,使其 端為0,V2截止。該引腳成為高阻抗的輸入端。
       3)作為地址/資料匯流排
       P0口還能作為地址匯流排低8位或資料匯流排,供系統擴充套件時使用。這時控制訊號為高電平,多路開關MUX接通A端。有兩種工作情況:一種是匯流排輸出,另一種是外部
資料輸入。作為匯流排輸出時,從“地址/資料”端輸入的地址或資料訊號通過與門驅動V2,同時通過非門驅動V2,結果在引腳上得到地址或資料輸出訊號。
       作為資料匯流排輸入資料時,從引腳上輸入的外部資料經過讀引腳緩衝器進入內部資料匯流排。對於80C51、87C51微控制器,P0口能作為I/O口或地址/資料匯流排使用。對於80C31微控制器,P0口只能用作地址/資料匯流排。
       綜上所述,P0口既可以作為地址/資料匯流排口,這時它是真正的雙向口,也可作通用的I/O口,但只是一個準雙向口。準雙向口的特點是:復位時,口鎖存器均置“1”,8根引腳可當一般輸入線使用,而在某引腳由原輸出狀態變成輸入狀態時,則應先寫入“1”,以免錯讀引腳上的資訊。一般情況下,P0口已當作地址/資料匯流排口使用時,就不能再作通用I/O口使用。


       (2)P1口組成與功能
       P1口只用作通用I/O口,其一位結構圖如圖所示。與P0口相比,P1口的位結構圖中少了地址/資料的傳送電路和多路開關,上面一隻MOS管改為上拉電阻。
       P1口作為一般I/O的功能和使用方法與P0口相似。當輸入資料時,應先向埠寫“1”。它也有讀引腳和讀鎖存器兩種方式。所不同的是當輸出資料時,由於內部有了上拉電阻,所以不需要再外接上拉電阻。
      (3)P2口的組成與功能
       當系統中接有外部儲存器時,P2口可用於輸出高8位地址,若當作通用I/O口用,P2口則是一個準雙向口。因此說P2口能用作通用I/O口或地址匯流排,其一位的結構如圖所示。
       ①作為通用I/O口
       當控制訊號為低電平時,多路開關接到B端,P2口作為通用I/O口使用,其功能和使用方法與P1口相同。
       ②作為地址匯流排
       當控制端輸出高電平時,多路開關接到A端,地址訊號經反相器、V從引腳輸出。這時P2口輸出地址匯流排高8位,供系統擴充套件使用。
       對80C51、87C51微控制器,P2口能作為I/O口或地址匯流排作用。對於80C31微控制器,P2口只能用作地址匯流排。
       (4)P3口組成與功能
       P3口能作通用I/O口,同時每一引腳還有第二功能。P3口的一位結構如圖2-7所示。
       作為通用I/O口:當“第二功能輸出”端為高電平時,P3口用作通用I/O口。這時與非門對於輸入端Q來說相當於非門,位結構與P2口完全相同,因此P3口用作通用I/O口時的功能和使用方法與P2口、P1口相同。
       用作第二功能: 當P3口的某一位作為第二功能輸出使用時,應將該位的鎖存器置“1”,使與非門的輸出狀態只受“第二功能輸出”端的控制。“第二功能輸出”端的狀態經與非門和驅動管V輸出到該位引腳上。
       當P3口的某一位作為第二功能輸入使用時,該位的鎖存器和“第二功能輸出”端都應為“1”,這樣,該位引腳上的輸入訊號經緩衝器送入“第二功能輸入”端。


       至此,可以對組成一般微控制器應用系統時各個並行口的分工小結如下:
       P0口:分時的用作地址低8位與資料線,低8位地址由PC低8位或DPL提供。
       P1口:按位可編址的輸入輸出口。
       P2口:地址線的高8位,高8位地址由PC高8位或DPH提供。
       P3口:雙功能口,若不用第二功能,可作為一般的I/O口