[问]unsigned char code...为什么要code?

[复制链接]
19336|12
 楼主| mfrc531 发表于 2007-6-21 19:40 | 显示全部楼层 |阅读模式

unsigned char code CUSTOM[]={ //自定义字符
0x15,0x0a,0x15,0x0a,0x15,0x0a,0x15,0x0a, //CG_RAM 点阵1
0x0a,0x15,0x0a,0x15,0x0a,0x15,0x0a,0x15, //CG_RAM 点阵2
0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02, //CG_RAM 年
0x0f,0x09,0x0f,0x09,0x0f,0x09,0x13,0x00, //CG_RAM 月
0x0f,0x09,0x09,0x0f,0x09,0x09,0x0f,0x00, //CG_RAM 日
};
如上所示
个人知道51是哈佛结构的,分数据存储区和代码存储区,

问题是为什么要把上面这么多的数据放到code区?
有什么讲究或好处么?
为什么不放到data区呢,甚至xdata区呢?
wjy1107 发表于 2007-6-22 07:53 | 显示全部楼层

这么做是为了节约片上的RAM阿

一般低端的单片机,片上的data空间只有几十个字节哦。所以只能存在程序空间中咯~
wjy1107 发表于 2007-6-22 07:54 | 显示全部楼层

还有,谁告诉你51一定是哈佛结构的哦!

 楼主| mfrc531 发表于 2007-6-22 08:29 | 显示全部楼层

书上说是哈佛结构的

难道51的构架还有几种吗
lixun00 发表于 2007-6-22 11:11 | 显示全部楼层

从指令分开上看是哈佛结构

HWM 发表于 2007-6-22 11:18 | 显示全部楼层

因为你定义的数据是常量,放在DATA或XDATA区中浪费了,

故被定位在CODE(就是程序存储器)区内。
csq463276932 发表于 2011-3-28 11:34 | 显示全部楼层
谢谢,学习。
SHUJIEWS 发表于 2011-3-28 12:11 | 显示全部楼层
你只要搞清楚ROM是做什么用的,RAM做什么用的你会有更多收获
huangqi412 发表于 2011-3-28 12:34 | 显示全部楼层
你放在RAM区,也需要在ROM里占用同样的大小,   不然,上电时候,你RAM里指定数据从何而来?
反之,放在ROM的数据,只占RAM容量。
如果不需要修改,当然放ROM了。
huangqi412 发表于 2011-3-28 12:35 | 显示全部楼层
反之,放在ROM的数据,只占ROM容量。
abin0415 发表于 2011-3-28 21:46 | 显示全部楼层
明白一点了、
奥卡姆剃刀 发表于 2016-3-3 11:32 | 显示全部楼层
顶一个
autopccopy 发表于 2016-3-3 12:23 | 显示全部楼层
点阵数据(常量)当然放ROM,只读嘛。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

128

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部