8051單片機I/O口的工作原理

2020-12-12 電子產品世界
一、P0埠的結構及工作原理

本文引用地址:http://www.eepw.com.cn/article/201611/315914.htm

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

由上圖可見,P0埠由鎖存器、輸入緩衝器、切換開關、一個與非門、一個與門及場效應管驅動電路構成。

下面,先分析組成P0口的各個部分:
先看輸入緩衝器:在P0口中,有兩個三態的緩衝器,在其的輸出端可以是高電平、低電平,同時還有一種就是高阻狀態(或稱為禁止狀態),上面一個是讀鎖存器的緩衝器,下面一個是讀引腳的緩衝器,讀取P0.X引腳上的數據,要使這個三態緩衝器有效,引腳上的數據才會傳輸到內部數據總線上。

D鎖存器:在51單片機的32根I/O口線中都是用一個D觸發器來構成鎖存器的。D端是數據輸入端,CP是控制端(也就是時序控制信號輸入端),Q是輸出端,Q非是反向輸出端。

多路開關:在51單片機中,不需要外擴展存儲器時,P0口可以作為通用的輸入輸出埠(即I/O)使用,對於8031(內部沒有ROM)的單片機或者編寫的程序超過了單片機內部的存儲器容量,需要外擴存儲器時,P0口就作為『地址/數據』總線使用。這個多路選擇開關就是用於選擇是做為普通I/O口使用還是作為『數據/地址』總線使用的選擇開關了。當多路開關與下面接通時,P0口是作為普通的I/O口使用的,當多路開關是與上面接通時,P0口是作為『地址/數據』總線使用的。

輸出驅動部份:P0口的輸出是由兩個MOS管組成的推拉式結構,也就是說,這兩個MOS管一次只能導通一個,當V1導通時,V2就截止,當V2導通時,V1截止。

P0口作為I/O埠使用時,多路開關的控制信號為0(低電平),V1管截止,多路開關是與鎖存器的Q非端相接的(即P0口作為I/O口線使用)。作為地址/數據線使用時,多路開關的控制信號為1,V1管由地址/數據線決定,多路開關與地址/數據線連接。

輸出過程:

1、I/O輸出工作過程:當寫鎖存器信號CP有效,數據總線的信號→鎖存器的輸入端D→鎖存器的反向輸出Q非端→多路開關→V2管的極→V2的漏極到輸出端P0.X。這時多路開關的控制信號為低電平0,V1管是截止的,所以作為輸出口時,P0是漏極開路輸出,類似於OC門,當驅動上接電流負載時,需要外接上拉電阻
下圖就是由內部數據總線向P0口輸出數據的流程圖(紅色箭頭)。

2、地址輸出過程

控制信號為1,地址信號為「0」時,與門輸出低電平,V1管截止;反相器輸出高電平,V2管導通,輸出引腳的地址信號為低電平。

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

可見,在輸出「地址/數據」信息時,V1、V2管是交替導通的,負載能力很強,可以直接與外設存儲器相連,無須增加總線驅動器。

3、作為數據總線的輸出過程

如果該指令是輸出數據,如MOVX @DPTR,A(將累加器的內容通過P0口數據總線傳送到外部RAM中),則多路開關「控制」信號為『1』,「與門」解鎖,與輸出地址信號的工作流程類似,數據據由「地址/數據」線→反相器→V2場效應管柵極→V2漏極輸出。

輸入過程:

1、I/O讀引腳工作過程:
讀晶片引腳上的數據時,讀引腳緩衝器打開,通過內部數據總線輸入,請看下圖(紅色簡頭)。

2、I/O讀鎖存器工作過程:

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

3、地址/數據時讀指令碼和數據過程

