目錄
- 1.概述
- 2.P0端口
- 2.1 概述
- 2.2 P0端口用作輸出端口的工作原理
- 2.3 P0端口用作輸入端口的工作原理
- 2.4 P0端口用作地址/數(shù)據(jù)總線的工作原理
- 3.P1端口
- 3.1 概述
- 3.2 P1端口用作輸出端口的工作原理
- 3.3 P1端口用作輸入端口的工作原理
- 4.P2端口
- 4.1 概述
- 4.2 P2端口用作輸出端口的工作原理
- 4.3 P2端口用作輸入端口的工作原理
- 4.4 P2端口用作地址總線引腳的工作原理
- 5.P3端口
- 5.1 概述
- 5.2 P3端口用作輸出端口的工作原理
- 5.3 P3端口用作輸入端口的工作原理
- 5.4 當(dāng)P3端口用作第二功能時
1.概述
單片機(jī)的I/O端口是輸入信號和輸出信號的通道。8051單片機(jī)有P0、P1、P2、P3四組I/O 端口,每組端口有8個引腳。
2.P0端口
2.1 概述
P0端口有P0.0~P0.7共8個引腳,這些引腳除了可用作輸入引腳和輸出引腳外,在外接存儲器時,還可用作地址/數(shù)據(jù)總線引腳。P0端口每個引腳的內(nèi)部電路結(jié)構(gòu)都相同,其內(nèi)部電路結(jié)構(gòu)如圖1所示。
圖1 P0端口的內(nèi)部電路結(jié)構(gòu)圖
2.2 P0端口用作輸出端口的工作原理
下面講解單片機(jī)需要從P0.x 引腳輸出高電平“1”。如圖1所示,單片機(jī)內(nèi)部相關(guān)電路通過控制線送出“0(低電平)”到與門的一個輸入端和電子開關(guān)的控制端,控制線上的“0”一方面使與門關(guān)閉(即與門的一端為“0”時,不管另一端輸入何種信號,輸出都為“0”),晶體管VT1柵極為“0”處于截止,地址/數(shù)據(jù)線送來的信號無法通過與門和晶體管VT1;控制線上的“0”另一方面控制電子開關(guān),讓電子開關(guān)與鎖存器的端連接。CPU 再從內(nèi)部總線送高電平“1”到鎖存器的D端,同時往鎖存器的CL端送寫鎖存器信號,D端的“1”馬上存入鎖存器并從Q和端輸出,D 端輸入“1”,Q 端輸出“1”,端則輸出“0”,端輸出“0”經(jīng)電子開關(guān)送到晶體管VT2的柵極,VT2截止,由于VT1也處于截止,P0.x引腳處于懸浮狀態(tài),因此需要在P0.x引腳上接上拉電阻,在VT2截止時,P0.x引腳輸出高電平。
下面講解單片機(jī)需要從P0.x 引腳輸出高電平“0”。如圖1所示,單片機(jī)內(nèi)部相關(guān)電路通過控制線送出“0(低電平)”到與門的一個輸入端和電子開關(guān)的控制端,控制線上的“0”一方面使與門關(guān)閉(即與門的一端為“0”時,不管另一端輸入何種信號,輸出都為“0”),晶體管VT1柵極為“0”處于截止,地址/數(shù)據(jù)線送來的信號無法通過與門和晶體管VT1;控制線上的“0”另一方面控制電子開關(guān),讓電子開關(guān)與鎖存器的端連接。CPU 再從內(nèi)部總線送高電平“0”到鎖存器的D端,同時往鎖存器的CL端送寫鎖存器信號,D端的“0”馬上存入鎖存器并從Q和端輸出,D 端輸入“0”,Q 端輸出“0”,端則輸出“1”,端輸出“1”經(jīng)電子開關(guān)送到晶體管VT2的柵極,VT2導(dǎo)通,由于VT1處于截止,P0.x引腳處于懸浮狀態(tài),因此需要在P0.x引腳上接上拉電阻,在VT2導(dǎo)通時,P0.x引腳輸出低電平。
總的來說,當(dāng)單片機(jī)需要將P0端口用作輸出端口時,內(nèi)部CPU會送控制信號“0”到與門和電子開關(guān),與門關(guān)閉(上晶體管VT1同時截止,將地址/數(shù)據(jù)線與輸出電路隔開),電子開關(guān)將鎖存器與輸出電路連接,然后CPU通過內(nèi)部總線往P0端口鎖存器送數(shù)據(jù)和寫鎖存器信號,數(shù)據(jù)通過鎖存器、電子開關(guān)和輸出電路從P0端口的引腳輸出。在P0端口用作輸出端口時,內(nèi)部輸出電路的上晶體管處于截止(開路),下晶體管的漏極處于開路狀態(tài)(稱為晶體管開漏),因此需要在P0端口引腳接外部上拉電阻,否則無法可靠輸出“1”或“0”。
2.3 P0端口用作輸入端口的工作原理
如圖1所示,當(dāng)單片機(jī)需要將P0端口用作輸入端口時,內(nèi)部CPU會先往P0端口鎖存器寫入“1”(往鎖存器D端送“1”,同時給CL端送寫鎖存器信號),讓,VT2截止,關(guān)閉輸出電路。P0端口引腳輸入的信號送到輸入三態(tài)門的輸入端,此時CPU再給三態(tài)門的控制端送讀引腳控制信號,輸入三態(tài)門打開,P0端口引腳輸入的信號就可以通過三態(tài)門送到內(nèi)部總線。
如果單片機(jī)的CPU需要讀取P0端口鎖存器的值(或稱讀取鎖存器存儲的數(shù)據(jù)),會送讀鎖存器控制信號到三態(tài)門(上方的三態(tài)門),三態(tài)門打開,P0鎖存器的值(Q 值)經(jīng)三態(tài)門送到內(nèi)部總線。
2.4 P0端口用作地址/數(shù)據(jù)總線的工作原理
如圖1所示, 如果要將P0端口用作地址/數(shù)據(jù)總線,單片機(jī)內(nèi)部相關(guān)電路會通過控制線發(fā)出“1”,讓與門打開,讓電子開關(guān)和非門輸出端連接。當(dāng)內(nèi)部地址/數(shù)據(jù)線為“1”時,“1”一方面通過與門送到 VT1的柵極,VT1導(dǎo)通,另一方面送到非門,反相后變?yōu)椤?”,經(jīng)電子開關(guān)送到VT2的柵極,VT2截止,VT1導(dǎo)通,P0端口引腳輸出為“1”;當(dāng)內(nèi)部地址/數(shù)據(jù)線為“0”時,VT1截止,VT2導(dǎo)通,P0端口引腳輸出“0”。
總的來說,當(dāng)單片機(jī)需要將P0端口用作地址/數(shù)據(jù)總線時,CPU會給與門和電子開關(guān)的控制端送“1”,與門打開,將內(nèi)部地址/數(shù)據(jù)線與輸出電路的上晶體管 VT1接通,電子開關(guān)切斷輸出電路與鎖存器的連接,同時將內(nèi)部地址/數(shù)據(jù)線經(jīng)非門反相后與輸出電路的下晶體管VT1接通,這樣VT1、VT2狀態(tài)相反,讓P0端口引腳能穩(wěn)定輸出數(shù)據(jù)或地址信號(1或0)。
3.P1端口
3.1 概述
P1端口有P1.0~P1.7共8個引腳,這些引腳可作輸入引腳和輸出引腳。P1端口每個引腳的內(nèi)部電路結(jié)構(gòu)都相同,其內(nèi)部電路結(jié)構(gòu)如圖2所示。P1端口的結(jié)構(gòu)較P0端口簡單很多,其輸出電路采用了一個晶體管,在晶體管的漏極接了一只內(nèi)部上拉電阻,所以在 P1端口引腳外部可以不接上拉電阻。
圖2 P1端口的內(nèi)部結(jié)構(gòu)電路圖
3.2 P1端口用作輸出端口的工作原理
如圖2所示,當(dāng)需要將P1端口用作輸出端口時,單片機(jī)內(nèi)部相關(guān)電路除了會往給鎖存器的D端送數(shù)據(jù)外,還會往鎖存器CL端送寫鎖存器信號,內(nèi)部總線送來的數(shù)據(jù)通過D端進(jìn)入鎖存器并從Q和端輸出,當(dāng)D端輸入“1”,則端輸出“0”(Q端輸出“1”),端的“0”送到晶體管的柵極,晶體管截止,從P1端口引腳輸出“1”。 當(dāng)D端輸入“0”,則端輸出“1”(Q端輸出“0”),端的“1”送到晶體管的柵極,晶體管導(dǎo)通,從P1端口引腳輸出“0”。
3.3 P1端口用作輸入端口的工作原理
如圖2所示,當(dāng)需要將 P1端口用作輸入端口時,單片機(jī)內(nèi)部相關(guān)電路會先往 P1鎖存器寫“1”,讓Q=1、,會使晶體管截止,關(guān)閉P1端口的輸出電路,然后CPU往輸入三態(tài)門控制端送一個讀引腳控制信號,輸入三態(tài)門打開,從 P1端口引腳輸入的信號經(jīng)輸入三態(tài)門送到內(nèi)部總線。
4.P2端口
4.1 概述
P2端口有P2.0~P2.7共8個引腳,這些引腳除了可用作輸入引腳和輸出引腳外,在外接存儲器時,還可用作地址總線(高8位)引腳。P2端口每個引腳的內(nèi)部電路結(jié)構(gòu)都相同,其內(nèi)部電路結(jié)構(gòu)如圖3所示。
圖3 P2端口內(nèi)部結(jié)構(gòu)電路圖
4.2 P2端口用作輸出端口的工作原理
如圖3所示,當(dāng)需要將P2端口用作I/O端口時,單片機(jī)內(nèi)部相關(guān)電路會送控制信號到電子開關(guān)的控制端,讓電子開關(guān)與P2鎖存器的Q端連接。若要將P2端口用作輸出端口,CPU會通過內(nèi)部總線將數(shù)據(jù)送到鎖存器的D端,同時給鎖存器的CL端送寫鎖存器信號,D端數(shù)據(jù)存入鎖存器并從Q端輸出,再通過電子開關(guān)、非門和晶體管從P2端口引腳輸出。
4.3 P2端口用作輸入端口的工作原理
如圖3所示,當(dāng)需要將P2端口用作I/O端口時,單片機(jī)內(nèi)部相關(guān)電路會送控制信號到電子開關(guān)的控制端,讓電子開關(guān)與P2鎖存器的Q端連接。若要將P2端口用作輸入端口,CPU會先往P2鎖存器寫“1”,讓Q=1、,Q=1會使晶體管截止,關(guān)閉P2端口的輸出電路,然后CPU往輸入三態(tài)門控制端送一個讀引腳控制信號,輸入三態(tài)門打開,從P2端口引腳輸入的信號經(jīng)輸入三態(tài)門送到內(nèi)部總線。
4.4 P2端口用作地址總線引腳的工作原理
如圖3所示,如果要將 P2端口用作地址總線引腳,單片機(jī)內(nèi)部相關(guān)電路會發(fā)出一個控制信號到電子開關(guān)的控制端,讓電子開關(guān)與內(nèi)部地址線接通,地址總線上的信號就可以通過電子開關(guān)、非門和晶體管后從P2端口引腳輸出。
5.P3端口
5.1 概述
P3端口有P3.0~P3.7共8個引腳,P3端口除了可用作輸入引腳和輸出引腳外,還具有第二功能。P3端口每個引腳的內(nèi)部電路結(jié)構(gòu)都相同,其內(nèi)部電路結(jié)構(gòu)如圖4所示。
圖4 P3端口內(nèi)部結(jié)構(gòu)電路圖
5.2 P3端口用作輸出端口的工作原理
如圖4所示,當(dāng)需要將P3端口用作I/O端口時,單片機(jī)內(nèi)部相關(guān)電路會送出“1”到與非門的一個輸入端(第二功能輸出端),打開與非門(與非門的特點(diǎn)是:一個輸入端為“1”時,輸出端與另一個輸入端狀態(tài)始終相反)。若要將P3端口用作輸出端口,CPU給鎖存器的CL端送寫鎖存器信號,內(nèi)部總線送來的數(shù)據(jù)通過D端進(jìn)入鎖存器并從Q端輸出,再通過與非門和晶體管兩次反相后從P3端口引腳輸出。
5.3 P3端口用作輸入端口的工作原理
如圖4所示,當(dāng)需要將P3端口用作I/O端口時,單片機(jī)內(nèi)部相關(guān)電路會送出“1”到與非門的一個輸入端(第二功能輸出端),打開與非門(與非門的特點(diǎn)是:一個輸入端為“1”時,輸出端與另一個輸入端狀態(tài)始終相反)。若要將P2端口用作輸入端口,CPU會先往P3鎖存器寫“1”,讓Q=1,與非門輸出“0”,晶體管截止,關(guān)閉P3端口的輸出電路,然后CPU往輸入三態(tài)門控制端送一個讀引腳控制信號,輸入三態(tài)門打開,從P3端口引腳輸入的信號經(jīng)過輸入緩沖器和輸入三態(tài)門送到內(nèi)部總線。
5.4 當(dāng)P3端口用作第二功能時
P3端口的每個引腳都有第二功能,具體見下表。P0端口用作第二功能(又稱復(fù)用功能)時,實(shí)際上也是在該端口輸入或輸出信號,只不過輸入、輸出的是一些特殊功能的信號。當(dāng)單片機(jī)需要將 P3 端口用作第二功能輸出信號(如、信號)時,CPU 會先往P3 鎖存器寫“1”, Q=1,它送到與非門的一個輸入端,與非門打開,內(nèi)部的第二功能輸出信號送到與非門的另一個輸入端,反相后輸出去晶體管的柵極,經(jīng)晶體管再次反相后從 P0端口引腳輸出。當(dāng)單片機(jī)需要將P3端口用作第二功能輸入信號(如T0、T1信號)時,CPU也會往P3鎖存器寫“1”,Q=1,同時第二功能輸出端也為“1”,與非門輸出為“0”,晶體管截止,關(guān)閉輸出電路,P0端口引腳輸入的第二功能信號經(jīng)輸入緩沖器送往特定的電路(如T0、T1計(jì)數(shù)器)。
評論