微控制器c語言的一些疑問

2022-10-14 10:10:13 字數 1072 閱讀 6880

1樓:

首先是const定義的陣列我看他們說 const定義的陣列省記憶體 怎麼個什麼法 如果要省記憶體直接定義為code不就得了直接去了rom不是更省記憶體.

答:const定義的陣列省記憶體?沒這個說法。

const定義的陣列只是在執行時不允許改變而已。

如:const char data aqq[3]=;

如果執行這句:

aqq[1]++;則出錯。如果在定義時加上code則定義在**區:

const code aqq[23]=;

還有就是c語言的變數不是需要記憶體嗎, 微控制器是怎麼分配記憶體的,是把寫好的程式放進微控制器讓後用程式指標一條一條的指,

答:微控制器分配記憶體實際上很複雜:

定義的資料不同,分配記憶體的方式就不同。比如int/ char /long int等資料型別,定義時看似簡單,事實上編譯器要化很多**為它們分配不同的資料空間。因在組合語言裡沒有這些資料型別,你把c語言轉變成彙編,就要把c的資料讓彙編能「理解」。

比如int佔兩個位元組,char佔一個位元組。在**裡就要制定這樣的「規則」來進行資料傳遞。

至於是放在rom還是ram裡,要看定義時的方式:加了code就在rom裡,否則在ram裡。

如果發現有變數就分配記憶體 還是在keil 軟體中編譯時就分好了那些因該是放在記憶體中,那些是放在rom中.

答:在keil 軟體中編譯時就分好了那些應該是放在記憶體中,那些是放在rom中.

但是在ram裡變數的存放就複雜了。程式要根據不同的狀態決定怎樣分配空間,而且在執行中這些分配方式還可能改變。比如一些變數在用過一遍後程式發現不再用了,就會把它的儲存區抹去以節約空間。

這叫「覆蓋」。

如果樓主一開始學了組合語言,理解起來比較容易。一開始就從c語言學,會碰到這些問題。

2樓:匿名使用者

const定義的是常量,為了省記憶體,一般加code定義,從而將它放進rom中去.c語言中,變數是有生命週期的,基本可以認同你」是把寫好的程式放進微控制器讓後用程式指標一條一條的指,如果發現有變數就分配記憶體」這個看法.但這不是微控制器的問題,是程式語言本身的問題

qq598403953

學習微控制器,使用C語言好一些還是彙編好一些

上手還是c語言快些,c搞定後,要回頭去學彙編,這樣更容易理解微控制器。一開始就學彙編的話,給自己打擊,很難去理解。勸你兩種都學,先c語言,後彙編的。在應用中彙編控制的更準確些。你好,不相學彙編不行,雖然現在的微控制器支援c語言,但是要想最簡便快捷的控制硬體就必須瞭解彙編,你可以不用匯編,但是你一定要...

C語言程式設計,微控制器,微控制器C語言程式設計程式設計,一臉懵,求大佬們教我

一點都不會做不應該的,你寫出來,可以幫你修改 如按鍵如何獲取,定時器如何設定等等,基本都是照抄例程的 微控制器c語言程式設計程式設計,一臉懵,求大佬們教我 是要 實現呢?還是在開發板上實現?這種程式,你可以在這裡搜尋到答案的。求一個簡單的51微控制器c語言程式設計 機的外部結構 1.dip40 雙列...

微控制器的一些題目求助,微控制器的一些題目 求大神幫我做做吧 用匯編寫下 完了還有加分 謝謝了 您的舉手之勞定會讓我等感激不盡

21 用定時器t1方式2計數,要求每計滿100次,向cpu發出中斷請求,th1 tl1的初始值是 256 100 156 9ch 20 下列指令中哪個是錯誤的 xrl a,30h 19 mcs 51的片內外的rom是統一編址的,如果端保持高電平,8051的程式計數器pc指向的地址範圍為 d 0000...