作為數據總線使用。在訪問外部程序存儲器時,P0口輸出低8位地址信息後,將變為數據總線,以便讀指令碼(輸入)。在取指令期間,「控制」信號為「0」,V1管截止,多路開關也跟著轉向鎖存器反相輸出端Q非;CPU自動將0FFH(11111111,即向D鎖存器寫入一個高電平『1』)寫入P0口鎖存器,使V2管截止,在讀引腳信號控制下,通過讀引腳三態門電路將指令碼讀到內部總線,這個過程和I/O讀引腳過程是一樣的。

在輸入狀態下,從鎖存器和從引腳上讀來的信號一般是一致的,但也有例外。例如,當從內部總線輸出低電平後,鎖存器Q=0,Q非=1,場效應管T2開通,埠線呈低電平狀態。此時無論埠線上外接的信號是低電乎還是高電平,從引腳讀入單片機的信號都是低電平,因而不能正確地讀入埠引腳上的信號。又如,當從內部總線輸出高電平後,鎖存器Q=1,Q非=0,場效應管T2截止。如外接引腳信號為低電平,從引腳上讀入的信號就與從鎖存器讀入的信號不同。為此,8031單片機在對埠P0一P3的輸入操作上,有如下約定:為此,8051單片機在對埠P0一P3的輸入操作上,有如下約定:凡屬於讀-修改-寫方式的指令,從鎖存器讀入信號,其它指令則從埠引腳線上讀入信號。讀-修改-寫指令的特點是,從埠輸入(讀)信號,在單片機內加以運算(修改)後,再輸出(寫)到該埠上。這樣安排的原因在於讀-修改-寫指令需要得到埠原輸出的狀態,修改後再輸出,讀鎖存器而不是讀引腳,可以避免因外部電路的原因而使原埠的狀態被讀錯。當P0作為地址/數據總線使用時,在讀指令碼或輸入數據前,CPU自動向P0口鎖存器寫入0FFH,破壞了P0口原來的狀態。因此,不能再作為通用的I/O埠。在系統設計時務必注意,即程序中不能再含有以P0口作為操作數(包含源操作數和目的操作數)的指令。

二、P1埠的結構及工作原理

由圖可見,P1埠與P0埠的主要差別在於,P1埠用內部上拉電阻R代替了P0埠的場效應管T1,並且輸出的信息僅來自內部總線。由內部總線輸出的數據經鎖存器反相和場效應管反相後,鎖存在埠線上,所以,P1埠是具有輸出鎖存的靜態口。要正確地從引腳上讀入外部信息,必須先使場效應管關斷,以便由外部輸入的信息確定引腳的狀態。為此,在作引腳讀入前,必須先對該埠寫入l。具有這種操作特點的輸入/輸出埠,稱為準雙向I/O口。8051單片機的P1、P2、P3都是準雙向口。P0埠由於輸出有三態功能,輸入前,埠線已處於高阻態,無需先寫入l後再作讀操作。單片機復位後,各個埠已自動地被寫入了1,此時,可直接作輸入操作。如果在應用埠的過程中,已向P1一P3埠線輸出過0,則再要輸入時,必須先寫1後再讀引腳,才能得到正確的信息。此外,隨輸入指令的不同,P1埠也有讀鎖存器與讀引腳之分。

三、P2埠的結構及工作原理:

由圖可見,P2埠在片內既有上拉電阻,又有切換開關MUX,所以P2埠在功能上兼有P0埠和P1埠的特點。這主要表現在輸出功能上,當切換開關向下接通時,從內部總線輸出的一位數據經反相器和場效應管反相後,輸出在埠引腳線上;當多路開關向上時,輸出的一位地址信號也經反相器和場效應管反相後,輸出在埠引腳線上。
對於8031單片機必須外接程序存儲器才能構成應用電路(或者我們的應用電路擴展了外部存儲器),而P2埠就是用來周期性地輸出從外存中取指令的地址(高8位地址),因此,P2埠的多路開關總是在進行切換,分時地輸出從內部總線來的數據和從地址信號線上來的地址。因此P2埠是動態的I/O埠。輸出數據雖被鎖存,但不是穩定地出現在埠線上。其實,這裡輸出的數據往往也是一種地址,只不過是外部RAM的高8位地址。
在輸入功能方面,P2埠與P0和H埠相同,有讀引腳和讀鎖存器之分,並且P2埠也是準雙向口。
可見,P2埠的主要特點包括:
①不能輸出靜態的數據;
②自身輸出外部程序存儲器的高8位地址;
②執行MOVX指令時,還輸出外部RAM的高位地址,故稱P2埠為動態地址埠。

