上節(jié)課我們提到了單片機(jī) IO 口的其中一種“準(zhǔn)雙向 IO”的內(nèi)部結(jié)構(gòu),實(shí)際上我們的單片機(jī) IO 口還有另外三種狀態(tài),分別是開漏、推挽、高阻態(tài),我們通過圖9-1來(lái)分析下另外這三種狀態(tài)。
http://wiki.jikexueyuan.com/project/mcu-tutorial-two/images/24.png" alt="" />
圖9-1 單片機(jī) IO 結(jié)構(gòu)示意圖
前邊我們簡(jiǎn)單介紹“準(zhǔn)雙向 IO”的時(shí)候,我們是用三極管來(lái)說(shuō)明的,出于嚴(yán)謹(jǐn)?shù)膽B(tài)度,我們這里按照實(shí)際情況用 MOS 管畫圖示意。實(shí)際上三極管是靠電流導(dǎo)通的,而 MOS 管是靠電壓導(dǎo)通的,具體緣由和它們的內(nèi)部構(gòu)造有關(guān)系,在這里我們暫且不必關(guān)心,如果今后有必要了解可以直接查找模擬電子書或者百度相關(guān)資料進(jìn)行細(xì)致學(xué)習(xí)。在單片機(jī) IO 口狀態(tài)這一塊內(nèi)容上,我們可以把 MOS 管當(dāng)三極管來(lái)理解。在圖9-1中,T1 相當(dāng)于一個(gè) PNP 三極管,T2 相當(dāng)于一個(gè) NPN 三極管。
其中準(zhǔn)雙向 IO 口原理已經(jīng)講過了,開漏輸出和準(zhǔn)雙向 IO 的唯一區(qū)別,就是開漏輸出把內(nèi)部的上拉電阻去掉了。開漏輸出如果要輸出高電平時(shí),T2 關(guān)斷,IO 電平要靠外部的上拉電阻才能拉成高電平,如果沒有外部上拉電阻 IO 電平就是一個(gè)不確定態(tài)。標(biāo)準(zhǔn)51單片機(jī)的 P0 口默認(rèn)就是開漏輸出,如果要用的時(shí)候外部需要加上拉電阻。而強(qiáng)推挽輸出就是有比較強(qiáng)的驅(qū)動(dòng)能力,如圖9-1中第三張小圖,當(dāng)內(nèi)部輸出一個(gè)高電平時(shí),通過 MOS 管直接輸出電流,沒有電阻的限流,電流輸出能力也比較大;如果內(nèi)部輸出一個(gè)低電平,那反向電流也可以很大,強(qiáng)推挽的一個(gè)特點(diǎn)就是驅(qū)動(dòng)能力強(qiáng)。
單片機(jī) IO 還有一種狀態(tài)叫高阻態(tài)。通常我們用來(lái)做輸入引腳的時(shí)候,可以將 IO 口設(shè)置成高阻態(tài),高阻態(tài)引腳本身如果懸空,用萬(wàn)用表測(cè)量的時(shí)候可能是高可能是低,它的狀態(tài)完全取決于外部輸入信號(hào)的電平,高阻態(tài)引腳對(duì) GND 的等效電阻很大(理論上相當(dāng)于無(wú)窮大,但實(shí)際上總是有限值而非無(wú)窮大),所以稱之為高阻。
這就是單片機(jī)的 IO 口的四種狀態(tài),在我們51單片機(jī)的學(xué)習(xí)過程中,主要應(yīng)用的是準(zhǔn)雙向 IO 口,隨著我們學(xué)習(xí)的深入,其它狀態(tài)也會(huì)有接觸,在這里介紹給大家學(xué)習(xí)一下。