單片機(jī)讀端口與讀引腳的區(qū)別
不是P0口、P1口的“口”,而是鎖存器的Q端口,也就是讀鎖存器Q端的輸出信號(hào)然后送
三態(tài)緩沖器輸入,經(jīng)過緩沖器輸出到單片機(jī)內(nèi)部總線。而讀引腳則是直接把芯片引腳上
的外部數(shù)據(jù),經(jīng)過三態(tài)緩沖器把數(shù)據(jù)放到內(nèi)部總線。
例如,用MOV進(jìn)行讀引腳操作:
MOV P1,0FFH
MOV A,P1
編程時(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)通的,
所以無論外部輸入1還是0,都會(huì)產(chǎn)生拉電流,拉為低電平,從而無法正確判斷外部輸入
的是1還是0.嚴(yán)重的話,如果拉電流過大,還可能燒壞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截止,通過漏極上拉電阻輸出高電平,
不會(huì)影響外部輸入電平(相當(dāng)于和外部輸入邏輯與)。
評(píng)論