51單片機(jī)的P0口工作原理詳細(xì)講解
2、作為地址/數(shù)據(jù)復(fù)用口使用時(shí)的工作原理
在訪問(wèn)外部存儲(chǔ)器時(shí)P0口作為地址/數(shù)據(jù)復(fù)用口使用。
這時(shí)多路開(kāi)關(guān)‘控制’信號(hào)為‘1’,‘與門(mén)’解鎖,‘與門(mén)’輸出信號(hào)電平由“地址/數(shù)據(jù)”線信號(hào)決定;多路開(kāi)關(guān)與反相器的輸出端相連,地址信號(hào)經(jīng)“地址/數(shù)據(jù)”線→反相器→V2場(chǎng)效應(yīng)管柵極→V2漏極輸出。
例如:控制信號(hào)為1,地址信號(hào)為“0”時(shí),與門(mén)輸出低電平,V1管截止;反相器輸出高電平,V2管導(dǎo)通,輸出引腳的地址信號(hào)為低電平。請(qǐng)看下圖(蘭色字體為電平):
反之,控制信號(hào)為“1”、地址信號(hào)為“1”,“與門(mén)”輸出為高電平,V1管導(dǎo)通;反相器輸出低電平,V2管截止,輸出引腳的地址信號(hào)為高電平。請(qǐng)看下圖(蘭色字體為電平):
可見(jiàn),在輸出“地址/數(shù)據(jù)”信息時(shí),V1、V2管是交替導(dǎo)通的,負(fù)載能力很強(qiáng),可以直接與外設(shè)存儲(chǔ)器相連,無(wú)須增加總線驅(qū)動(dòng)器。
P0口又作為數(shù)據(jù)總線使用。在訪問(wèn)外部程序存儲(chǔ)器時(shí),P0口輸出低8位地址信息后,將變?yōu)閿?shù)據(jù)總線,以便讀指令碼(輸入)。
在取指令期間,“控制”信號(hào)為“0”,V1管截止,多路開(kāi)關(guān)也跟著轉(zhuǎn)向鎖存器反相輸出端Q非;CPU自動(dòng)將0FFH(11111111,即向D鎖存器寫(xiě)入一個(gè)高電平‘1’)寫(xiě)入P0口鎖存器,使V2管截止,在讀引腳信號(hào)控制下,通過(guò)讀引腳三態(tài)門(mén)電路將指令碼讀到內(nèi)部總線。請(qǐng)看下圖
如果該指令是輸出數(shù)據(jù),如MOVX @DPTR,A(將累加器的內(nèi)容通過(guò)P0口數(shù)據(jù)總線傳送到外部RAM中),則多路開(kāi)關(guān)“控制”信號(hào)為‘1’,“與門(mén)”解鎖,與輸出地址信號(hào)的工作流程類(lèi)似,數(shù)據(jù)據(jù)由“地址/數(shù)據(jù)”線→反相器→V2場(chǎng)效應(yīng)管柵極→V2漏極輸出。
如果該指令是輸入數(shù)據(jù)(讀外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器),如MOVX A,@DPTR(將外部RAM某一存儲(chǔ)單元內(nèi)容通過(guò)P0口數(shù)據(jù)總線輸入到累加器A中),則輸入的數(shù)據(jù)仍通過(guò)讀引腳三態(tài)緩沖器到內(nèi)部總線,其過(guò)程類(lèi)似于上圖中的讀取指令碼流程圖。
通過(guò)以上的分析可以看出,當(dāng)P0作為地址/數(shù)據(jù)總線使用時(shí),在讀指令碼或輸入數(shù)據(jù)前,CPU自動(dòng)向P0口鎖存器寫(xiě)入0FFH,破壞了P0口原來(lái)的狀態(tài)。因此,不能再作為通用的I/O端口。大家以后在系統(tǒng)設(shè)計(jì)時(shí)務(wù)必注意,即程序中不能再含有以P0口作為操作數(shù)(包含源操作數(shù)和目的操作數(shù))的指令。
51單片機(jī)相關(guān)文章:51單片機(jī)教程
評(píng)論