51單片機管腳說明(一)
各端口工作原理講解
并行端口
P0端口
總線I/O端口,雙向,三態(tài),數(shù)據(jù)地址分時復用,該端口除用于數(shù)據(jù)的輸入/輸出外,在8031單片機外接程序存儲器時,還分時地輸出/輸入地址/指令。由Po端口輸出的信號無鎖存,輸入的信息有讀端口引腳和讀端口鎖存器之分。P0端口8位中的一位結(jié)構(gòu)圖見下圖:
由上圖可見,P0端口由鎖存器、輸入緩沖器、切換開關(guān)與相應(yīng)控制電路、場效應(yīng)管驅(qū)動電路構(gòu)成。
在輸出狀態(tài)下,當切換開關(guān)MUX向下時,從內(nèi)部總線來的數(shù)據(jù)經(jīng)鎖存器反相和場效應(yīng)管T2反相,輸出到端口引腳線上。此時,場效應(yīng)管T1關(guān)斷,因而這種輸出方式應(yīng)為外接上拉電阻的漏極開路式。當切換開關(guān)MUX向上時,一位地址/數(shù)據(jù)信號分時地輸出到端口線上。此外,由T1、T2的通斷組合,形成高電平、低電平與高阻浮動三態(tài)的輸出。
在輸入狀態(tài)下,從鎖存器和從引腳上讀來的信號一般是一致的,但也有例外。例如,當從內(nèi)部總線輸出低電平后,鎖存器Q=0,Q=1,場效應(yīng)管T2開通,端口線呈低電平狀態(tài)。此時無論端口線上外接的信號是低電乎還是高電平,從引腳讀入單片機的信號都是低電平,因而不能正確地讀入端口引腳上的信號。又如,當從內(nèi)部總線輸出高電平后,鎖存器Q=1,Q=0,場效應(yīng)管T2截止。如外接引腳信號為低電平,從引腳上讀入的信號就與從鎖存器讀入的信號不同。為此,8031單片機在對端口P0一P3的輸入操作上,有如下約定:為此,8031單片機在對端口P0一P3的輸入操作上,有如下約定:凡屬于讀-修改-寫方式的指令,從鎖存器讀入信號,其它指令則從端口引腳線上讀入信號。
讀-修改-寫指令的特點是,從端口輸入(讀)信號,在單片機內(nèi)加以運算(修改)后,再輸出(寫)到該端口上。下面是幾條讀--修改-寫指令的例子。
這樣安排的原因在于讀-修改-寫指令需要得到端口原輸出的狀態(tài),修改后再輸出,讀鎖存器而不是讀引腳,可以避免因外部電路的原因而使原端口的狀態(tài)被讀錯。
P0端口是8031單片機的總線口,分時出現(xiàn)數(shù)據(jù)D7一D0、低8位地址A7一AO,以及三態(tài),用來接口存儲器、外部電路與外部設(shè)備。P0端口是使用最廣泛的I/O端口。
P1端口:
通用I/0端口,準雙向靜態(tài)口。輸出的信息有鎖存,輸入有讀引腳和讀鎖存器之分。P1端口的一位結(jié)構(gòu)見下圖. 由圖可見,P1端口與P0端口的主要差別在于,P1端口用內(nèi)部上拉電阻R代替了P0端口的場效應(yīng)管T1,并且輸出的信息僅來自內(nèi)部總線。由內(nèi)部總線輸出的數(shù)據(jù)經(jīng)鎖存器反相和場效應(yīng)管反相后,鎖存在端口線上,所以,P1端口是具有輸出鎖存的靜態(tài)口。
由下圖可見,要正確地從引腳上讀入外部信息,必須先使場效應(yīng)管關(guān)斷,以便由外部輸入的信息確定引腳的狀態(tài)。為此,在作引腳讀入前,必須先對該端口寫入l。具有這種操作特點的輸入/輸出端口,稱為準雙向I/O口。8031單片機的P1、P2、P3都是準雙向口。P0端口由于輸出有三態(tài)功能,輸入前,端口線已處于高阻態(tài),無需先寫入l后再作讀操作。
單片機復位后,各個端口已自動地被寫入了1,此時,可直接作輸入操作。如果在應(yīng)用端口的過程中,已向P1一P3端口線輸出過0,則再要輸入時,必須先寫1后再讀引腳,才能得到正確的信息。此外,隨輸入指令的不同,H端口也有讀鎖存器與讀引腳之分。
Pl端口是803l單片機中唯一僅有的單功能I/O端口,并且沒有特定的專用功能,輸出信號鎖存在引腳上,故又稱為通用靜態(tài)口。
評論