打印

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

[复制链接]
1599|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估计有个结构体之类的定义,还有楼上那位,人都说了是数码管显示了,肯定是调用,怎么可能修改呢,这就跟宏定义一样,支持这样做,程序显得有层级,而且修改方便,差错容易!

使用特权

评论回复
5
创隆电子| | 2014-3-2 08:54 | 只看该作者
CODE是把数组定义在程序存储区,下面的则不是

使用特权

评论回复
6
diy1997| | 2014-3-2 10:10 | 只看该作者
code--数据放ROM里.数据是从ROM里直接读取,不能修改.

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

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

使用特权

评论回复
评分
参与人数 3威望 +4 收起 理由
ocon + 2 赞一个!
牧马人夏峥 + 1 很给力!
小庄2 + 1 很给力!
7
弹弓|  楼主 | 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 ...

谢谢。

使用特权

评论回复
8
弹弓|  楼主 | 2014-3-2 10:50 | 只看该作者
创隆电子 发表于 2014-3-2 08:54
CODE是把数组定义在程序存储区,下面的则不是

明白了。谢谢!

使用特权

评论回复
9
弹弓|  楼主 | 2014-3-2 10:51 | 只看该作者
diy1997 发表于 2014-3-2 10:10
code--数据放ROM里.数据是从ROM里直接读取,不能修改.

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

讲解得很详细明了。谢谢耐心讲解了!

使用特权

评论回复
10
江陵龙少| | 2014-3-2 14:46 | 只看该作者
diy1997 发表于 2014-3-2 10:10
code--数据放ROM里.数据是从ROM里直接读取,不能修改.

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

good

使用特权

评论回复
11
zyj9490| | 2014-3-2 16:29 | 只看该作者
一个是常量数据表格,一个是变量,要看编译器智能不智能啊。经典是描述符是CONSTAN

使用特权

评论回复
12
mcu5i51| | 2014-3-2 17:07 | 只看该作者

两句区别就是code了,code 表示代码的意思,单从字面理解就是放入代码区(ROM,FLASH)中;
实际上要看如何定义了,这个不是C的关键字、类型,纯属自定义的;
在KEIL C51中会扩展这个为关键字,编译后直接加入程序段,不加的话在RAM中分配单元,即使你定义为const也会占用RAM;
大多数C编译器都有自己的ROM代码段关键字,如FLASH等,具体看芯片和编译器,RAM和ROM平面寻址的芯片大多直接用CONST了

使用特权

评论回复
13
mfkyygt| | 2014-3-2 17:26 | 只看该作者
学习了,mark

使用特权

评论回复
14
mcumi| | 2014-3-2 18:58 | 只看该作者
第一句看着像写汇编的写C,每个变量放那都计算过,资源最优化。

使用特权

评论回复
15
弹弓|  楼主 | 2014-3-2 21:26 | 只看该作者
mcu5i51 发表于 2014-3-2 17:07
两句区别就是code了,code 表示代码的意思,单从字面理解就是放入代码区(ROM,FLASH)中;
实际上要看如 ...

赞一个

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

62

帖子

0

粉丝