一、修飾符類型
51單片機采用哈佛結構。內存空間編址有重疊。可以在不同總線上定義不同的變量。在KEIL C51中定義了data、idata、xdata、code幾種域修飾符。這些修飾符決定了變量訪問方式。
data:固定指前面0x00-0x7F的128個RAM,可以用acc直接讀寫,速度最快,生成的代碼也最小。
idata:固定指前面0x00-0xFF的256個RAM,其中前128和data的128完全相同,只是訪問的方式不同。
xdata:外部擴展RAM。
code:ROM。
二、變量定義
對變量進行聲明時可以指定變量的存儲類型如:uchar data x和data uchar x相等,都是在片內RAM區分配一個字節的空間。
同樣對于指針變量的聲明,因涉及到指針變量本身的存儲位置和指針所指向的存儲位置不同而進行相應的存儲區類型關鍵字的聲明。
如下一句代碼,表示的是:指在RAM區分配一個指針變量(“*”號后的關鍵字的作用),而且這個指針本身指向xdata區(“*”前xdata關鍵字的作用)
三、指針變量與存儲區域關系
定義如下變量:
第一種情況:是指在片內RAM分配一個指針變量(“*”號后的data關鍵字的作用),而且這個指針本身指向xdata區(“*”前xdata關鍵字的作用)。這種定義方式訪問效率最高。
第二種情況:是指在idata區域分配一個指針變量,指針變量指向xdata區域。這種訪問效率不如第一種。
第三種情況:是指在xdata區域分配一個指針變量,指針變量指向xdata區域。這種訪問效率不如第二種。
第四種情況:這種定義方式是錯誤,該指針變量只能訪問data區域,無法訪問xdata區域。
-
C語言
+關注
關注
180文章
7614瀏覽量
137712 -
變量
+關注
關注
0文章
613瀏覽量
28465
發布評論請先 登錄
相關推薦
評論