關(guān)于51單片機P0口的結(jié)構(gòu)及上拉問題
1.P0作為地址數(shù)據(jù)總線時,V1和V2是一起工作的,構(gòu)成推挽結(jié)構(gòu)。高電平時,V1打開,V2截止;低電平時,V1截止,V2打開。這種情況下不用外接上拉電阻。而且,當V1打開,V2截止,輸出高電平的時候,因為內(nèi)部電源直接通過V1輸出到P0口線上,因此驅(qū)動能力(電流)可以很大,這就是為什么教科書上說可以"驅(qū)動8個TTL負載"的原因。
2.P0作為一般端口時,V1就永遠的截止,V2根據(jù)輸出數(shù)據(jù)0導(dǎo)通和1截止,導(dǎo)通時拉地,當然是輸出低電平;截止時,PO口就沒有輸出了,(注意,這種情況就是所謂的高阻浮空狀態(tài)),如果加上外部上拉電阻,輸出就變成了高電平1。
3.其他端口P1 P2 P3,在內(nèi)部直接將P1口中的V1換成了上拉電阻,所以不用外接,但內(nèi)部上拉電阻太大,電流太小,有時因為電流不夠,也會再并一個上拉電阻。
4.在某個時刻,P0口上輸出的是作為總線的地址數(shù)據(jù)信號還是作為普通I/O口的電平信號,是依靠多路開關(guān)MUX來切換的.而MUX的切換,又是根據(jù)單片機指令來區(qū)分的.當指令為外部存儲器/IO口讀/寫時,比如 MOVX A,@DPTR ,MUX是切換到地址/數(shù)據(jù)總線上;而當普通MOV傳送指令操作P0口時,MUX是切換到內(nèi)部總線上的.
PS:
Because Ports 1, 2, and 3 have fixed internal pullups, they are sometimes called “quasi- bidirectional” ports.
因為端口1、2、3有固定的內(nèi)部上拉,所以有時候他們被稱為"準雙向"口.
Port 0, on the other hand, is considered “true” bidirectional, because when configured as an input it floats.
端口0, 從另外一方面來說,就被 認為是"真正的"雙向,因為當它被設(shè)置為輸入的時候是浮空(高阻態(tài))的.
編輯:admin 最后修改時間:2018-05-18