上了課感覺也有必要加深理論知識。所以我想從數電的角度去分析幾種io口模式。
通過對51的學習再對映到對其他晶元的認識,加深自己對io口配置的理解。
1.p0口
①上電後所有埠預設輸出高電平。
②p0口做普通i/o口時,必須外接上拉電阻。
③51的所有io口都是準雙向io口。
④讀操作時,先向鎖存器寫1,截斷v2。
p0埠由鎖存器、輸入緩衝器、切換開關、乙個與非門、乙個與門及場效電晶體驅動電路構成。
有一定的數電基礎可以分析得到:當vgs大於一定值,場效電晶體導通。
先分析內部結構:
1.輸入緩衝器:
在p0口中,有兩個三態的緩衝器。
三態門有三個狀態,即在其的輸出端可以是高電平、低電平,同時還有一種就是高阻狀態(或稱為禁止狀態)。
讀取d鎖存器輸出端q的資料,那就得使讀鎖存器的這個緩衝器的三態控制端(上圖中標號為『讀鎖存器』端)有效。下面乙個是讀引腳的緩衝器,要讀取p0.x引腳上的資料,也要使標號為『讀引腳』的這個三態緩衝器的控制端有效,引腳上的資料才會傳輸到我們微控制器的內部資料匯流排上。
2.d鎖存器:
來乙個cp訊號,跟隨d訊號。數電學過,就不細講了。
3.多路開關:
p0口的輸出是由兩個mos管組成的推拉式結構,也就是說,這兩個mos管一次只能導通乙個
,當v1導通時,v2就截止,當v2導通時,v1截止。
p0口功能:
1.通用io口匯流排
p0口用作i/o口線,其由資料匯流排向引腳輸出(即輸出狀態output)的工作過程:
當寫鎖存器訊號cp 有效,資料匯流排的訊號→鎖存器的輸入端d→鎖存器的反向輸出q非端→多路開關→v2管的柵極→v2的漏極到輸出端p0.x。
當多路開關的控制訊號為低電平0時,與門輸出為低電平,v1管是截止的,所以作為輸出口時,p0是漏極開路輸出。(漏極d)
當d給1的時候,q非為0,所以v2不會被導通,若外加乙個上拉電阻,則可以讓上拉電阻(較小)與下端的v2電阻(截斷電阻值無窮)進行分壓,相當於vcc全部加上到了p0.x上,實現輸出1。(類似於oc門,當驅動上接電流負載時,需要外接上拉電阻。)
當d給0的時候,q非為1,所以v2被導通,輸出管腳接地。(vcc與gnd邏輯線與,最後還是輸出0)
p0口用作i/o口線,其由資料引腳向匯流排輸入(即輸出狀態input)的工作過程:
1、讀引腳
讀晶元引腳上的資料,讀引腳數時,讀引腳緩衝器開啟(即三態緩衝器的控制端要有效),通過內部資料匯流排輸入,請看下圖(紅色簡頭)。
2.讀鎖存器
通過開啟讀鎖存器三態緩衝器讀取鎖存器輸出端q的狀態,請看下圖(紅色箭頭):
在輸入狀態下,從鎖存器和從引腳上讀來的訊號一般是一致的,但也有例外。
例如,當從內部匯流排輸出低電平後,鎖存器q=0,q非=1,場效電晶體t2開通,埠線呈低電平狀態。此時無論埠線上外接的訊號是低電乎還是高電平,從引腳讀入微控制器的訊號都是低電平,因而不能正確地讀入埠引腳上的訊號。
又如,當從內部匯流排輸出高電平後,鎖存器q=1,q非=0,場效電晶體t2截止。如外接引腳訊號為低電平,從引腳上讀入的訊號就與從鎖存器讀入的訊號不同。
所以,8051微控制器在對埠p0一p3的輸入操作上,有如下約定:為了能夠正確的由引腳輸入高電平,先向埠鎖存器寫1,讓兩個場效電晶體均截止,引腳處於懸浮狀態,從而獲得高阻抗輸入。否則會因為之前寫入的0使v2處於導通階段,始終鉗在低電平。
3.負載能力
輸出高電平(拉電流,引腳提供負載電流)
輸出低電平(灌入電流,引腳吸收負載電流)
灌入電流》拉電流,以89c52為例,差不多灌入電流就是10ma左右。
其他的p2,p3,p1口都是整合了上拉電阻的,所以說不需要外接。
、在stm32中選用怎樣選擇i/o模式?
浮空輸入_in_floating ——浮空輸入,可以做key識別,rx1
帶上拉輸入_ipu——io內部上拉電阻輸入
帶下拉輸入_ipd—— io內部下拉電阻輸入
模擬輸入_ain ——應用adc模擬輸入,或者低功耗下省電
開漏輸出_out_od ——io輸出0接gnd,io輸出1,懸空,需要外接上拉電阻,才能實現輸出高電平。當輸出為1時,io口的狀態由上拉電阻拉高電平,但由於是開漏輸出模式,這樣io口也就可以由外部電路改變為低電平或不變。可以讀io輸入電平變化,實現c51的io雙向功能
推挽輸出_out_pp ——io輸出0-接gnd, io輸出1 -接vcc,讀輸入值是未知的
復用功能的推挽輸出_af_pp ——片內外設功能(i2c的scl、sda)
復用功能的開漏輸出_af_od——片內外設功能(tx1、mosi、miso.sck.ss)
附上大佬32的io口總結
基於MCS 51核心的彙編學習筆記
資料傳送類指令 算術運算類指令 只能是8位 add 不帶進製相加 addc 帶進製相加 inc 加1指令 subb 減法指令,運算元 源運算元 cy dec 減1指令 daa 十進位制調整指令 mul 乘法指令 div 除法指令 算術標誌指令將會影響進製標誌cy,輔助進製標誌ac,溢位標誌ov 運算...
基於MCS 51核心的彙編 子程式設計
子程式是什麼?實際程式設計過程中,為減輕程式 的量,將一些經常用到的指令集稱之為子程式 這裡可以模擬一下c語言中的延時函式delay 等等 功能 為了解決同一組程式 被反覆使用的麻煩操作,每次要用到的時候呼叫一下就好了 子程式被調執行特點 1.被其他程式呼叫 2.執行完後又需要把執行流程返回到該子程...
MCS 51微控制器I O埠的訪問
2007 12 25 10 38 53 mcs 51微控制器通常有4個8位i o埠,向各埠的寫資料均寫入到對應埠的鎖存器中,但對各埠的讀操作卻有兩個方式 讀鎖存器和讀引腳 1 讀 修改 寫操作 pn 指p0,p1,p2,p3 在51組合語言中是特殊的識別符號,既代表pn埠引腳,又代表pn鎖存器 pn...