P0.0——P0.7是P0口的8位雙向口線。第一功能為基本輸入輸出;第二功能是在系統(tǒng)擴(kuò)展時(shí),分時(shí)做為數(shù)據(jù)總路線和低8位地址總線。這里重點(diǎn)介紹一下P0口的結(jié)構(gòu)及其工作過(guò)程:P0口的1位(例如:P0.0)結(jié)構(gòu)如圖
本文引用地址:http://www.ex-cimer.com/article/201611/322199.htm
它由一個(gè)輸出鎖存器、兩個(gè)三態(tài)鎖存器(1、2)、輸出控制電路(一個(gè)非門(mén)(3)、一個(gè)與門(mén)(4)、一個(gè)多路控制開(kāi)關(guān)(MUX))、輸出驅(qū)動(dòng)電路(兩只場(chǎng)效應(yīng)管Q1、Q2)組成。
功能1:做基本I/O口使用
CPU發(fā)出的控制信號(hào)為低電平,使多路控制開(kāi)關(guān)MUX接通B端,即與輸出鎖存器的“!Q”連接,同時(shí)使與門(mén)輸出為低電平,場(chǎng)效應(yīng)管Q1截止。
當(dāng)P0輸出數(shù)據(jù)時(shí),寫(xiě)信號(hào)加在鎖存器的R引腳上,內(nèi)部總線上的數(shù)據(jù)通過(guò)S腳由鎖存器的“!Q”端反相輸出到Q2的柵極。若內(nèi)部總線上數(shù)據(jù)為1,則Q2柵極上為0,此時(shí)Q2截止,Q2處于漏極開(kāi)路的開(kāi)漏狀態(tài),因此為了保證P0.0輸出高電平,必須外接上拉電阻,否則P0端口不能正常工作!若內(nèi)部總線上數(shù)據(jù)為0,則Q2柵極為1,此時(shí)Q2導(dǎo)通,P0.0輸出低電平。
當(dāng)P0輸入數(shù)據(jù)時(shí),分為讀引腳和讀鎖存器兩種方式,分別用到兩個(gè)輸入緩沖器。
讀引腳操作,即單片機(jī)執(zhí)行端口輸入指令(如MOV A,P0)時(shí)的操作。這時(shí)由“讀引腳”信號(hào)將三態(tài)緩沖器2打開(kāi),引腳上的數(shù)據(jù)經(jīng)三態(tài)緩沖器2輸入到內(nèi)部總線。
讀鎖存器操作,即單片機(jī)執(zhí)行“讀—修改—寫(xiě)”類指令(如ANL A,P0)時(shí)的操作。在執(zhí)行這類指令時(shí),由“讀鎖存器”信號(hào)使三態(tài)鎖存器1打開(kāi),讀入P0口在鎖存器中的數(shù)據(jù),然后與累加器A中的數(shù)據(jù)進(jìn)行邏輯運(yùn)算,再反結(jié)果寫(xiě)回到P0口。這類操作不直接從P0口引腳上讀入數(shù)據(jù),而是從鎖存器Q端讀數(shù)據(jù),其目的是為了防止出錯(cuò),確保得到正確結(jié)果
功能2:系統(tǒng)擴(kuò)展時(shí)分時(shí)做為數(shù)據(jù)總路線和低8位地址總線
此時(shí)控制信號(hào)為高電平,多路轉(zhuǎn)換開(kāi)關(guān)MUX接通A端,且與門(mén)的輸出由“地址/數(shù)據(jù)”端的狀態(tài)決定。
評(píng)論