即然P2口可以作為I/O口使用,也可以作為地址總線使用,下面我們就分析下它的兩種工作狀態。

1、作為I/O埠使用時的工作過程
當沒有外部程序存儲器或雖然有外部數據存儲器,但容易不大於256B,即不需要高8位地址時(在這種情況下,不能通過數據地址寄存器DPTR讀寫外部數據存儲器),P2口可以I/O口使用。這時,「控制」信號為「0」,多路開關轉向鎖存器同相輸出端Q,輸出信號經內部總線→鎖存器同相輸出端Q→反相器→V2管柵極→V2管9漏極輸出。
由於V2漏極帶有上拉電阻,可以提供一定的上拉電流,負載能力約為8個TTL與非門;作為輸出口前,同樣需要向鎖存器寫入「1」,使反相器輸出低電平,V2管截止,即引腳懸空時為高電平,防止引腳被鉗位在低電平。讀引腳有效後,輸入信息經讀引腳三態門電路到內部數據總線。

2、作為地址總線使用時的工作過程
P2口作為地址總線時,「控制」信號為『1』,多路開關車向地址線(即向上接通),地址信息經反相器→V2管柵極→漏極輸出。由於P2口輸出高8位地址,與P0口不同,無須分時使用,因此P2口上的地址信息(程序存儲器上的A15~A8)功數據地址寄存器高8位DPH保存時間長,無須鎖存。

四、P3埠的結構及工作原理

P3口是一個多功能口,它除了可以作為I/O口外,還具有第二功能,P3埠的一位結構見下圖

上圖可見,P3埠和Pl埠的結構相似,區別僅在於P3埠的各埠線有兩種功能選擇。當處於第一功能時,第二輸出功能線為1,此時,內部總線信號經鎖存器和場效應管輸入/輸出,其作用與P1埠作用相同,也是靜態準雙向I/O埠。當處於第二功能時,鎖存器輸出1,通過第二輸出功能線輸出特定的內含信號,在輸入方面,即可以通過緩衝器讀入引腳信號,還可以通過替代輸入功能讀入片內的特定第二功能信號。由於輸出信號鎖存並且有雙重功能,故P3埠為靜態雙功能埠。

使P3端品各線處於第二功能的條件是:

1、串行I/O處於運行狀態(RXD,TXD);

2、打開了處部中斷(INT0,INT1);

3、定時器/計數器處於外部計數狀態(T0,T1)

4、執行讀寫外部RAM的指令(RD,WR)

在應用中,如不設定P3埠各位的第二功能(WR,RD信號的產生不用設置),則P3埠線自動處於第一功能狀態,也就是靜態I/O埠的工作狀態。在更多的場合是根據應用的需要,把幾條埠線設置為第二功能,而另外幾條埠線處於第一功能運行狀態。在這種情況下,不宜對P3埠作字節操作,需採用位操作的形式。

四、驅動能力

P0埠能驅動8個LSTTL負載。如需增加負載能力,可在P0總線上增加總線驅動器。P1,P2,P3埠各能驅動4個LSTTL負載。由於P0-P3埠已映射成特殊功能寄存器中的P0一P3埠寄存器,所以對這些埠寄存器的讀/寫就實現了信息從相應埠的輸入/輸出。例如:
MOV A, P1 ;把Pl埠線上的信息輸入到A
MoV P1, A ;把A的內容由P1埠輸出
MOV P3, #0FFH ;使P3埠線各位置l

