一、修飾符類型
51單片機(jī)采用哈佛結(jié)構(gòu)。內(nèi)存空間編址有重疊。可以在不同總線上定義不同的變量。在KEIL C51中定義了data、idata、xdata、code幾種域修飾符。這些修飾符決定了變量訪問方式。
data:固定指前面0x00-0x7F的128個RAM,可以用acc直接讀寫,速度最快,生成的代碼也最小。
idata:固定指前面0x00-0xFF的256個RAM,其中前128和data的128完全相同,只是訪問的方式不同。
xdata:外部擴(kuò)展RAM。
code:ROM。
二、變量定義
對變量進(jìn)行聲明時(shí)可以指定變量的存儲類型如:uchar data x和data uchar x相等,都是在片內(nèi)RAM區(qū)分配一個字節(jié)的空間。
同樣對于指針變量的聲明,因涉及到指針變量本身的存儲位置和指針?biāo)赶虻拇鎯ξ恢貌煌M(jìn)行相應(yīng)的存儲區(qū)類型關(guān)鍵字的聲明。
如下一句代碼,表示的是:指在RAM區(qū)分配一個指針變量(“*”號后的關(guān)鍵字的作用),而且這個指針本身指向xdata區(qū)(“*”前xdata關(guān)鍵字的作用)
三、指針變量與存儲區(qū)域關(guān)系
定義如下變量:
第一種情況:是指在片內(nèi)RAM分配一個指針變量(“*”號后的data關(guān)鍵字的作用),而且這個指針本身指向xdata區(qū)(“*”前xdata關(guān)鍵字的作用)。這種定義方式訪問效率最高。
第二種情況:是指在idata區(qū)域分配一個指針變量,指針變量指向xdata區(qū)域。這種訪問效率不如第一種。
第三種情況:是指在xdata區(qū)域分配一個指針變量,指針變量指向xdata區(qū)域。這種訪問效率不如第二種。
第四種情況:這種定義方式是錯誤,該指針變量只能訪問data區(qū)域,無法訪問xdata區(qū)域。
-
C語言
+關(guān)注
關(guān)注
180文章
7628瀏覽量
139708 -
變量
+關(guān)注
關(guān)注
0文章
614瀏覽量
28752
發(fā)布評論請先 登錄
相關(guān)推薦
“無注冊”修飾符如何防止變量被保存到CPU寄存器中?
c語言中整數(shù)的取值范圍是多少
探討一下C語言中的作用域局部變量
C語言中的volatile關(guān)鍵字
C語言類型修飾符Const的教程使用說明
C語言類型修飾符Volatile的使用說明
C51 單片機(jī)的 C 語言中的變量定義與硬件之間的關(guān)系

C語言中變量的作用域

Java四種訪問修飾符及訪問范圍
快速掌握C語言關(guān)鍵字

評論