開篇
MCS51單片機有4個8位的並行I/O端口,分別爲P0、P1、P2、P3。
每個端口都包括一個同名的特殊功能寄存器、一個輸出驅動器和輸入緩衝器。
講解順序爲 P1–> P3 --> P0 --> P2
P1口
P1 口具有通用I/O口方式,可實現輸出,讀引腳(輸入)和讀鎖存器三種功能。
輸出方式:
單片機執行寫P1口的指令(就是你的C51程序命令),如果你讓某位的數據爲1,根據高1低0,那麼可判斷輸出爲高電平,反之爲低電平。 (詳解:如果某位的數據爲1,則該爲鎖存器輸出端Q=1–>-Q=0 --> V截止,從而在引腳上P1.n 上輸出高電平。)
讀引腳方式:
在讀引腳之前,爲了防止V接通零線變成低電平,所以在讀引腳之前,必須先用輸出指令置Q=1,_Q爲0讓V截止。以免出現外面(輸入的數據)是高電平,讀進來是低電平。
解釋完這裏,輸出方式那裏也是融會貫通了。
因爲P1口作爲輸入口時是有條件的(要先寫1),而輸出時是無條件的,因此,被P1口被稱爲準雙向口。
讀鎖存器:
P3口
P3口的特點:
除通用的I/O口功能外(P1口的功能),還能實現第二功能口功能。
P3口作爲準雙向通用口,作爲通用輸入口時應先先使P3.n–>1 ,作爲通用輸出口時應先使第二輸出 端–>1.
P0口
P0口的功能:
在CPU控制信號的作用下,可以作爲通用的I/O口進行數據的輸入輸出,也可以作爲單片機系統的地址/數據線使用。
作爲通用I/O口使用:CPU使控制端保持“0”電平
P0口的重點:
科普:漏極開路輸出一般情況下都需要外接上拉電阻,才能輸出高電平。
在使用I/O口功能時,爲了能正常改變電平的變化,需要外接一個上拉電阻。地址/數據分時複用方式時無需外接上拉電阻;
P0口具有地址/數據分時複用方式,可實現地址/數據輸出、數據輸入兩種功能;
分時複用方式的數據輸入時無需程序寫1操作。
P2口
P2口的功能特點
與P1口相比就多了數據控制單元、一個多路開關MUX。P2可以實現通用I/O口和地址輸出兩種功能。
工作方式:
用作通用I/O口時,在“控制端”的作用下,多路開關向下打連接至鎖存器實現通用功能。
注意:用作通用I/O口時,P2口無需外接上拉電阻。
用作地址輸出時,MUX在CPU的控制下轉向“地址線”一端,使“地址端”信號與P2.n電平同 相 變化。
總結
1.P0~P3口 都可作爲準雙向通用I/O口;
2.其中只有P0口需要外接上拉電阻;
3.在需要擴展片外設備時,P2口可作爲其地址線接口;
4.P0口可作爲其地址線/數據線複用接口,此時它是真正的雙向口。