官术网_书友最值得收藏!

1.1 傳統型8051單片機簡介

圖1-1給出了8051單片機的不同封裝形式及引腳。本節先來看一下8051單片機的4個雙向輸入/輸出(I/O)端口引腳、控制引腳、晶振及電源引腳。

圖1-1 8051單片機的不同封裝形式及引腳

圖1-2給出了8051單片機的4個8位并行端口P0、P1、P2、P3的位結構。這些端口都是雙向的,每個端口位均包含兩個三態輸入緩沖器、一個輸出鎖存器及一個場效應管(FET)驅動器,其中P0端口位還包含一個上拉場效應管。位結構中的兩個輸入緩沖器分別受內部“讀鎖存器”和“讀引腳”信號控制,位鎖存器用典型的D觸發器表示。

當CPU發出“寫鎖存器”信號到D觸發器CL端時,內部總線的值將送入D觸發器。

當CPU發出“讀鎖存器”信號到緩沖器1時,觸發器Q端輸出至內部總線上。

當CPU發送“讀引腳”信號到緩沖器2時,外部引腳輸入值將置于內部總線上。

一些指令讀端口時將激活“讀鎖存器”信號,另一些指令則激活“讀引腳”信號。對于“讀—改—寫”這樣的指令操作,CPU發出的將是“讀鎖存器”信號。具體執行“讀鎖存器”還是“讀引腳”將由CPU根據不同指令自動處理。有關細節將在1.4節“特殊功能寄存器”中討論。

1. P0端口

P0端口位結構如圖1-2(a)所示,包含輸入緩沖器、鎖存器、切換開關(MUX)、非門、與門、上拉場效應管T1、驅動場效應管T2。由該圖可知,P0端口具有雙重工作方式,既可作為普通I/O端口(General I/O Port),也可作為地址/數據總線(Address/Data Bus)。

圖1-2 8051單片機的4個8位并行端口位結構

1)作為普通I/O端口

在“普通I/O端口”方式下,CPU發出控制電平“0”使與門輸出“0”,T1截止,同時使MUX接通下面的觸點,使端連通T2柵極,內部總線與P0端口同相。由于上拉場效應管T1截止,輸出驅動場效應管T2漏極開路,故而P0端口要外接上拉電阻。

下面分別說明P0端口在“普通I/O端口”方式下的輸出與輸入操作。

輸出操作:以3.3節“花樣流水燈”為例,8只LED陰極接P0,而陽極通過限流電阻接VCC引腳,這一組限流電阻同時扮演了上拉電阻的角色。如果將這一組LED陽極接P0端口,而陰極串接限流電阻后接GND引腳,盡管P0端口仍然在輸出0、1序列,但8只LED卻無法實現演示效果,因為場效應管T2沒有上拉電阻。此時可仍將LED陽極接P0端口,而陰極接GND,電阻則改為一端接P0端口,另一端接VCC引腳。

輸入操作:如果此前內部總線剛剛輸出了低電平,此時鎖存器Q=0,=1,驅動場效應管T2導通,P0端口呈現低電平,此時無論P0端口外部信號是“1”還是“0”,從P0端口引腳讀取的信號都將為“0”,這顯然將無法正確讀取P0端口引腳信號。

故而,在執行輸入操作前,應先向P0端口鎖存器寫“1”,D觸發器的端輸出“0”使T2截止,外部引腳處于懸浮(Float/FLT)狀態,變為高阻抗輸入狀態(此時T1也是截止的)。

在3.10節“繼電器及雙向晶閘管控制照明設備”中,使用P0.0作為K1按鍵輸入信號引腳,P0.0引腳外接了上拉電阻(因為T1截止,T2漏極開路),但讀取按鍵輸入信號前,整個源代碼中并未出現向P0.0引腳寫“1”的操作。這是因為8051單片機上電時默認已經向所有端口(P0、P1、P2、P3)全部寫入“1”,在仿真調試時觀察到初始時LED0不亮(為灰色),這顯然就是因為初始上電時,內部默認寫入P0端口鎖存器的“1”已經截止了T2。

2)作為地址/數據總線

P0端口作為地址/數據總線是通過CPU內部寫控制信號“1”實現的。該信號使MUX連接上面的觸點,“地址/數據”信號通過非門連接到T2的柵極。由于控制信號為“1”,“地址/數據”信號通過與門連接T1的柵極,實際上相當于“直接”或稱“同相”連接到T1的柵極。下面分別說明在“地址/數據總線”方式下的輸出與輸入操作。

輸出操作:輸出的“地址/數據”信號將通過與門驅動T1,并同時通過非門驅動T2。例如,在輸出信號“0”時,T1截止,T2導通;反之,在輸出信號“1”時,T1導通,T2截止,從而以推挽方式實現信號輸出。

輸入操作:從外部設備讀取輸入“數據”信號時,“數據”信號將通過緩沖器2進入內部總線。在“數據”信號輸入時,CPU將通過寫控制信號“0”使T1截止,此時相當于瞬間又自動回到了“普通I/O端口”方式,隨即CPU自動向P0端口鎖存器寫控制信號“1”截止T2,并通過“讀引腳”控制緩沖器讀取“外部數據”信號,此時的“普通I/O端口”方式與此前討論過的“普通I/O端口”方式有兩個差別:一是無須外部上拉,二是向P0端口鎖存器寫控制信號“1”截止T2的操作是自動完成的。

