1、 8bitMCU 通用I/O 結構圖
端口模塊如下圖(79系列圖):
2、相關設置寄存器及注意事項:
端口控制寄存器
xxHH | 第7位 | 第6位 | 第5位 | 第4位 | 第3位 | 第2位 | 第1位 | 第0位 |
PxCR (xxH, Bank0) | PxCR.7 | PxCR.6 | PxCR.5 | PxCR.4 | PxCR.3 | PxCR.2 | PxCR.1 | PxCR.0 |
讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 |
復位值(POR/WDT/LVR/PIN) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
位編號 | 位符號 | 說明 |
7-0 |
PxCRy x = 0-7,y = 0-7 |
端口輸入/輸出控制寄存器 0:輸入模式 1:輸出模式 |
PxCR寄存器控制I/O輸入輸出狀態設置。
當寄存器設置成輸入模式時,Px寄存器讀取的是端口電平狀態。
當寄存器設置成輸出模式時,Px寄存器讀取的是數據寄存器的值。
如有未使用到的I/O,需要設置輸出固定電平以免I/O浮動電平帶來的漏電流。
端口上拉電阻控制寄存器
xxH | 第7位 | 第6位 | 第5位 | 第4位 | 第3位 | 第2位 | 第1位 | 第0位 |
PxPCR (xxH, Bank0) | PxPCR.7 | PxPCR.6 | PxPCR.5 | PxPCR.4 | PxPCR.3 | PxPCR.2 | PxPCR.1 | PxPCR.0 |
讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 |
復位值 (POR/WDT/LVR/PIN) |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
位編號 | 位符號 | 說明 |
7-0 |
PxPCRy x = 0-7,y = 0-7 |
輸入端口內部上拉電阻控制 0:內部上拉電阻關閉 1:內部上拉電阻開啟 |
端口數據寄存器
xxH | 第7位 | 第6位 | 第5位 | 第4位 | 第3位 | 第2位 | 第1位 | 第0位 |
Px (xxH, Bank0) | Px.7 | Px.6 | Px.5 | Px.4 | Px.3 | Px.2 | Px.1 | Px.0 |
讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 |
復位值(POR/WDT/LVR/PIN) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
位編號 | 位符號 | 說明 |
7-0 |
Px.y x = 0-7,y = 0-7 |
端口數據寄存器 |
79系列單片機 Px 寄存器都在位尋址區(例如:80H,88H等),都可以進行位尋址操作。
在初始化設施PxCR(輸出狀態)前,請優先設置Px寄存器,避免WDT,,OVL等復位帶來的端口電平變化。
當PxCR寄存器設置成輸入狀態時,操作讀取對應Px,是讀取對應引腳電平狀態。
當PxCR寄存器設置成輸出狀態時,根據指令來分別對應 讀取的是寄存器還是引腳電平。
1、端口寄存器讀-改-寫指令舉例:
ANL P0, #立即數 ;P0->立即數&(與)P0->P0
ORL P0, A ; P0->A|(或)P0->P0
INC P0 ;P0->P0+1->P0
CPL P0.0 ;P0.0->P0.0~(取反)->P0.0
2、引腳電平讀取指令舉例:
MOV A,P0 ;P0->A
MOV R0, P0 ; P0->R0
不管端口是否共享為其它功能,對端口寫操作都是針對端口數據寄存器。
當第二功能有沖突時,按照端口共享表格中的優先級來決定輸出功能。
通常I/O的優先級是低于其他功能的。
以下圖為例,當P0.6引腳上BUZ功能和LED功能同時選中時,引腳輸出LED波形。
當允許端口復用為其它功能時,用戶可以修改PxCR﹑PxPCR,但在復用的其它功能被禁止前,這些操作不會影響端口狀態。
當允許端口復用為其它功能時,任何對端口的讀寫操作只會影響到數據寄存器的值,端口引腳值保持不變,直到復用的其它功能關閉。
3、I/O開漏模式介紹:
在I/O章節有選擇N溝道開漏功能的寄存器時,可以實現I/O的N溝道開漏功能(注意上圖紅線處,IO管腳的電壓不得超過VDD+0.3V電壓)
如果I/O章節沒有該選項的寄存器,但是又有TWI通訊功能,那么在TWI功能開啟時,引腳自動切換成N溝道開溝。關閉TWI功能,自動切換回普通I/O。
芯片的電源輸入端建議加去耦電路,防止VDD端出現瞬間的高壓引入導致的電路損壞。
4、施密特及TTL功能介紹:
施密特功能介紹:
施密特輸入特性是輸入高電平閾值為0.8VDD,輸入低電平閾值為0.2VDD。
VDD=5V舉例,輸入高電平>=4V,端口讀取的電平為高,輸入低電平<=1V,端口讀取的電平為低。相對應的引腳是否具有施密特功能,請查詢電氣特性章節(輸入高電壓2和輸入低電壓2中注明有施密特功能的引腳,例如INT0-4,T3-T5等)。普通I/O不具有施密特功能。
TTL功能介紹:
TTL電平輸入特性是
1、輸入高電平閾值為0.25VDD+0.8,輸入低電平閾值為0.15VDD(VDD=2.7V~4.5V)
以VDD=3.3V舉例,輸入高電平>=1.625V,端口讀取的電平為高,輸入低電平<=0.495V,端口讀取的電平為低。
2、 輸入高電平閾值為2.0V,輸入低電平閾值為0.8V(VDD=4.5V~5.5V)
以VDD=5V舉例,輸入高電平>=2V,端口讀取的電平為高,輸入低電平<=0.8V,端口讀取的電平為低。
選擇TTL電平功能可與VDD電壓為3.3V的WIFI模塊直接通過以Uart或者TWI的方式通訊,又或者直接接收外部中斷信號(INT0-4),不需要外加電平轉換電路。(芯片是否有TTL功能請查詢I/O章節及電氣特性章節)
端口輸入模式選擇寄存器如下(TTL和CMOS選擇)
xxH,Bank1 | 第7位 | 第6位 | 第5位 | 第4位 | 第3位 | 第2位 | 第1位 | 第0位 |
PIMS0 | P04S | PxxS | PxxS | PxxS | PxxS | PxxS | PxxS | PxxS |
讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 | 讀/寫 |
復位值(POR/WDT/LVR/PIN) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
位編號 | 位符號 | 說明 |
7 | P04S |
P0.4輸入電平邏輯控制位(不包含端口數據寄存器輸入)* 0:輸入高電平閾值為0.8VDD,輸入低電平閾值為0.2VDD(CMOS邏輯,帶施密特) 1:輸入高電平閾值為2.0V,輸入低電平閾值為0.8V(VDD = 4.5 - 5.5V)(TTL邏輯) 輸入高電平閾值為0.25VDD+0.8,輸入低電平閾值為0.15VDD(VDD = 2.7V-4.5V) 注:PowerDown模式下,TLL邏輯無效 |
*:CPU在任何情況下,讀取端口數據寄存器(P0,P1……),其輸入高電平閾值為0.7VDD,輸入低電平閾值為0.3VDD(CMOS邏輯,無施密特);該控制位控制的是其他功能輸入的邏輯電平狀態,例如:INT0 - 4,RXD,SDA等數字電平輸入。
原文標題:中穎8bit 單片機I/O設置介紹
文章出處:【微信公眾號:中穎電子】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
單片機
+關注
關注
6035文章
44554瀏覽量
634663 -
mcu
+關注
關注
146文章
17123瀏覽量
350994 -
寄存器
+關注
關注
31文章
5336瀏覽量
120232 -
中穎電子
+關注
關注
4文章
174瀏覽量
7435
原文標題:中穎8bit 單片機I/O設置介紹
文章出處:【微信號:SINO_25181447,微信公眾號:中穎電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論