用微控制器C語言模組化設計,使用全域性變數太多,data不夠用怎麼辦

時間 2021-09-06 09:13:32

1樓:

首先,你用的什麼微控制器?

現在的很多微控制器,已經整合了外部ram,沒有必要你自己再擴ram了,你查一下你使用的微控制器手冊,應該已經外擴ram了。

據我所知道的51系列微控制器,stc的最少外擴256b,通常外擴1024b,現在又出來外擴4096b的

中穎的、華幫的,最少也是一樣256b- 1024b。

但是有一種例外,就是at89s51,只有這種原始的微控制器才沒有外擴ram。

從at89s52時候,就開始外擴256b了。

你可以查一下你的手冊,也可以在keil裡,新建工程選擇晶片時,看一下晶片的介紹。

2樓:匿名使用者

你什麼**?133ram可以用at89s52,有256的ram,而s51只有128

補充一下,其他樓層說的外擴,意義不大,因為你只用到133,52的256b足夠了。而且xdata用的是movx指令,idata用的是mov指令間接定址,編譯出來的程式會有區別的。

3樓:匿名使用者

如果實在不行,把一些狀態訊號,改為bit,這樣可以節省ram空間。

4樓:匿名使用者

不帶ram的晶片,很少看到了,通常的51和52 都帶ram的

5樓:匿名使用者

在程式開始前進行定義,或寫到標頭檔案~

微控制器 全域性變數太多,且分佈在多個檔案中該怎麼優化?

6樓:匿名使用者

合併相同型別的變數了,比如不同時用到的變數,可以合併嘛;還有就是將常量定義到**區,也就是加code 這樣就不佔用ram區域了。當然如果不合並,系統也沒有擴充套件ram,你可以選擇stc12系列的微控制器,其內部有擴充套件的ram,好像從1k到4k都有。這樣就不用擔心變數多了。

7樓:匿名使用者

將程式模組化!一個模組對應一個.c和.

h檔案,.h檔案存放該模組的全域性變數、函式宣告、巨集定義等!把.

h新增到你的.c檔案去就行了,如果其它模組也要用到這個的全域性變數,也把這個.h檔案新增進去!

8樓:匿名使用者

最近接手一個別人的專案程式,臥槽,全域性變數多的一批,我直接頭大了,幾個月了一直梳理和優化,註釋再多有個屁用,還是理不清

nop 在c語言裡怎麼用呢,51微控制器c語言裡 nop 函式怎麼用?

在c語言裡沒有這個 nop 函式,這個函式是在51微控制器裡使用的。作用 對於延時很短的,要求在us級的,採用 nop 函式,這個函式相當彙編nop指令,延時幾微秒。nop指令為單週期指令,可由晶振頻率算出延時時間,對於12m晶振,延時1us。對於延時比較長的,要求在大於10us,採用c51中的迴圈...

C語言鬧鐘程式,用C語言寫51微控制器鬧鐘程式

如果在vc 中考慮採用定時器 如果不用vc 考慮採用多執行緒 如何拿微控制器用c語言程式設計做一個鬧鐘?現在智慧手機是設定好的,可以用手機的鬧鐘就可以了 用c語言寫51微控制器鬧鐘程式 實現功能 本程式實現在p1口模擬一個流水燈程式 include define p out p1 巨集定義輸出的i ...

用c語言怎麼在微控制器at89c51上編寫延時10秒的

1 十秒對於微控制器來說是很長很長的時間了,微控制器十秒的時間什麼事都不能做,只在跑這延時程式,那是什麼概念,用中斷的話,微控制器正常執行其他程式,只是時間到了才過來處理延時以後的程式,效率不知道高了多少 2 例程 假設晶振12mhz include reg51.h unsigned int ysj...