1. 程式人生 > >51微控制器---IO口 (準雙向口和雙向口的區別)

51微控制器---IO口 (準雙向口和雙向口的區別)

P0口:雙向8位三態I/O口

P1口:準雙向8位I/O口

P2口:準雙向8位I/O口

P3口:準雙向8位I/O口

這裡特別要主要準雙向與雙向三態I/O的區別:

P1口,P2口,P3口是3個8位準雙向的I/O口,各口線在片內均有固定的上拉電阻,當這三個準雙向I/O口作輸入口使用時,要想該口先寫1,另外準雙向I/O口無高阻的“浮空”狀態。

而雙向口P0口線內無固定上拉電阻,由兩個MOS管串接,既可開漏輸出(開漏輸出)有可處於高阻的“浮空”狀態,故稱為雙向三態I/O口。​

"準"就是"基本上"的意思.

P0口是雙向指的是它被用作地址/資料埠時,只有在這個時候,P0口才處於兩個開關管推輓狀態,當兩個開關管都關閉時,才會出現高阻狀態.

當P0口用於一般I/O口時,內部接Vcc的那個開關管是與引腳(埠)脫離聯絡的,這個時候,只有拉地的那個開關管其作用,P0口作為輸出,是必須外接上拉電阻的,不然就無法輸出高電平;如果P0口作為輸入,則必須先對埠寫1,使拉地的開關管斷開,這個時候,如果不接上拉電阻,則是高阻狀態,就是一個雙向口,如果接上拉電阻,則本身輸出高電平,對輸入訊號的邏輯無影響(注意是對邏輯無影響,對實際引數有無影響我不確定,但是我認為是有的).

雙向與準雙向,根本原則是雙向包含了高阻這個狀態,而不在於是否需要先寫1或者不寫,P1~P3口因為有內部上拉電阻,因此無論如何不是雙向;P0口內部無上拉電阻,在處於資料/地址功能時,自動完成3態的轉換,是雙向,處於一般I/O口時,如果不接外部上拉,而且先向埠寫了1,那麼就處於高阻狀態,此時,它也是一個人為的雙向口,這與它處於地址/資料功能時的自動雙向有區別,以及與P1~P3處於輸入時輸出鎖存器為1是有區別的。