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

[复制链接]
 楼主| 午夜粪车 发表于 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 | 显示全部楼层
zhenykun 发表于 2021-8-14 21:03 | 显示全部楼层
看XC8用户指南 4.4.8.1 CONST TYPE QUALIFIER
huangchui 发表于 2021-8-14 21:07 | 显示全部楼层
C语言里面的定义字符串的语法, 很常用啊
xxrs 发表于 2021-8-14 21:09 | 显示全部楼层
如果你需要定义到ROM区, 前面加个const修饰符.
zwll 发表于 2021-8-14 21:15 | 显示全部楼层
如果需要指定到 特定的地址, 可以参考const char str[]@0x500; 但是不建议这样用, 尽量少用绝对地址的做法.
 楼主| 午夜粪车 发表于 2021-8-14 21:19 | 显示全部楼层
是这样,在汇编里用da ,可以在rom里设定自己所需的内容。比如
ORG 1800
DA  0X1233 0X1244 0X1255。。。。。
在14位系列里,1800地址可以保存一个14位的数字,,如果采用const 这种方式,是生成一系列的retlw指令
,我希望的是在rom里充分利用空间保留我的数据,程序里采用读取flash的方法读出,而不是查表法
chenjunt 发表于 2021-8-14 21:23 | 显示全部楼层
你所需要存储的数据量有多大?
lizye 发表于 2021-8-14 21:25 | 显示全部楼层
如果就几十个而已, 真的没必要这么省.....
heweibig 发表于 2021-8-14 21:27 | 显示全部楼层
即使数据非常大的话, 只要整个flash放得下你的代码+数据, 也没必要折腾...
 楼主| 午夜粪车 发表于 2021-8-14 21:29 | 显示全部楼层
用flash存储采集的数据,量有些大,得省着点。如果没有办法,也只好将就了
wangzsa 发表于 2021-8-14 21:32 | 显示全部楼层
存储采集数据的话,  预留一片区域出来,直接用flash读/写函数来操作就可以了嘛...
chuxh 发表于 2021-8-14 21:33 | 显示全部楼层
不过,如果太频繁的话, 要注意flash擦写次数是有限制的..
 楼主| 午夜粪车 发表于 2021-8-14 21:35 | 显示全部楼层
有预存对比,这种操作并不频繁。
renyaq 发表于 2021-8-14 21:41 | 显示全部楼层
估计产品周期内几百次吧,还真没太注意寿命问题
 楼主| 午夜粪车 发表于 2021-8-14 21:44 | 显示全部楼层

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先
您需要登录后才可以回帖 登录 | 注册

本版积分规则

867

主题

10194

帖子

3

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