一要看RAM大小,二要看變數類型,比如bdata,最大由128bit,也就是說可以定義128個位變數。XDATA,那麼要看擴展的內存有多大,最大可以到64Kbyte。
不同類型的單片機,最大變數也不一樣,比如51是128個RAM,52是256個。
❷ 在單片機c51中,變數的存儲類型
是指data idata xdata code吧
分別是存於片內低128位元組,高128位元組,片外RAM中,和程序存儲器中
❸ 哪些變數類型是8051單片機直接支持的
單片機不支持任何所謂變數類型,支持你變數類型的是你所使用的編譯器!編譯器把你的程序編譯成一個個的位元組編碼以便單片機可以根據它來執行你的程序。
普通單片機都支持用C語言進行編程,那麼它的編譯器就會支持C語言里用到的變數類型,如整型、字元型、指針、數組等等,具體參考C語言相關書籍。
如果你用的是Keil編譯器,那麼它針對51單片機還額外支持一些別的類型,如1位二進制的sbit...
❹ ARM 單片機有哪些特殊類型的變數具有什麼作用
數字變數、邏輯變數和串變數。
如果在串變數前有一個$字元,在匯編時編譯器將用改串的數值來取代該串變數。對於數字變數來說,如果該變數前面有一個$字元,在匯編時編譯器將該數字變數的數值轉換成十六進制的串,然後用該十六進制的串取代$字元後的數字變數。 對於邏輯變數來說,如果該邏輯變數前面有一個$字元,在匯編時編譯器將該邏輯變數替換成它的取值(T或者F)。
❺ 單片機數據類型
單片機數據類型有bit,sbit,sfr,sfr16都用於單片機的C語言編程。
bit—定義位變數,定義位變數時可以為變數賦值,但不能指定變數的地址。定義格式:bit 變數名=變數值。
sbit—此類型變數只要用於訪問可位定址的特殊功能寄存器中的某個位。定義格式:sbit 變數名=位地址;sbit 變數名=SFR地址^位序號;sbit 變數名=sfr16變數^位序號。
sfr—此類型變數可以訪問指定的8位特殊功能寄存器,地址范圍為0x80~0xFF。定義格式:sfr 變數名=變數地址。
❻ 單片機如何定義有符號變數
1.C語言中,變數一般有兩種屬性,分別是:存儲類別、數據類型。 例如定義一個變數:static unsigned char var = 0; 上述語句中,static(靜態的)為變數的存儲類別,unsigned char(無...
2.存儲類別:即變數在代碼運行期間的存儲方式。c語言提供了4種,分別是:auto(自動的)、static(靜態的)、extern(外部的)、register(寄存器的)。 默認情況下,如果不加存儲類別,則該變數是auto類的.
❼ c語言的字元類型和變數類型在單片機程序編寫注意事項
從C語言的角度來說,是無所謂的,編譯系統會自動的編譯,這點與單片機無關。
字元類型沒什麼好討論的,總之是字元操作,一般是在內存中處理,與單片機的關系不多。
從單片機的角度來說,特別是整數類型,盡可能選擇與單片機字長一致的類型使用,比如8位內核的51,8位加法用1條指令,16位的加法,至少要6條指令,32位加法更多。而對於32位的ARM,則正好反過來,32位加法直接加,16位或者8位加法,要先把數據擴展成32位的再運算,運算完再修正回8位或者16位的數據,所以用8位或者16位的整數,反而不如用32位的快。
❽ 單片機c51有哪些變數,謝謝!
下面僅對C51在變數定義中注意的問題以及與80C51存儲資源有關的問題作說明,其餘遵循C語言的規定。
1.變數聲明
在變數的聲明中,可以包括存儲類型和signed或unsigned等屬性。如:
(1)char data var1;
定義字元型變數var1,被分配在內部RAM低128B,編譯後,通過直接定址方式訪問。
(2)char code text[ ] = 「ENTER PARAMETER」;
定義字元數組text[ ],將其分配到程序存儲區,並賦初始值「ENTER PARAMETER」。編譯後,通過MOVC A, @A+DPTR訪問。
(3)unsigned long xdata array[100];
定義無符號長整型數組array[100],將其分配到外RAM中,編譯後,通過MOVX A, @DPTR訪問。
(4)float idata x,y,z;
定義浮點類型變數x,y,z,將其分配到內RAM中,編譯後,通過間接定址方式訪問。
(5)unsigned int pdata dimension;
定義無符號整型變數dimension,將其分配到外RAM中,編譯後,通過MOVX A, @Ri指令採用分頁的形式訪問。
(6)unsigned char xdata vector[10][4][4];
定義無符號字元型數組vector[10][4][4],將其分配到外RAM中,編譯後,通過MOVX A,@DPTR訪問。
(7)char bdata flags;
定義字元型變數flags,將其分配到可位定址的內部數據存儲器中,可以以位元組方式訪問,也可以以位方式訪問。
❾ 為什麼單片機編程變數都要定義成unsigned
單片機的匯編運算指令幾乎都是無
符號計算
,C變數用unsigned類型可以編譯生成較少的代碼,反之如果用有符號類型,勢必會編譯成大量的
機器代碼
,所以如果不是必須用有符號數,盡量用無符號類型。