[PIC®/AVR®/dsPIC®产品] 关于C语言下自定义程序保留空间的数据

[复制链接]
 楼主| 彗星回归 发表于 2020-3-30 10:15 | 显示全部楼层 |阅读模式
汇编下常用
ORG 1800
DA  0X1233 0X1244 0X1255。。。。。
或者
ORG 1800
DA "THIS IS MY DATA"  
这种方法在指定程序位置保存查表数据,然后利用读取程序空间的方法查表,在C下边,这种用法是怎么实现呢,请大家指教,谢谢
ynwa 发表于 2020-3-30 10:47 | 显示全部楼层
看你用什么系列对应的C编译器。C编译器都支持在程序存储器中定义数据并指定地址。具体语法参照各个C编译器的用户指南
 楼主| 彗星回归 发表于 2020-3-30 10:58 | 显示全部楼层
ynwa 发表于 2020-3-30 10:47
看你用什么系列对应的C编译器。C编译器都支持在程序存储器中定义数据并指定地址。具体语法参照各个C编译器 ...

xc8
ynwa 发表于 2020-3-30 11:04 | 显示全部楼层

看XC8用户指南 4.4.8.1 CONST TYPE QUALIFIER
 楼主| 彗星回归 发表于 2020-3-30 11:28 | 显示全部楼层
ynwa 发表于 2020-3-30 11:04
看XC8用户指南 4.4.8.1 CONST TYPE QUALIFIER

谢谢,我找找
CoolSilicon 发表于 2020-3-31 09:23 | 显示全部楼层
C语言里面的定义字符串的语法, 很常用啊

如果你需要定义到ROM区, 前面加个const修饰符.
如果需要指定到 特定的地址, 可以参考const char str[]@0x500; 但是不建议这样用, 尽量少用绝对地址的做法.
 楼主| 彗星回归 发表于 2020-3-31 10:41 | 显示全部楼层
CoolSilicon 发表于 2020-3-31 09:23
C语言里面的定义字符串的语法, 很常用啊

如果你需要定义到ROM区, 前面加个const修饰符.

是这样,在汇编里用da ,可以在rom里设定自己所需的内容。比如
ORG 1800
DA  0X1233 0X1244 0X1255。。。。。
在14位系列里,1800地址可以保存一个14位的数字,,如果采用const 这种方式,是生成一系列的retlw指令
,我希望的是在rom里充分利用空间保留我的数据,程序里采用读取flash的方法读出,而不是查表法
CoolSilicon 发表于 2020-4-1 10:42 | 显示全部楼层
彗星回归 发表于 2020-3-31 10:41
是这样,在汇编里用da ,可以在rom里设定自己所需的内容。比如
ORG 1800
DA  0X1233 0X1244 0X1255。。。 ...

你所需要存储的数据量有多大?
如果就几十个而已, 真的没必要这么省.....
即使数据非常大的话, 只要整个flash放得下你的代码+数据, 也没必要折腾...
 楼主| 彗星回归 发表于 2020-4-1 11:49 | 显示全部楼层
CoolSilicon 发表于 2020-4-1 10:42
你所需要存储的数据量有多大?
如果就几十个而已, 真的没必要这么省.....
即使数据非常大的话, 只要整个fl ...

用flash存储采集的数据,量有些大,得省着点。如果没有办法,也只好将就了
CoolSilicon 发表于 2020-4-1 13:32 | 显示全部楼层
彗星回归 发表于 2020-4-1 11:49
用flash存储采集的数据,量有些大,得省着点。如果没有办法,也只好将就了 ...

存储采集数据的话,  预留一片区域出来,直接用flash读/写函数来操作就可以了嘛...
不过,如果太频繁的话, 要注意flash擦写次数是有限制的..
 楼主| 彗星回归 发表于 2020-4-1 18:04 | 显示全部楼层
CoolSilicon 发表于 2020-4-1 13:32
存储采集数据的话,  预留一片区域出来,直接用flash读/写函数来操作就可以了嘛...
不过,如果太频繁的话,  ...

有预存对比,这种操作并不频繁。估计产品周期内几百次吧,还真没太注意寿命问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

20

帖子

0

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

5

主题

20

帖子

0

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