一、修飾符類型
51單片機(jī)采用哈佛結(jié)構(gòu)。內(nèi)存空間編址有重疊。可以在不同總線上定義不同的變量。在KEIL C51中定義了data、idata、xdata、code幾種域修飾符。這些修飾符決定了變量訪問方式。
data:固定指前面0x00-0x7F的128個(gè)RAM,可以用acc直接讀寫,速度最快,生成的代碼也最小。
idata:固定指前面0x00-0xFF的256個(gè)RAM,其中前128和data的128完全相同,只是訪問的方式不同。
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)鍵字的作用)。這種定義方式訪問效率最高。
第二種情況:是指在idata區(qū)域分配一個(gè)指針變量,指針變量指向xdata區(qū)域。這種訪問效率不如第一種。
第三種情況:是指在xdata區(qū)域分配一個(gè)指針變量,指針變量指向xdata區(qū)域。這種訪問效率不如第二種。
第四種情況:這種定義方式是錯(cuò)誤,該指針變量只能訪問data區(qū)域,無(wú)法訪問xdata區(qū)域。
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136696 -
變量
+關(guān)注
關(guān)注
0文章
613瀏覽量
28360
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論