通過前面的輸入輸出的內容(LED控制與按鍵的使用),我們對控制I/O口有了一個基本的了解。如果需要輸出高低電平,可以對該引腳進行寫"1"或者"0";如果需要讀取I/O的電平,直接判斷該引腳是高電平或者低電平既可。
在程序上對P0 ~ P3的輸入輸出控制是一樣的,但實際上它們內部結構是不一樣的,下面是P0~P3的內部結構圖。
雙向I/O與準雙向I/O
從P0~P3的內部結構圖可以看出,P0口內部沒有上拉電阻。當用作I/O口時,CONTROL輸出為0,ADDRDATA部分不起作用,P0口為開漏(Open Drain)如下圖紅色部分不需要考慮。
而P1~P3口均有輸出引腳均有上拉( internal pull-up),以P1為例,下圖紅色方框選中的部分。
引腳內部為開漏的結構電路被稱為雙向I/O,有上拉的內部結構稱為準雙向I/O。
雙向I/O的輸入輸出:
輸出:可以輸出低電平,不能高電平(如果需要輸出高電平,引腳端需要在外部接上拉電路,驅動能力強)。
輸入:可以讀取高電平也可以讀取低電平。
準雙向I/O:
輸出:可以輸出低電平,也可以輸出高電平(輸出高電平時,驅動能力不強。)
輸入:可以讀取高電平也可以讀取低電平。
實際上所有的I/O都可以在引腳的外部接上拉電阻,增強I/O口的驅動能力,如下圖所示為一個最小的單機最小系統原理圖。
需要注意,使用單片機內部上拉時,電流的方向會從單片機流向外部(圖1);外接上拉,電流方向會從外部流向內部(圖2)。前者稱為拉電流,后者稱為灌電流。
圖1
圖2
總結:
1)P0~P3內部的結構不相同;
2)P0口作為I/O口,需要輸入高電平需要外接上拉電路。
3)開漏引腳稱為雙向I/O口,上拉引腳稱為準雙向I/O口。
4)電流從單片機流向外部稱為上拉電流,外部流向單片機稱為灌電流。
-
led
+關注
關注
242文章
23355瀏覽量
663160 -
單片機
+關注
關注
6043文章
44621瀏覽量
638495 -
51單片機
+關注
關注
274文章
5705瀏覽量
124292 -
引腳
+關注
關注
16文章
1220瀏覽量
50898
發布評論請先 登錄
相關推薦
評論