一些简单代码的区别上的问题

[复制链接]
1960|14
 楼主| 弹弓 发表于 2014-3-1 23:28 | 显示全部楼层 |阅读模式
在这里我想问一下unsigned char code table_d[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9与下面这句有什么不同
unsigned char  table_d[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};先谢谢大家了。
amwrdfe 发表于 2014-3-1 23:33 | 显示全部楼层
下面的数组,运行中不小心把它改了,显示还会正确吗。
再说,一个常量放在ram里纯属浪费啊。
 楼主| 弹弓 发表于 2014-3-2 00:03 | 显示全部楼层
amwrdfe 发表于 2014-3-1 23:33
下面的数组,运行中不小心把它改了,显示还会正确吗。
再说,一个常量放在ram里纯属浪费啊。 ...

我自己写的时候,和看资料的时候,都是uchar table[]=这样写的,能显示。能说简单点吗?我只能看懂一点点你写的意思。
wang168506 发表于 2014-3-2 00:29 | 显示全部楼层
unsigned char code table_d[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//
unsigned char           table_d[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
从你上边复制的,一目了然吧,没啥不同呀  不过你那个code估计有个结构体之类的定义,还有楼上那位,人都说了是数码管显示了,肯定是调用,怎么可能修改呢,这就跟宏定义一样,支持这样做,程序显得有层级,而且修改方便,差错容易!
创隆电子 发表于 2014-3-2 08:54 | 显示全部楼层
CODE是把数组定义在程序存储区,下面的则不是
diy1997 发表于 2014-3-2 10:10 | 显示全部楼层
code--数据放ROM里.数据是从ROM里直接读取,不能修改.

其实下面的也是放在ROM里,不过上电初始化时它会在RAM里开辟一个空间,然后从ROM里读取数据到这个空间,以后程序都是从这个空间里读取数据,可以被修改.

对于这种场合用CODE的好处是明显的,既可以节省RAM开销又保证数据不会被意外修改.

评分

参与人数 3威望 +4 收起 理由
ocon + 2 赞一个!
牧马人夏峥 + 1 很给力!
小庄2 + 1 很给力!

查看全部评分

 楼主| 弹弓 发表于 2014-3-2 10:50 | 显示全部楼层
wang168506 发表于 2014-3-2 00:29
unsigned char code table_d[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//
unsigned char ...

谢谢。
 楼主| 弹弓 发表于 2014-3-2 10:50 | 显示全部楼层
创隆电子 发表于 2014-3-2 08:54
CODE是把数组定义在程序存储区,下面的则不是

明白了。谢谢!
 楼主| 弹弓 发表于 2014-3-2 10:51 | 显示全部楼层
diy1997 发表于 2014-3-2 10:10
code--数据放ROM里.数据是从ROM里直接读取,不能修改.

其实下面的也是放在ROM里,不过上电初始化时它会在RAM ...

讲解得很详细明了。谢谢耐心讲解了!
江陵龙少 发表于 2014-3-2 14:46 来自手机 | 显示全部楼层
diy1997 发表于 2014-3-2 10:10
code--数据放ROM里.数据是从ROM里直接读取,不能修改.

其实下面的也是放在ROM里,不过上电初始化时它会在RAM ...

good
zyj9490 发表于 2014-3-2 16:29 | 显示全部楼层
一个是常量数据表格,一个是变量,要看编译器智能不智能啊。经典是描述符是CONSTAN
mcu5i51 发表于 2014-3-2 17:07 | 显示全部楼层

两句区别就是code了,code 表示代码的意思,单从字面理解就是放入代码区(ROM,FLASH)中;
实际上要看如何定义了,这个不是C的关键字、类型,纯属自定义的;
在KEIL C51中会扩展这个为关键字,编译后直接加入程序段,不加的话在RAM中分配单元,即使你定义为const也会占用RAM;
大多数C编译器都有自己的ROM代码段关键字,如FLASH等,具体看芯片和编译器,RAM和ROM平面寻址的芯片大多直接用CONST了
mfkyygt 发表于 2014-3-2 17:26 | 显示全部楼层
学习了,mark
mcumi 发表于 2014-3-2 18:58 | 显示全部楼层
第一句看着像写汇编的写C,每个变量放那都计算过,资源最优化。
 楼主| 弹弓 发表于 2014-3-2 21:26 | 显示全部楼层
mcu5i51 发表于 2014-3-2 17:07
两句区别就是code了,code 表示代码的意思,单从字面理解就是放入代码区(ROM,FLASH)中;
实际上要看如 ...

赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

62

帖子

0

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