在“地址/數據總線”方式下,數據總線(D0~D7)及地址總線的低8位(A0~A7)信號分時復用P0端口,地址總線的低8位信號在地址鎖存允許(Address Latch Enable,ALE)信號的下降沿時被鎖存到外部地址鎖存器中(如74LS373),地址總線的高8位信號則通過P2端口輸出,不經過鎖存器。緊接著的數據輸出或輸入操作將在/P3.6及/P3.7的自動控制下完成。

小結:P0端口在“普通I/O端口”方式下為準雙向口,因為P0端口在輸出“0”后被改為輸入端口時,要先輸出“1”,然后才能成為輸入端口。P0端口在“地址/數據總線”方式下為真正的雙向I/O端口。

2. P1端口

P1端口是通用的準雙向I/O端口,由一個輸出鎖存器、兩個三態輸入緩沖器和一個輸出驅動場效應管及內部上拉電阻組成。P1端口與P0端口作為普通I/O端口時的原理相似,相當于P0省去了與門、非門、MUX,且上拉場效應管T1由內部上拉電阻代替。P1端口無須外接上拉電阻,與P0端口作為普通I/O端口時的操作一樣,作為輸入端口時,除了初始時無須使P1端口寫“1”以截止驅動場效應管以外,如果P1端口曾輸出信號“0”,則每當P1由輸出端口改為輸入端口時,都要先輸出信號“1”以截止場效應管,然后才能成為輸入端口。

3. P2端口

P2端口與P1端口相比多出了一個轉換控制部分,當P2端口與P0端口配合作為“地址/數據總線”方式下的高8位地址線(A8~A15)時,CPU將寫控制信號“1”使MUX切換到右邊。在“地址/數據總線”方式下,無論P2端口中剩余多少引腳,均不能被用于普通I/O端口的操作。

反之,CPU通過寫控制信號“0”將MUX切換到左邊,使之工作于“普通I/O端口”方式。P2端口作為“普通I/O端口”時,P2端口鎖存器Q端通過非門驅動場效應管,相當于P1的端直接驅動場效應管。在“普通I/O端口”方式下,P2端口與P1端口同為準雙向I/O端口。

4. P3端口

P3端口為具有雙重功能的I/O端口,與P1端口相比,增加了第二輸入/輸出功能。

在P3端口作為普通I/O端口時,CPU將第二輸出功能控制線信號保持為“1”,鎖存器Q端通過與非門(此時等價于非門)驅動場效應管,相當于P1端口通過端直接驅動場效應管,或相當于P2端口通過Q端經非門驅動場效應管。在這種方式下,對P3端口的讀/寫操作與P1、P2的相同。

下面接著討論P3端口處于第二輸入/輸出功能時的相關操作。

當P3端口處于第二輸出功能時,CPU自動向P3端口鎖存器寫“1”,由于Q=1,與非門相當于一個非門,此時P3端口輸出第二功能信號。例如,通過TXD引腳輸出的SBUF寄存器串行數據及引腳輸出的讀/寫控制信號。

當P3端口處于第二輸入功能時,CPU除自動向P3端口鎖存器寫“1”,置Q=1以外,還將向第二功能輸出線寫“1”,以保證Q端和第二功能輸出線經過與非門后輸出“0”,以使場效應管T截止,此時所讀取的P3端口引腳信號將通過緩沖器3直接進入第二功能輸入端。例如,RXD、INT0、INT1、T0、T1引腳信號將通過第二功能輸入端分別進入單片機內部的串行模塊、外部中斷處理模塊、定時/計數器模塊進行處理。

在下述情況下,P3相應引腳將處于第二功能狀態。

? 啟動串行通信模塊(RXD/TXD)。

? 使能外部中斷輸入()。

? 定時/計數器配置為外部計數狀態(T0/T1)。

? 訪問外部擴展存儲器或接口擴展器件()。

在P3端口處于第二功能狀態時,P3.0~P3.7引腳分別對應于RXD、TXD、、T0、T1、引腳。第3章有關串口、外部中斷及定時/計數器的案例分別涉及RXD、TXD、、T0、T1,第4章有關62256存儲器擴展案例涉及了引腳,它們用于總線控制。

5. 8051單片機的其他相關引腳

傳統8051單片機的控制引腳有RST、ALE//VPP,其中RST(Reset)引腳連接系統復位電路,在Proteus中RST引腳未連接復位電路時不影響仿真,ALE引腳在存儲器擴展和I/O端口擴展時使用,引腳用于選擇程序從內部或外部ROM執行。

傳統8051單片機的XTAL1、XTAL2引腳通常連接12MHz或11.0592MHz晶體振蕩器(簡稱晶振),在串行通信案例中多數選擇11.0592MHz晶振。Proteus默認晶振連接時不影響仿真運行,這是因為晶振頻率可在芯片屬性中設置。主電源引腳VSS、VCC分別接GND和+5V電源,在Proteus仿真電路中,電源引腳全部默認被連接。

主站蜘蛛池模板: 会昌县| 嘉祥县| 谢通门县| 哈巴河县| 勃利县| 新兴县| 陇西县| 阳信县| 广东省| 年辖:市辖区| 仁布县| 灵丘县| 瑞金市| 周至县| 门源| 大兴区| 大石桥市| 景德镇市| 黄浦区| 凌海市| 拜泉县| 调兵山市| 宁河县| 延边| 平定县| 环江| 扶绥县| 台江县| 富宁县| 新兴县| 夹江县| 汝州市| 尚义县| 梧州市| 安达市| 海南省| 海城市| 凤山县| 泉州市| 汽车| 闸北区|