要解答這個問題,我們先考慮一種情況,假如我們要對p0.1引腳輸出(賦值)為1,那麼微控制器內部是如何工作的?我的分析如下:
我們知道,引腳屬於io裝置,微控制器內部cpu是通過位址匯流排,資料匯流排,控制匯流排對其進行賦值的,也就是說cpu不可能只對p0.1賦值,應該是對整個p0埠整體賦值,但是我們確實在程式設計過程中是可以通過指令對p0.1進行賦值。假如要給p0.1置位1,這個時候cpu的工作應該是這樣的,cpu先讀取整個p0暫存器的數值,然後將其跟1000 0000 進行或操作,再送回至p0暫存器。這樣除了將p0.1引腳置1,其他引腳狀態不變。
那麼如果我們讀取不是暫存器而是引腳的話就會出現問題,因為在某些情況下(應該說這種情況很多,比如我們將p0口接上拉電阻,然後檢測其引腳狀態,這個時候引腳狀態是隨外電路變化而變化的)引腳的狀態與暫存器輸出不相同,就會使得我們在對p0.1置位的同時其他引腳也被錯誤的置位。
以上就是為什麼會有讀鎖存器與讀引腳兩個選擇的原因。
微控制器中 讀引腳 和 讀鎖存器 的區別
要搞清這個問題,就要明白p0口的內部結構。p0口是由鎖存器經兩個驅動場效電晶體和外部引腳相連的。讀引腳的意思就是直接讀p0外部引腳的電位,而讀埠 鎖存器 讀的是內部與資料匯流排鏈結的鎖存器的電位。兩者不同。一般來說,讀取p0的資料,都是讀引腳,目的是獲取與p0相連的外部電路的狀態。而讀埠是在執行下述...
關於51微控制器讀鎖存器 讀引腳的問題
80c51微控制器有p0 p3四個p口,以p0為例說明 要搞清這個問題,就要明白p0口的內部結構。p0口是由鎖存器經兩個驅動場效電晶體和外部引腳相連的。讀引腳的意思就是直接讀p0外部引腳的電位,而讀埠 鎖存器 讀的是內部與資料匯流排鏈結的鎖存器的電位。兩者不同。一般來說,讀取p0的資料,都是讀引腳,...
微控制器中為什麼有了Flash還有EEPROM?
時,然後才能再下一次,這麼折騰一天也改不了幾次。歷史的車輪不斷前進,偉大的eeprom 出現了,拯救了一大批程式設計師,終於可以隨意的修改rom中的內容了。eeprom的全稱是 電可擦除可程式設計唯讀儲存器 即electrically erasable program mable read only...