51單片機的P0口工作原理詳細講解
P0口用作I/O口線(xiàn),其由引腳向內部數據總線(xiàn)輸入(即輸入狀態(tài)Input)的工作過(guò)程:
數據輸入時(shí)(讀P0口)有兩種情況
1、讀引腳
讀芯片引腳上的數據,讀引腳數時(shí),讀引腳緩沖器打開(kāi)(即三態(tài)緩沖器的控制端要有效),通過(guò)內部數據總線(xiàn)輸入,請看下圖(紅色簡(jiǎn)頭)。

2、讀鎖存器
通過(guò)打開(kāi)讀鎖存器三態(tài)緩沖器讀取鎖存器輸出端Q的狀態(tài),請看下圖(紅色箭頭):

在輸入狀態(tài)下,從鎖存器和從引腳上讀來(lái)的信號一般是一致的,但也有例外。例如,當從內部總線(xiàn)輸出低電平后,鎖存器Q=0,Q非=1,場(chǎng)效應管T2開(kāi)通,端口線(xiàn)呈低電平狀態(tài)。此時(shí)無(wú)論端口線(xiàn)上外接的信號是低電乎還是高電平,從引腳讀入單片機的信號都是低電平,因而不能正確地讀入端口引腳上的信號。又如,當從內部總線(xiàn)輸出高電平后,鎖存器Q=1,Q非=0,場(chǎng)效應管T2截止。如外接引腳信號為低電平,從引腳上讀入的信號就與從鎖存器讀入的信號不同。為此,8031單片機在對端口P0一P3的輸入操作上,有如下約定:為此,8051單片機在對端口P0一P3的輸入操作上,有如下約定:凡屬于讀-修改-寫(xiě)方式的指令,從鎖存器讀入信號,其它指令則從端口引腳線(xiàn)上讀入信號。
讀-修改-寫(xiě)指令的特點(diǎn)是,從端口輸入(讀)信號,在單片機內加以運算(修改)后,再輸出(寫(xiě))到該端口上。下面是幾條讀--修改-寫(xiě)指令的例子。
ANL P0,#立即數;P0→立即數P0
ORL P0,A ;P0→AP0
INC P1 ;P1+1→P1
DEC P3 ;P3-1→P3
CPL P2 ;P2→P2
這樣安排的原因在于讀-修改-寫(xiě)指令需要得到端口原輸出的狀態(tài),修改后再輸出,讀鎖存器而不是讀引腳,可以避免因外部電路的原因而使原端口的狀態(tài)被讀錯。
P0端口是8031單片機的總線(xiàn)口,分時(shí)出現數據D7一D0、低8位地址A7一AO,以及三態(tài),用來(lái)接口存儲器、外部電路與外部設備。P0端口是使用最廣泛的I/O端口。
評論