變數的定義通常有可以定義在幾個地方:
1、定義在普通的RAM中,這種方式是不用對變數進行額外說明的,就是普通的定義變數
2、定義在ROM中,不過通常這種變數通常以靜態資料形式出現,如一張圖片的資料,程式裡通常不會修改這種變數中的值,只是讀取值內容而已。
3、定義在擴充套件RAM中,但這要看你的微控制器是否支援這樣的擴充套件RAM,而且支援的大小是多少。
以STC12C5A32S2為例,常規RAM只有128個位元組,但有1K的擴充套件RAM,32K的ROM,還有32K的EEPROM。通常在寫比較大的程式時,那種需要修改的變數內容都儘可能的定義到擴充套件RAM中,即使這樣因為一些基本的函式或變數交換,都還會浪費掉常規RAM的使用率。
定義在常規RAM變數的格式是:
資料型別或結構型別名 變數名;
如:char a;
定義在擴充套件RAM變數的格式是:
xdata 資料型別或結構型別名 變數名;
如:xdata char a;
定義在ROM變數的格式是:
code 資料型別或結構型別名 變數名;
如:code char a;
合理的應用常規RAM、擴充套件RAM和ROM是程式的關鍵,如果你覺得你的的程式已經算合理的安排了這些RAM和ROM之類的分配,任然不能滿足你的程式需求,你就該考慮更換微控制器機型或考慮用其他的東西來完成你的這種需求,如用ARM、Mips等,總之先確保軟體的理念正常,然後檢查實施過程無誤,再考慮更換硬體方案。
變數的定義通常有可以定義在幾個地方:
1、定義在普通的RAM中,這種方式是不用對變數進行額外說明的,就是普通的定義變數
2、定義在ROM中,不過通常這種變數通常以靜態資料形式出現,如一張圖片的資料,程式裡通常不會修改這種變數中的值,只是讀取值內容而已。
3、定義在擴充套件RAM中,但這要看你的微控制器是否支援這樣的擴充套件RAM,而且支援的大小是多少。
以STC12C5A32S2為例,常規RAM只有128個位元組,但有1K的擴充套件RAM,32K的ROM,還有32K的EEPROM。通常在寫比較大的程式時,那種需要修改的變數內容都儘可能的定義到擴充套件RAM中,即使這樣因為一些基本的函式或變數交換,都還會浪費掉常規RAM的使用率。
定義在常規RAM變數的格式是:
資料型別或結構型別名 變數名;
如:char a;
定義在擴充套件RAM變數的格式是:
xdata 資料型別或結構型別名 變數名;
如:xdata char a;
定義在ROM變數的格式是:
code 資料型別或結構型別名 變數名;
如:code char a;
合理的應用常規RAM、擴充套件RAM和ROM是程式的關鍵,如果你覺得你的的程式已經算合理的安排了這些RAM和ROM之類的分配,任然不能滿足你的程式需求,你就該考慮更換微控制器機型或考慮用其他的東西來完成你的這種需求,如用ARM、Mips等,總之先確保軟體的理念正常,然後檢查實施過程無誤,再考慮更換硬體方案。