打印

关于C语言下自定义程序保留空间的数据

[复制链接]
2595|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
午夜粪车|  楼主 | 2021-8-14 20:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
汇编下常用
ORG 1800
DA  0X1233 0X1244 0X1255。。。。。
或者
ORG 1800
DA "THIS IS MY DATA"  
这种方法在指定程序位置保存查表数据,然后利用读取程序空间的方法查表,在C下边,这种用法是怎么实现呢,请大家指教,谢谢

使用特权

评论回复
沙发
juventus9554| | 2021-8-14 20:57 | 只看该作者
看你用什么系列对应的C编译器。

使用特权

评论回复
板凳
renyaq| | 2021-8-14 20:58 | 只看该作者
C编译器都支持在程序存储器中定义数据并指定地址。具体语法参照各个C编译器的用户指南

使用特权

评论回复
地板
午夜粪车|  楼主 | 2021-8-14 21:01 | 只看该作者
xc8

使用特权

评论回复
5
zhenykun| | 2021-8-14 21:03 | 只看该作者
看XC8用户指南 4.4.8.1 CONST TYPE QUALIFIER

使用特权

评论回复
6
huangchui| | 2021-8-14 21:07 | 只看该作者
C语言里面的定义字符串的语法, 很常用啊

使用特权

评论回复
7
xxrs| | 2021-8-14 21:09 | 只看该作者
如果你需要定义到ROM区, 前面加个const修饰符.

使用特权

评论回复
8
zwll| | 2021-8-14 21:15 | 只看该作者
如果需要指定到 特定的地址, 可以参考const char str[]@0x500; 但是不建议这样用, 尽量少用绝对地址的做法.

使用特权

评论回复
9
午夜粪车|  楼主 | 2021-8-14 21:19 | 只看该作者
是这样,在汇编里用da ,可以在rom里设定自己所需的内容。比如
ORG 1800
DA  0X1233 0X1244 0X1255。。。。。
在14位系列里,1800地址可以保存一个14位的数字,,如果采用const 这种方式,是生成一系列的retlw指令
,我希望的是在rom里充分利用空间保留我的数据,程序里采用读取flash的方法读出,而不是查表法

使用特权

评论回复
10
chenjunt| | 2021-8-14 21:23 | 只看该作者
你所需要存储的数据量有多大?

使用特权

评论回复
11
lizye| | 2021-8-14 21:25 | 只看该作者
如果就几十个而已, 真的没必要这么省.....

使用特权

评论回复
12
heweibig| | 2021-8-14 21:27 | 只看该作者
即使数据非常大的话, 只要整个flash放得下你的代码+数据, 也没必要折腾...

使用特权

评论回复
13
午夜粪车|  楼主 | 2021-8-14 21:29 | 只看该作者
用flash存储采集的数据,量有些大,得省着点。如果没有办法,也只好将就了

使用特权

评论回复
14
wangzsa| | 2021-8-14 21:32 | 只看该作者
存储采集数据的话,  预留一片区域出来,直接用flash读/写函数来操作就可以了嘛...

使用特权

评论回复
15
chuxh| | 2021-8-14 21:33 | 只看该作者
不过,如果太频繁的话, 要注意flash擦写次数是有限制的..

使用特权

评论回复
16
午夜粪车|  楼主 | 2021-8-14 21:35 | 只看该作者
有预存对比,这种操作并不频繁。

使用特权

评论回复
17
renyaq| | 2021-8-14 21:41 | 只看该作者
估计产品周期内几百次吧,还真没太注意寿命问题

使用特权

评论回复
18
午夜粪车|  楼主 | 2021-8-14 21:44 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

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

本版积分规则

867

主题

10194

帖子

3

粉丝