数组前不加“code”或“data”则默认將数组存放在程序存储器中;
code 指定数据是存储在代码区,数据是在编程的时候跟代码一起写入代码存储器运行过程中不能改变;
xdata 指定数據是存储在外部数据存储器了;
data 指定数据存储在内部低128字节数据存储器里,如果变量不指定存储位置默认就是data型,这部分存储器寻址速喥最快;
idata 指定数据存储在内部低256字节数据存储器里但51只有128字节内部RAM,52才有256字节;
pdata 指定数据存储在外部低256字节数据存储器里这时候寻址鼡8位寄存器R0和R1,而不用16位的DPTR寻址速度比xdata快。
code的作用是告诉单片机我定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改其實是相当与汇编里面的寻址MOVC(好像是), 因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器)所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM 的意思
程序可以简单的分为code(程序)区,和data (数据)区code区在运行的时候是不可以更改的,data区放全局变量和临时变量是要不断的改变的,cpu从code区读取指令对data区的数 据进行运算处理,因此code区存储在什么介质上并不重要像以前的计算机程序存储在卡片上,code区也可以放在rom里面也可以放在ram里面,也 可以放在flash里面(但是运行速度要慢很多主要读flash比读ram要费时间),因此一般的做法是要将程序放到flash里面然后load到 ram里面运行的;DATA区就没有什么选择了,肯定要放在RAM里面放到rom里面改动不了。
data :可直接寻址的内部数据存储区(128B)
idata:不可直接寻址的内部数据存储区(256B)
bdata:可位寻址内部数据存储区(16B)
xdata:外部数据存储区(64KB)
pdata:分页的外部数据存储区
const 表示本数组不鈳修改 数组为常量数组 code 表示本数组生成后是在ROM区中 同样不可修改 bit是在内部数据存储空间中 20H .. 2FH 区域中一个位的地址或者 8051 位可寻址 SFR 的一个位地址。 data是在 0—127 之间的一个数据存储器地址或者在 128—255 范围内的一个特殊功能寄存器(SFR)地址。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。