Microchip
直播中

彭小海

7年用户 174经验值
私信 关注
[问答]

CONST阵列的仪表板和程序存储器使用情况

我有点迷惑于XC8使用的程序内存,并用MPLABX 4.01和XC8 1 4.44做了一些测试。目标设备=具有56KB闪存的PIC16F1887(在仪表板中报告为32 K字不为30K)!仪表板报告7字程序内存,两个常量行都注释掉。仪表板报告17字程序内存,数据16[10]行注释掉。仪表板报告37字程序内存,没有注释。注意,这是单词=2字节!所以两个常量数组使用的是预期的两倍,我包括了短16位,我很好奇,因为内存使用情况是以单词报告的,它使用整个单词来存储一个字节,但是对于使用2个字节的字节不使用,对于短则使用4个字节。奇怪(http://RODYNE.COM/WP内容/上传/ 2017/10 /16F1887.PNG)2。我将项目目标更改为具有64KB的PIC18F26K42(正确地报告为仪表板中的64KB),并用相同的程序重复测试。仪表板上的TED报告程序内存的58WORD,没有任何注释再次超过预期的使用!!我试图搜索论坛和XC8文档,但放弃了。我的应用程序需要存储38 KB的数据,这也是我查看上面的芯片的原因。我假设这是其他人都知道的,但是我可以让别人知道我做错了什么,还有什么真正让程序记忆工作的秘密?谢谢

回帖(5)

王焕树

2020-3-12 11:43:55
在PIC16F设备中,WORD只有14位,因此它不能容纳两个字节。XC8每个字只存储一个字节,以便与旧设备保持兼容,旧设备必须将数据存储为一系列RETLW instrucxtions。这只在汇编程序中是可能的,XC8没有对该格式的直接支持。我不能评论您的PIC18经验。
举报

李亚东

2020-3-12 11:58:55
谢谢,你每天都能学到一些新东西,我也会感兴趣为什么在增强的图片上会出现同样的情况。
举报

王焕树

2020-3-12 12:05:04
如果您的意思是“增强型中档”设备(即PIC16F1xxx),那么它仍然是一个14位的单词。它是要存储的全部8位数据,还是仅是ASCII?
举报

李亚东

2020-3-12 12:17:03
因此,16F18857已经退出,但如果我使用短(16位)阵列,那么18F26K42将正确地拟合该阵列,从而解决了我的问题。了解16F固然很好,但对于我的其他应用来说,它仍然是一个很好的芯片:-)唯一让我困惑的是为什么18F使用双倍于字节数组的内存。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分