相關焦點

  • 單片機原理|定時器/計數器的工作原理及應用作業
    單片機內有()個16位的定時/計數器,每個定時/計數器都有()種工作方式。單片機的定時器T1作定時方式,用模式1,則工作方式控制字為( )。6MHz,設定時器工作在方式1需要定時1ms,則定時器初值應為( )。
  • MCS-51單片機的結構和工作原理
    3.1 概述:MCS-51單片機晶片有許多種:      如8051、8031、8751、80C51、80C31等。3.4 MCS-51單片機時鐘電路及CPU的工作時序:3.4.1 時鐘電路1、NMOS型單
  • 單片機I/O口的擴展
    單片機I/O (輸入/輸出)接口是其與外設交換數字信息的橋梁。事實上,真正用作I/O口線的只有P1口的8位I/O線和P3口的某些位線。在多數應用系統中,MCS-51單片機都需要外擴I/O接口電路。I/O埠:簡稱I/O口,指具有埠地址的寄存器或緩衝器。I/O接口:是指單片機與外設間的I/O接口晶片。
  • 單片機實驗報告與心得體會
    單片機論壇http://www.51hei.com/bbs/ 發布的單片機實驗板,通過計算機連接仿真器在實驗板上把硬體和軟體結合起來一起調試,軟體的修改也非常方便,軟體和硬體調試都通過後,把程序固化在 eprom當中,插上8051單片機構成一個完整的單片機應用系統。
  • 結合單片機學習板學習c語言之流水燈製作--intrins.h頭文件
    》*/  #include"at89x51.h"  //#include"reg51.h"  #include "intrins.h"  #include  sfr ISP_CONTR =0xE7;  delay_05s()  {  int i;  i=647395;
  • 8051單片機指令定義詳解——ACALL addr11(1)
    8051單片機指令定義詳解——(ACALL addr11)符號說明本文引用地址:http://www.eepw.com.cn 8個工作寄存器之一
  • MCS-51單片機P0埠的結構及工作原理
    多路開關:在51單片機中,當內部的存儲器夠用(也就是不需要外擴展存儲器時,這裡講的存儲器包括數據存儲器及程序存儲器)時,P0口可以作為通用的輸入輸出埠(即I/O)使用,對於8031(內部沒有ROM)的單片機或者編寫的程序超過了單片機內部的存儲器容量,需要外擴存儲器時,P0口就作為『地址/數據』總線使用。
  • 8051單片機指令系統的用法介紹
    打開APP 8051單片機指令系統的用法介紹 21ic 發表於 2019-10-04 17:00:00 8051的指令系統共有111條指令,由42種助記符和7種尋址方式組合而成。 8051的指令通常包括操作碼,和操作數兩部分。操作碼規定指令進行什麼操作,採用助記表示;操作數表示指令的操作對象。 彙編語言指令的基本形式是:操作碼助記符 目的操作數,源操作數。 操作碼助記符與操作數分開書寫,操作數中目的操作數在前,源操作數在後,操作數之間用逗號分隔。
  • 8051單片機特殊功能存儲器SFR基礎詳解
    8051單片機共有21個專用寄存器,現把其中部分寄存器簡單介紹如下:程序計數器(PC—Program Counter)。在實訓中,我們已經知道PC是一個16位的計數器,它的作用是控制程序的執行順序。
  • 8051單片機模塊化編程技巧
    目前在8051 單片機應用開發中主要有兩種程式語言:彙編語言和C51 語言。
  • 下載 | 《單片機C語言程序設計實訓100例–基於8051 PROTEUS仿真》
    內容介紹:第一章用簡短篇幅介紹8051單片機的特點、應用,以及Keil C語言程序設計,在語言程序設計中重點介紹8051內部資源;第二章介紹Proteus的入門操作;第三~五章全部為單片機的目錄第1章 單片機C語言程序設計概述1.1 8051單片機引腳1.2 數據與程序內存1.3 特殊功能寄存器1.4 外部中斷、定時器/計數器及串口應用1.5 有符號與無符號數應用、數位分解、位操作1.6 變量、存儲類型與存儲模式
  • 單片機定時器工作原理_單片機定時器工作方式_單片機定時器作用
    定時器使相當多需要人控制時間的工作變得簡單了許多。人們甚至將定時器用在了軍事方面,製成了定時炸彈,定時雷管。現在的不少家用電器都安裝了定時器來控制開關或工作時間。   定時器在單片機中是一個重點,今天我們來介紹一下關於單片機定時器的工作原理、工作方式以及單片機定時器的作用。
  • TMS320VC5410A I/O口的多種擴展與I2C接口模擬
    hpi接口有8位數據線hd0-hd7可以用來作為通用i/o口,通用i/o口的擴展是通過兩個專用寄存器gpiocr(通用i/o口控制寄存器)和gpiosr(通用i/o口狀態寄存器)的控制來實現的。下面對圖2和圖3所示的兩個寄存器的配置進行闡述。
  • 單片機小白學步(22) IO口:蜂鳴器的使用/三極體的工作原理
    前面我們說了,單片機IO口能通過的電流是有限的,過大的電流可能會燒壞管腳,或者不能正常工作。蜂鳴器和LED相比最主要的區別,就是蜂鳴器比LED需要的電流大很多,電壓一般也會高一些。為了讓單片機驅動蜂鳴器,也就是控制蜂鳴器工作,我們需要使用一些特別的電路。不知道大家是否了解繼電器,繼電器的特點就是用小電流低電壓,控制大電流高電壓電路。
  • 《單片機原理與應用》習題集(上)
    1-8 新型8位單片機主要在哪些方面有所發展?給應用系統帶來什麼好處?第二章 單片機系統組成原理2-1 什麼是單片機?它與一般的微型計算機在結構上有何區別?2-4 在內部RAM中,4組工作寄存器使用時如何選用?位尋址區域的字節地址範圍是多少?2-5 程序狀態字PSW的作用是什麼?常用標誌有哪些位?作用是什麼?
  • 單片機採樣模擬量數據的工作原理是怎樣的
    打開APP 單片機採樣模擬量數據的工作原理是怎樣的 雄哥談科技 發表於 2020-02-06 17:19:16 (文章來源:雄哥談科技)        單片機的ADC接口屬於模數轉換接口,將外部的模擬量信號轉化為數位訊號,單片機屬於數字器件,需將模擬信號轉化為數位訊號才能夠為單片機處理。
  • 8051單片機C語言數據採集程序
    /8051單片機TLC1549數據採集程序原始碼//單片機:At89S52本文引用地址:http://www.eepw.com.cn/article/201612/325242.htm//連接類型:232 |
  • 51單片機IO口工作原理——P2、P3
    對於8031單片機必須外接程序存儲器才能構成應用電路(或者我們的應用電路擴展了外部存儲器),而P2埠就是用來周期性地輸出從外存中取指令的地址(高8位地址),因此,P2埠的多路開關總是在進行切換,分時地輸出從內部總線來的數據和從地址信號線上來的地址。因此P2埠是動態的I/O埠。
  • lcd1602中文資料分享:lcd1602接線圖_lcd1602與單片機連接圖
    lcd1602中文資料---1602LCD主要技術參數        顯示容量:16×2個字符 ;晶片工作電壓:4.5—5.5V ;工作電流:2.0mA(5.0V);模塊最佳工作電壓:5.0V ;字符尺寸:2.95×4.35(W×H)mm。
  • OLED顯示模塊與C8051F單片機的接口設計
    直接訪問方式是將模塊接口作為存儲器或i/o設備直接掛在mcu總線上,mcu以訪問存儲器或i/o設備方式對模塊進行操作,間接訪問方式是mcu通過軟體模擬控制時序對模塊進行操作。這裡介紹的是cygnal c8051f020單片機與vgs12864e的間接訪問接口設計。 c8051f020是美國cygnal公司推出的一種混合信號soc型號8位單片機,是集成度很高的混合信號系統級的晶片。