搜索
bottom↓
回复: 16

如何在PIC中定义绝对地址变量?

[复制链接]

出0入0汤圆

发表于 2018-5-2 15:06:29 | 显示全部楼层 |阅读模式

大家好,我目前是想在PIC里内部FLASH定位一段数据,比如把 0x11强制写在到内部FLASH地址0x0200段,目前用的编译器是MPLAB 8.9版本,MCU是PIC18F25K80

我在网上查了好多指令,比如:
//volatile unsigned char Portvar __at 0x06;
//int inputBuffer[100] @ 0x2000;
都不能将数据定位在想要的地址段里,请问大家有什么好的方法吗?刚接触这个MCU,向大家请教下。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2018-5-2 16:52:02 | 显示全部楼层
谢谢大家,已经解决问题了,编译器的伪指令问题,解决方法是:

#pragma romdata Appvolatile=0x1000
rom unsigned char Appvol[8]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88};

这样就在MCU ROM中的0x1000为起始地址强行放下8字节数据

出0入0汤圆

 楼主| 发表于 2018-5-2 15:23:33 | 显示全部楼层
是不是PIC已经没多少人用了,网上查半天,连编译器手册也下了,试了也不行。

出0入0汤圆

发表于 2018-5-2 15:54:49 | 显示全部楼层
关键字: XC8用户指南。。。
网上搜一下就有了。

出0入0汤圆

 楼主| 发表于 2018-5-2 15:56:36 | 显示全部楼层
yoursnemo 发表于 2018-5-2 15:54
关键字: XC8用户指南。。。
网上搜一下就有了。

我下载了论坛的,里面介绍的三种方法试了之后都不行

https://www.amobbs.com/thread-5636252-1-1.html?_dsign=d9eb7b4b

出0入0汤圆

发表于 2018-5-2 16:05:29 | 显示全部楼层
现在都流行用MPLAB X了,MPLAB 很少用了吧

出0入0汤圆

发表于 2018-5-2 16:07:57 | 显示全部楼层
一心2013 发表于 2018-5-2 15:56
我下载了论坛的,里面介绍的三种方法试了之后都不行

https://www.amobbs.com/thread-5636252-1-1.html?_ ...

你是要存在ROM还是RAM呀?

存在ROM区用CONST限定符+@地址,存在RAM可以用volatile限定符+@地址。

出0入0汤圆

 楼主| 发表于 2018-5-2 16:19:37 | 显示全部楼层
yoursnemo 发表于 2018-5-2 16:07
你是要存在ROM还是RAM呀?

存在ROM区用CONST限定符+@地址,存在RAM可以用volatile限定符+@地址。 ...

就是在程序中固定的地址里定义几个字节的数据业作为程序版本号。

是想存在ROM里,其实就是MCU的内部FLAHS,在固定的地址,每次通过BOOTLOADER升级时,先读程序版本号,再决定是否升级

目前就是卡在如何在程序中强行把版本号定在绝对地址上。

出0入0汤圆

发表于 2018-5-2 16:30:45 | 显示全部楼层
楼上正解

出0入0汤圆

发表于 2018-5-2 15:06:30 | 显示全部楼层
一心2013 发表于 2018-5-2 16:19
就是在程序中固定的地址里定义几个字节的数据业作为程序版本号。

是想存在ROM里,其实就是MCU的内部FLAH ...

用const就行了。

出0入0汤圆

发表于 2018-5-2 16:46:45 | 显示全部楼层
你用的MCC18编译器还是XC8编译器
MCC18放ROM是const rom unsigned int xxx,定义地址我也忘了,大概是@
xc8是const unsigned char xxx[4] __at(0x0000) = {0, 1, 2, 3};

出0入0汤圆

 楼主| 发表于 2018-5-2 16:54:13 | 显示全部楼层

虽然最终没采用这位网友的方法,但回答得比较多,所以莫元给这位网友,同时谢谢大家的回复

出0入0汤圆

发表于 2018-5-13 13:28:46 | 显示全部楼层
编译器还是用的MCC18啊?

出0入0汤圆

 楼主| 发表于 2018-5-13 22:26:00 | 显示全部楼层
leolong03 发表于 2018-5-13 13:28
编译器还是用的MCC18啊?

其实我也是第一次用这个芯片 ,不知道 哪个编译器好,公司用这个我也就用这个,但从各方反应来看,应该是一个很古董的东西

出0入0汤圆

发表于 2018-5-14 08:32:57 | 显示全部楼层
一心2013 发表于 2018-5-13 22:26
其实我也是第一次用这个芯片 ,不知道 哪个编译器好,公司用这个我也就用这个,但从各方反应来 ...

看写法像,建议用他们新的XC8,所有的8位MCU都可以用这个了

出0入0汤圆

发表于 2018-5-23 02:44:46 | 显示全部楼层
本帖最后由 K7toubleaz 于 2018-5-23 02:46 编辑

用XC8就看XC8的用戶手冊  25頁有說绝对寻址的方式

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2018-5-23 08:56:12 | 显示全部楼层
K7toubleaz 发表于 2018-5-23 02:44
用XC8就看XC8的用戶手冊  25頁有說绝对寻址的方式

谢谢坛友资料,我刚才看了下,那个指令我之前试过,不行,可能是编译器问题,公司用的是Mplab V8.90,估计是比较旧的了,现在准备转Freescale,也懒得换了。我到时整理个工程出来,给大家以后参考。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-16 04:03

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表