新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)讀端口與讀引腳的區(qū)別

單片機(jī)讀端口與讀引腳的區(qū)別

作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
把I/O口作為輸入口使用時(shí),是“讀引腳”,不同于“讀端口”。注意,讀端口的“口”
不是P0口、P1口的“口”,而是鎖存器的Q端口,也就是讀鎖存器Q端的輸出信號(hào)然后送
三態(tài)緩沖器輸入,經(jīng)過(guò)緩沖器輸出到單片機(jī)內(nèi)部總線。而讀引腳則是直接把芯片引腳上
的外部數(shù)據(jù),經(jīng)過(guò)三態(tài)緩沖器把數(shù)據(jù)放到內(nèi)部總線。

例如,用MOV進(jìn)行讀引腳操作:

MOV P1,0FFH ;注意首先把P1引腳置為高電平
MOV A,P1 ;P1作為輸入口,讀P1口信號(hào)到A

編程時(shí)須先置I/O口引腳為高電平的原因如下(請(qǐng)查看口電路結(jié)構(gòu)圖):

51單片機(jī)的P0口是雙向口,P1~3口是準(zhǔn)雙向口,其I/O口引腳都和單片機(jī)內(nèi)部的場(chǎng)效應(yīng)管
FET漏極連接。首先我們不妨假設(shè)init時(shí)引腳為低電平(我不知道單片機(jī)reset時(shí)
引腳缺省電平是低還是高?還是不定?),即FET漏極為低電平,因?yàn)榇藭r(shí)FET是導(dǎo)通的,
所以無(wú)論外部輸入1還是0,都會(huì)產(chǎn)生拉電流,拉為低電平,從而無(wú)法正確判斷外部輸入
的是1還是0.嚴(yán)重的話,如果拉電流過(guò)大,還可能燒壞FET。

因此,init時(shí)只好將引腳設(shè)為高電平,例如MOV P1,0FFH,由單片機(jī)口電路的結(jié)構(gòu)圖可以
看出,這條指令的內(nèi)部電路邏輯是這樣的:
先把0FFH放到內(nèi)部總線,鎖存器輸入端(D端)從內(nèi)部總線取數(shù)據(jù),鎖存,然
后從Q非端輸出到FET極,顯然此時(shí)Q非為0,F(xiàn)ET截止,通過(guò)漏極上拉電阻輸出高電平,
不會(huì)影響外部輸入電平(相當(dāng)于和外部輸入邏輯與)。


關(guān)鍵詞: 單片機(jī)讀端口讀引

評(píng)論


技術(shù)專區(qū)

關(guān)閉