⑴ 單片機怎樣清零
累加器和位清零可用CLR(如:CLR A,,,CLR C)或者直接賦0值(如:mov a,#00h).還有一種清零就是系統復位,賦位到初始的狀態,單片機的RST腳。(當然此種復位有的是零狀態(如:PC)。有的是1狀態(P0~P3),還有的是不定狀態(SBUF)),此種復位可手動也可上電自動,依外部電路而行
⑵ C51 單片機 局部變數 問題
這個問題也困擾過我,比如定時器中斷里設置一個變數x,不設置初值,然後程序里放個x++。
結果就是那個x真的一直在加。
不過我沒有去深究過,個人理解是,如果系統不缺空間的話,單片機就不會去清除空餘的單元。
是不是這樣我不清楚,但是分析如下:
我們自己用匯編寫程序的時候,直接對RAM操作,如果不去清0,裡面的數是永遠不會變的。這說明,單片機本身是沒有這種操作的。
如果說C語言編譯過程中有加這種功能,也很難想像會在每個工作周期中不斷的去檢查哪些單元閑置的,並且對其清零。因為這樣要佔用很多CPU時間。
個人猜測,注意,是猜測!應該是當不得不要把某個物理單元劃分給新的變數時,才會真的把舊變數清除掉。否則,哪怕是局部變數,對應的物理單元應該是一直不變的。
(以上有錯,是我一開始寫的,請看下面的分析為准)
一邊寫一邊仔細回憶一下,大概知道了:
如果你寫了一個函數,裡面有5個變數。並且,這個函數你不去調用它。那麼編譯後你會發現程序多佔用了5個位元組的RAM。如果你調用它,有些情況下(程序特別長,變數特別多時)你會發現,程序里使用的RAM沒增加!(多說明一下,為什麼不調用它反而要佔用空間呢?因為系統不知道這5個空間什麼時候可以釋放,那麼定義了以後只好一直保留著。而如果你調用它了,什麼時候有用什麼時候沒用是固定的,那麼系統編譯時就可以在該變數不被使用時把空間分配給其他變數,有點「分時復用」的意思。而且,如果你寫了太多函數,裡面有足夠多的變數,然後這些函數統統都永不調用,編譯時就會出錯,提示你系統RAM不足)
這至少說明兩點,
一、如果你定義了一個局部變數,那麼系統就會一直留著空間給它以備使用。那麼那個物理單元隨時都是為「那一個」變數准備著的,它的值並不會清零。
二、當你程序使用了太多變數時,那麼系統編譯時會自動調節,在適當的時候釋放物理單元給「不同的變數」使用,也就是同一個物理單元要被不同的局部變數用,這種時候才會出現你說的情況,那就是局部變數會被清零。
實際上平時寫的程序都太短了,根本沒用使用完系統的RAM,那麼編譯時自然不會做這個操作。
同樣可以得出一個結論,正是因為單片機的RAM有限,才會導致局部變數不清除。對於電腦來說,空間近乎無限的,隨時隨地你都可以分配空間給變數用。但是51單片機就那麼128位元組,必須詳細策劃好如何分配,所以局部變數才有了自己固定的地盤。
說到這里,我相信你的問題我已經找到答案了,雖然都是我推測的,但是十之八九不會錯。歡迎討論!
哦,至於初始值為0,這個沒啥啊,單片機復位以後,RAM就是0
書上沒寫,但是實際用都是這樣
⑶ 51單片機復位後變數不清零
你定義了局部變數不賦值,值是不確定的,只有全局變數在定義時會自動清零。
⑷ 單片機變數清零問題。
沒看到你的源程序,分析一、注意全局變數,臨時變數的區別,二、注意程序跳轉後的變數初值。
⑸ 如何完全清空51單片機里的程序
EEPROM通常空內部全部為1,
若不考慮成本,建議直接到淘寶上購買EEPROM燒入器,可以支持多種EEPROM燒入和擦寫
若是為了省成本,可以直接採用MCU給EEPROM全部燒入1
⑹ 將單片機片內一組RAM單元清0的函數,大佬說一下每一步的步驟含義吧
沒啥好說的,這個函數僅適用於51單片機。清零也限於從片內RAM的30h開始的32個位元組。就是在主函數里調用一個專用清零函數,指定起始偏移和清零長度;在清零函數里循環賦零。
⑺ 單片機C語言中什麼語句可以將一個變數值清空
懂你的意思了,那你就把這個變數設為全局變數一個初值,每次執行程序時做初始化.
⑻ 51單片機,將01H位清零方式有幾種寫出指令。
如果你說的01H是位地址那麼有以下幾種方式清零。
1、clr 01h
2、mov 20h,#0fdh
3、clr 20h.1
4、clr c
mov 01h,c
⑼ 51單片機(c語言) 怎麼把一個變數的某個位分離出來(假如定義一個char型變數a,我想把a的5
定義一個掩碼,讓你的變數a和掩碼做與運算就行了,比如你想把低4位分離出來,掩碼就是0x0F,假如分離後的變數是b,那麼b=a&0x0F,低5位相應的掩碼就是0x1F,
⑽ 程序下載到51單片機中後,如何查看單片機中的變數值
既然做了實物了,就應該有數碼管顯示的,就可以顯示出溫度了。
暫時還沒有顯示電路,那就只好用串口,將測量的溫度從串口發送到電腦上來查看了。寫個串口程序,將溫度發送出來,電腦上用串口調試助手接收。
現在只有這個辦法了。
總不能什麼也不做,坐等結果吧,那你就別搞了。天上不會掉餡餅的。