51單片機 P0口工作原理詳細講解
P0口又作為數(shù)據(jù)總線使用。在訪問外部程序存儲器時,P0口輸出低8位地址信息后,將變?yōu)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/數(shù)據(jù)總線">數(shù)據(jù)總線,以便讀指令碼(輸入)。
在取指令期間,“控制”信號為“0”,V1管截止,多路開關(guān)也跟著轉(zhuǎn)向鎖存器反相輸出端Q非;CPU自動將0FFH(11111111,即向D鎖存器寫入一個高電平‘1’)寫入P0口鎖存器,使V2管截止,在讀引腳信號控制下,通過讀引腳三態(tài)門電路將指令碼讀到內(nèi)部總線。請看下圖
如果該指令是輸出數(shù)據(jù),如MOVX @DPTR,A(將累加器的內(nèi)容通過P0口數(shù)據(jù)總線傳送到外部RAM中),則多路開關(guān)“控制”信號為‘1’,“與門”解鎖,與輸出地址信號的工作流程類似,數(shù)據(jù)據(jù)由“地址/數(shù)據(jù)”線→反相器→V2場效應(yīng)管柵極→V2漏極輸出。
如果該指令是輸入數(shù)據(jù)(讀外部數(shù)據(jù)存儲器或程序存儲器),如MOVX A,@DPTR(將外部RAM某一存儲單元內(nèi)容通過P0口數(shù)據(jù)總線輸入到累加器A中),則輸入的數(shù)據(jù)仍通過讀引腳三態(tài)緩沖器到內(nèi)部總線,其過程類似于上圖中的讀取指令碼流程圖。
通過以上的分析可以看出,當(dāng)P0作為地址/數(shù)據(jù)總線使用時,在讀指令碼或輸入數(shù)據(jù)前,CPU自動向P0口鎖存器寫入0FFH,破壞了P0口原來的狀態(tài)。因此,不能再作為通用的I/O端口。大家以后在系統(tǒng)設(shè)計時務(wù)必注意,即程序中不能再含有以P0口作為操作數(shù)(包含源操作數(shù)和目的操作數(shù))的指令。
51單片機相關(guān)文章:51單片機教程
存儲器相關(guān)文章:存儲器原理
評論