微控制器IO口詳解

2021-10-24 22:19:48 字數 1552 閱讀 5377

一、三態

微控制器io的三態是指:高電平(1)、低電平(0)、高組態(z)。

二、高阻態

高阻i是一種電路狀態.既不是高電平,也不是低電平,以高阻態對下級電路輸出,下級電路什麼影響也沒有.高阻態的io電平高低,隨下級電路變化而變,下級為高,它就是高,下級是低它就是低.可以看成是懸空狀態.

所以,高阻狀態的作用就是你不會影響其他,這在匯流排通訊中特別重要

像通用的51微控制器,io口都有這樣的標註(下圖是cms5880的io引腳配置截圖)

當你設定成輸入時,此時引腳狀態就是高組態。有些微控制器規格書翻譯不太準確,

應該要翻譯成:0=  引腳被配置為輸入(高阻抗)

翻譯成「高阻抗」應該是比較準確的,

翻譯成「三態」容易引起誤解

三、io模式的內部結構

現在我們拿我們入門學得at89c51來分析其引腳埠結構。

1.p0口雙向八位三態io

p0口大家肯定不陌生,想當初第一次畫最小系統板,在p0口接上拉電阻,從而點燈點不亮。那為什p0口要加上拉電阻呢?

這是p0口內部結構圖,首先p0口的上面那個三極體d0是在進擴充套件儲存器或擴充套件匯流排時使用movx指令時才會控制它的導通和截止,在不用此指令時都是截止的。也就是我們平常使用如:p0_1=0 p0_1=1這些語句時控制的都是下面那個三極體d1。

當p0=0時,等效圖是中間的,三極體d1導通,p0點的電位為0。

而當p0=1時,等效圖是右邊的,三極體d1截止,而上面的三極體d0始終是截止的,這樣p0點就等效於懸空了,所以要外接上拉電阻,才能有高電平。

所以,當你置1時,由於內部沒有上拉電阻,所以為高組態,不能正常輸出高、低(高組態輸出的電平不確定)

2.p1口準雙向io

內帶上拉電阻

當p1=0時,三極體d導通,見中間的等效圖

當發出p1=1的指令後,三極體d截止,見右邊等效

那為什麼叫準雙向io,因為當io口要設定為輸入時,需要先想該埠寫「1」,微控制器才能正確讀取外部的高低電平。

也就是要現有個準備過程,所以叫「準雙向3」.p2 p3也是。

雙向口與準雙向口的區別主要是:準雙向口i/o口操作時做資料輸入時需要對其置1,否則若前一位為低電平,後一位輸入的電平為高則mos管拉不起來導致出錯。而雙向口則不需要做此動作,因為雙向口有懸浮態。

準雙向口就是做輸入用的時候要有向鎖存器寫1的這個準備動作,所以叫準雙向口。

真正的雙向口不需要任何預操作可直接讀入讀出。

1:準雙向一般只能用於數字輸入輸出,輸入時為弱上拉狀態(約50k上拉),埠只有兩種狀態:高或低。

2:雙向除用於數字輸入輸出外還可用於模擬輸入輸出,模擬輸入時埠通過方向控制設定成為高阻輸入狀態。雙向埠有三種狀態:高、低或高阻

3.

微控制器擴充套件IO口

微控制器如何擴充套件io口?首先我們先講講為什麼要擴充套件io口。在我們使用51微控制器的時候,有時候會出現io口不夠用的情況。比如鍵盤!這個時候io口的資源就十分有限了。按鍵是我們常用的器件,做某些東西的時候又不能缺少按鍵。如果乙個按鍵對應乙個io口,那麼可想而知,按鍵所佔的io口的數量是很大的。...

微控制器I O口控制實驗

實驗內容 利用p1口做輸出口,接八隻發光二極體,編寫程式是發光二極體迴圈點亮或者具有一定的花樣。1.第乙個發光二極體以間隔200ms閃爍 2.8個發光二極體由上至下間隔,1s流動,其中每個管亮500ms,滅500ms,亮時蜂鳴器響,滅時關閉蜂鳴器,一直重複下去 3.8個發光二極體來回流動,每個管亮1...

微控制器IO口操作總結

三 關於上拉電阻 四 休眠狀態下io口配置 io口是人機互動的介面,i為輸入 o為輸出,我們對io口的操作,就是讀和寫,讀就是讀io口的引腳狀態,寫就是把0或者1寫入io口的資料暫存器。本文對io口的操作針對微控制器io口的通用操作步驟,不針對某一種或者某一類特定微控制器。1.1 設定io口方向暫存...