一、修飾符類型
51單片機(jī)采用哈佛結(jié)構(gòu)。內(nèi)存空間編址有重疊??梢栽诓煌偩€上定義不同的變量。在KEIL C51中定義了data、idata、xdata、code幾種域修飾符。這些修飾符決定了變量訪問(wèn)方式。
data:固定指前面0x00-0x7F的128個(gè)RAM,可以用acc直接讀寫(xiě),速度最快,生成的代碼也最小。
idata:固定指前面0x00-0xFF的256個(gè)RAM,其中前128和data的128完全相同,只是訪問(wèn)的方式不同。
xdata:外部擴(kuò)展RAM。
code:ROM。


二、變量定義
對(duì)變量進(jìn)行聲明時(shí)可以指定變量的存儲(chǔ)類型如:uchar data x和data uchar x相等,都是在片內(nèi)RAM區(qū)分配一個(gè)字節(jié)的空間。
同樣對(duì)于指針變量的聲明,因涉及到指針變量本身的存儲(chǔ)位置和指針?biāo)赶虻拇鎯?chǔ)位置不同而進(jìn)行相應(yīng)的存儲(chǔ)區(qū)類型關(guān)鍵字的聲明。
如下一句代碼,表示的是:指在RAM區(qū)分配一個(gè)指針變量(“*”號(hào)后的關(guān)鍵字的作用),而且這個(gè)指針本身指向xdata區(qū)(“*”前xdata關(guān)鍵字的作用)


三、指針變量與存儲(chǔ)區(qū)域關(guān)系
定義如下變量:

第一種情況:是指在片內(nèi)RAM分配一個(gè)指針變量(“*”號(hào)后的data關(guān)鍵字的作用),而且這個(gè)指針本身指向xdata區(qū)(“*”前xdata關(guān)鍵字的作用)。這種定義方式訪問(wèn)效率最高。

第二種情況:是指在idata區(qū)域分配一個(gè)指針變量,指針變量指向xdata區(qū)域。這種訪問(wèn)效率不如第一種。

第三種情況:是指在xdata區(qū)域分配一個(gè)指針變量,指針變量指向xdata區(qū)域。這種訪問(wèn)效率不如第二種。

第四種情況:這種定義方式是錯(cuò)誤,該指針變量只能訪問(wèn)data區(qū)域,無(wú)法訪問(wèn)xdata區(qū)域。

-
C語(yǔ)言
+關(guān)注
關(guān)注
183文章
7646瀏覽量
146201 -
變量
+關(guān)注
關(guān)注
0文章
616瀏覽量
29573
發(fā)布評(píng)論請(qǐng)先 登錄
“無(wú)注冊(cè)”修飾符如何防止變量被保存到CPU寄存器中?
c語(yǔ)言中整數(shù)的取值范圍是多少
C51語(yǔ)言的變量定義方式
探討一下C語(yǔ)言中的作用域局部變量
C語(yǔ)言中的volatile關(guān)鍵字
C語(yǔ)言類型修飾符Const的教程使用說(shuō)明
C語(yǔ)言類型修飾符Volatile的使用說(shuō)明
C51 單片機(jī)的 C 語(yǔ)言中的變量定義與硬件之間的關(guān)系
C語(yǔ)言中變量的作用域
Java四種訪問(wèn)修飾符及訪問(wèn)范圍
快速掌握C語(yǔ)言關(guān)鍵字
淺析C語(yǔ)言中的變量修飾符
評(píng)論