1.準雙向口輸出數據時:
準雙向口輸出類型可用作輸出和輸入功能而不需重新配置口線輸出狀態。這是因為當口線輸出為1時驅動能力很弱,允許外部裝置將其拉低。當引腳輸出為低時,它的驅動能力很強,可吸收相當大的電流。準雙向口有3個上拉晶體管適應不同的需要。在3個上拉晶體管中,有1個“極弱上拉”,當口線鎖存為1時打開。當引腳懸空時,這個極弱的上拉源產生很弱的上拉電流將引腳上拉為高電平。第2個上拉晶體管稱為“弱上拉”,當口線寄存器為1且引腳本身也為1時打開。此上拉提供基本驅動電流使準雙向口輸出為1。如果一個引腳輸出為1而由外部裝置下拉到低時,弱上拉關閉而“極弱上拉”維持開狀態,為了把這個引腳強拉為低,外部裝置必須有足夠的灌電流能力使引腳上的電壓將到門檻電壓以下。第3個上拉晶體管稱為“強上拉”。當口線鎖存器由0到1跳變時,這個上拉用來加快準雙向口由邏輯0到邏輯1轉換。當發生這種情況時,強上拉打開約2個機器周期以使引腳能夠迅速地上拉到高電平。準雙向口輸出如下圖所示,
那么以上介紹的輸出狀態,我們可以通過設置STC單片機的相關特殊寄存器實現。
2.當準雙向口作為輸入引腳時(讀取引腳狀態)
此時我們首先需要將口所存數據“1”,這是為什么呢?大家仔細分析下這個電路,當口所存數據“0”時,強上拉的下面的管是導通的,那么端口引腳就相當與地直接相連,這樣高電平信號將會被強制拉低輸入數據將無法正確檢測!