一、修飾符類型
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。
二、變量定義
對變量進(jìn)行聲明時(shí)可以指定變量的存儲類型如:uchar data x和data uchar x相等,都是在片內(nèi)RAM區(qū)分配一個(gè)字節(jié)的空間。
同樣對于指針變量的聲明,因涉及到指針變量本身的存儲位置和指針?biāo)赶虻拇鎯ξ恢貌煌M(jìn)行相應(yīng)的存儲區(qū)類型關(guān)鍵字的聲明。
如下一句代碼,表示的是:指在RAM區(qū)分配一個(gè)指針變量(“*”號后的關(guān)鍵字的作用),而且這個(gè)指針本身指向xdata區(qū)(“*”前xdata關(guān)鍵字的作用)
三、指針變量與存儲區(qū)域關(guān)系
定義如下變量:
第一種情況:是指在片內(nèi)RAM分配一個(gè)指針變量(“*”號后的data關(guān)鍵字的作用),而且這個(gè)指針本身指向xdata區(qū)(“*”前xdata關(guān)鍵字的作用)。這種定義方式訪問效率最高。
第二種情況:是指在idata區(qū)域分配一個(gè)指針變量,指針變量指向xdata區(qū)域。這種訪問效率不如第一種。
第三種情況:是指在xdata區(qū)域分配一個(gè)指針變量,指針變量指向xdata區(qū)域。這種訪問效率不如第二種。
第四種情況:這種定義方式是錯(cuò)誤,該指針變量只能訪問data區(qū)域,無法訪問xdata區(qū)域。
-
C語言
+關(guān)注
關(guān)注
180文章
7615瀏覽量
137837 -
變量
+關(guān)注
關(guān)注
0文章
613瀏覽量
28475
發(fā)布評論請先 登錄
相關(guān)推薦
“無注冊”修飾符如何防止變量被保存到CPU寄存器中?
c語言中整數(shù)的取值范圍是多少
探討一下C語言中的作用域局部變量
C語言中的volatile關(guān)鍵字
C語言類型修飾符Const的教程使用說明
C語言類型修飾符Volatile的使用說明
C51 單片機(jī)的 C 語言中的變量定義與硬件之間的關(guān)系
![<b class='flag-5'>C</b>51 單片機(jī)的 <b class='flag-5'>C</b> <b class='flag-5'>語言中</b>的<b class='flag-5'>變量</b>定義與硬件之間的關(guān)系](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C語言中變量的作用域
![<b class='flag-5'>C</b><b class='flag-5'>語言中</b><b class='flag-5'>變量</b>的作用域](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Java四種訪問修飾符及訪問范圍
快速掌握C語言關(guān)鍵字
![快速掌握<b class='flag-5'>C</b><b class='flag-5'>語言</b>關(guān)鍵字](https://file.elecfans.com/web2/M00/9B/3D/poYBAGQjnauAVXOgAABFcEbXdEE684.png)
評論