LB_BW 发表于 2012-8-2 13:48:44

单片机C语言中的code,data等 他们之间的区别。

单片机C语言中的code

code:程序存储区。

data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。

idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)

xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。

pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。这个比较特殊,而且C51好象有对此BUG,建议少用。

单片机C语言中的codecode 程序存储区, 意思是数组数据放在CODE区,也就是rom中,加快读取速度,也不占用系统资源。data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。这个比较特殊,而且C51好象有对此BUG,建议少用。

bit
是在内部数据存储空间中 20H .. 2FH 区域中一个位的地址,或者 8051 位可寻址 SFR 的一个位地址。
code
是在 0000H .. 0FFFFH 之间的一个代码地址。
data
是在 0 到 127 之间的一个数据存储器地址,或者在 128 .. 255 范围内的一个特殊功能寄存器(SFR)地址。
idata
是 0 to 255 范围内的一个 idata 存储器地址。
xdata 是 0 to 65535 范围内的一个 xdata 存储器地址。

yjamd 发表于 2012-8-2 14:27:35

谢谢 很受用

raohao101 发表于 2012-8-2 14:44:11

很有用哦,谢谢!

gaoyichuan000 发表于 2012-8-2 14:46:28

谢谢了 还以为你是要问他们有什么区别呢

beijinggood2008 发表于 2012-8-2 22:45:52

   很有用!

zyyn123 发表于 2012-8-3 07:41:34

进来学习学习。谢谢了

lichengqun85 发表于 2012-8-3 08:04:26

{:smile:}{:handshake:}

LCRPN 发表于 2012-10-6 09:04:14

请教:

IAR编译后的map文件末尾有
1 308 bytes of readonlycode memory
4 231 bytes of readonlydata memory
    276 bytes of readwrite data memory
其中“readonlycode memory”和“readonlydata memory”都是会被放到flash区的,二者有什么区别?
页: [1]
查看完整版本: 单片机C语言中的code,data等 他们之间的区别。