㈠ C51的數據存儲區域類型有哪些
答:bit 片內數據區的位尋找區,位地址0x00~0x7f,128位(位元組地址0x20~0x2f)
data 直接定址片內數據區的低128位元組
bdata 片內數據區的位定址區0x20~0x2f,也可位元組訪問,16位元組
idata 間接定址片內數據區的256位元組,與MOV @Ri 對應
pdata 分頁定址片外數據區的256位元組,與MOVX @Ri 對應,P2不變
xdata 片外數據區的全空間,64KB
code 全部程序存儲空間,64KB
絕對定位關鍵字_at_ ,指針,庫函數的絕對定位宏。
㈡ C51語言的數據類型
在C51語言中,每個變數或者常量在使用前都必須指明數據類型。
㈢ C51的數據類型和c語言的數據類型的區別
c語言規定了數據類型一般是什麼樣的。但沒有具體規定這個類型是多長……
而c51指的是具體的一個環境下的編譯運行環境,他一般會具體指出每個數據類型的特徵……
㈣ c51的存儲 類型 有幾種他們分別表示的存儲區域是什麼
data 直接定址區
idata 間接定址區
xdata 外部寄存器
pdata 分頁定址區
code 程序存儲區
bdata 位定址區
㈤ 2. 在C51語言中,說明定義的變數存儲類型分別使用xdata和pdata時,兩種的存儲空間有何不同
xdata存儲在外部RAM。使用前要對匯流排操作。pdata可存取256位元組/頁。多於一頁時應在Startup.A51中指明pdata長度,操作時用P2口生成頁地址。如果xdata大於256位元組,還是用xdata方式較好。
㈥ C51語言的變數定義語句中,所謂存儲器類型的設定的含義是什麼
就是給你定義的變數取個屬性!
㈦ .c51語言在標准c語言基礎上擴展了4種數據類型是什麼並進行說明
嗯C五一語言在標准語言是擴展上了四種數字數數據類型,他擴展到四中的數據類型是對的他擴張的就是嗯浮點型,嗯中。
㈧ 關於c51存儲類型和其數據長度,有點不懂,求指點
你上面的表格,可以說,是完全上的邏輯錯誤。
C語言,一個數據類型的長度只有以下幾種:
unsigned char 或者 char 固定8位的長度,即一個位元組
unsigned short 或者 short 固定16位長度,即兩個位元組
unsigned long 或者 long 固定 32位長度,即四個位元組
float固定32位長度,即四個位元組
double ,固定64位長度,即8個位元組,但是在C51里,是32位,因為C51是把double轉換成float來編譯的。
另外還有union和struct,長度是不固定的。
在C51里擴展了bit類型,1個位的長度
長度,只取決與以上類型,與data,idata,bdata,xdata,pdata沒有關系,所以,你上面的表格是錯誤的。
而那些data,idata,bdata,xdata,pdata等等,是變數或者常量的存儲空間。
51單片機有以下幾個內存模塊組成:
ROM或者Flash就不說了。
RAM有------內部RAM的低128位元組(00-7F)
-------內部RAM的高128位元組(80-FF)---【89C51單片機沒有這一段空間】
-------特殊功能寄存器(SFR)(80-FF)
------外部RAM 64K(0000-FFFF)
code表示是在Flash(ROM)中,是只讀的。
data 表示的是內部RAM的低128位元組,可以直接定址,速度比較快
idata 表示內部RAM高128位元組,只能是間接定址,速度比data里的數據要慢。
pdata是外部RAM,也就是xdata中的前256個,也就是外部RAM中的00--FF,只能MOVX 間接定址,但是,因為可以用R0做為指針,所以,速度與idata是一樣的。
xdata是外部RAM的全部,也可以包括前256個,也就是說,外部RAM前256個,可以用pdata和xdata定義,都行,只能是MOVX 和 DPTR聯合定址,速度最慢。
詳細內容,參考下面的鏈接:
http://..com/question/400032408?&oldq=1
舉例:
data unsigned char a;//---放在內部RAM空間的低128位元組,長度是8位
data unsigned short a;//---放在內部RAM空間的低128位元組,長度是16位
data unsigned long a;//---放在內部RAM空間的低128位元組,長度是32位
idata unsigned char a;//---放在內部RAM空間的高128位元組,長度是8位
idata unsigned short a;//---放在內部RAM空間的高128位元組,長度是16位
idata unsigned long a;//---放在內部RAM空間的高128位元組,長度是32位
pdata unsigned char a;//---放在外部RAM空間的低256位元組,長度是8位
pdata unsigned short a;//---放在外部RAM空間的低256位元組,長度是16位
pdata unsigned long a;//---放在內部RAM空間的低256位元組,長度是32位
㈨ C語言中變數的存儲類型有哪幾種,存儲方式哪幾種謝嘍
在C語言中,對變數的存儲類型說明有以下四種:
1、auto 自動變數
2、register 寄存器變數
3、extern 外部變數
4、static 靜態變數
所謂存儲類型是指變數佔用內存空間的方式,也稱為存儲方式。
變數的存儲方式可分為「靜態存儲」和「動態存儲」兩種。
1、靜態存儲變數通常是在變數定義時就在存儲單元並一直保持不變,直至整個程序結束。
2、動態存儲變數是在程序執行過程中,使用它時才分配存儲單元,使用完畢立即釋放。典型的例子是函數的形式參數,在函數定義時並不給形參分配存儲單元,只是在函數被調用時,才予以分配,調用函數完畢立即釋放。
如果一個函數被多次調用,則反復地分配、釋放形參變數的存儲單元。從以上分析可知,靜態存儲變數是一直存在的,而動態存儲變數則時而存在時而消失。
(9)c51語言的數據存儲類型擴展閱讀:
變數根據定義的位置的不同的生命周期,具有不同的作用域,作用域可分為6種:全局作用域,局部作用域,語句作用域,類作用域,命名空間作用域和文件作用域。
一、從作用域看:
1、全局變數具有全局作用域。全局變數只需在一個源文件中定義,就可以作用於所有的源文件。當然,其他不包含全局變數的定義的源文件需要用extern關鍵字再次聲明這個全局變數。
2、靜態局部變數具有局部作用域,它只被初始化一次,自從第一次被初始化直到程序運行結束一直存在,它和全局變數的區別在於全局變數對所有函數都是可見的,而靜態局部變數只對定義自己的函數體始終可見。
3、局部變數也只有局部作用域,它是自動對象(auto),它在程序運行期間不是一直存在,而是只在函數執行期間存在,函數的一次調用執行結束後,變數被撤銷,其所佔用的內存也被收回。
4、靜態全局變數也具有全局作用域,它與全局變數的區別在於如果程序包含多個文件的話,它作用於定義它文件里,不能作用到其他文件里,即被static關鍵字修飾過的變數具有文件作用域。這樣即使兩個不同的源文件都定義了相同名字的靜態全局變數,它們也是不同的變數。
二、從分配空間看:
全局變數,靜態局部變數,靜態全局變數都在靜態存儲區分配空間,而局部變數在棧里分配空間。
全局變數本身就是靜態存儲方式,靜態全局變數當然也是靜態存儲方式。這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變數的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。
而靜態全局變數則限制了其作用域,即只在定義該變數的源文件內有效,在同一個源程序的其他源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其他源文件中引起錯誤。
1、靜態變數會放在程序的靜態數據存儲區(全局可見)中,這樣可以在下一次調用的時候還可以保持原來的賦值。這一點是它與堆棧變數和堆變數的區別。
2、變數用static告知編譯器,自己僅僅在變數的作用范圍內可見。這一點是它與全局變數的區別。
參考資料來源:網路-變數-存儲類型
㈩ C語言中有哪些存儲類型
Turbo C2.0支持四種變數存儲類型。說明符如下:
auto static extern register
下面分別來介紹。
一、auto
auto稱為自動變數。
局部變數是指在函數內部說明的變數(有時也稱為自動變數)。用關鍵字auto進
行說明, 當auto省略時, 所有的非全程變數都被認為是局部變數, 所以auto實際上
從來不用。
局部變數在函數調用時自動產生, 但不會自動初始化, 隨函數調用的結束, 這
個變數也就自動消失了, 下次調用此函數時再自動產生, 還要再賦值, 退出時又自
動消失。
二、static
static稱為靜態變數。根據變數的類型可以分為靜態局部變數和靜態全程變數。
1. 靜態局部變數
它與局部變數的區別在於: 在函數退出時, 這個變數始終存在, 但不能被其它
函數使用, 當再次進入該函數時, 將保存上次的結果。其它與局部變數一樣。
2. 靜態全程變數
Turbo C2.0允許將大型程序分成若干獨立模塊文件分別編譯, 然後將所有模塊
的目標文件連接在一起, 從而提高編譯速度, 同時也便於軟體的管理和維護。靜態
全程變數就是指只在定義它的源文件中可見而在其它源文件中不可見的變數。它與
全程變數的區別是: 全程變數可以再說明為外部變數(extern), 被其它源文件使用,
而靜態全程變數卻不能再被說明為外部的, 即只能被所在的源文件使用。
三、extern
extern稱為外部變數。為了使變數除了在定義它的源文件中可以使用外, 還要
被其它文件使用。因此, 必須將全程變數通知每一個程序模塊文件, 此時可用
extern來說明。
四、register
register稱為寄存器變數。它只能用於整型和字元型變數。定義符register說
明的變數被Turbo C2.0存儲在CPU的寄存器中, 而不是象普通的變數那樣存儲在內
存中, 這樣可以提高運算速度。但是Turbo C2.0隻允許同時定義兩個寄存器變數,
一旦超過兩個, 編譯程序會自動地將超過限制數目的寄存器變數當作非寄存器變數
來處理。因此, 寄存器變數常用在同一變數名頻繁出現的地方。
另外, 寄存器變數只適用於局部變數和函數的形式參數, 它屬於auto型變數,
因此, 不能用作全程變數。定義一個整型寄存器變數可寫成:
register int a;
對於以上所介紹的變數類型和變數存儲類型將會在以後的學習中, 通過例行程
序中的定義、使用來逐漸加深理解。