| 目测超过了PIC ROM的section大小,要么拆分,要么换大容量的PIC单片机。 |
| int xdata a 就可以把a放到片外存储,比如flash |
| 可以看看换一个单片机 |
| 换个容量大点的单片机吧 |
| mplab?是pic单片机就是这样,CODE和RAM也是分页的,不能一次声明超一页,所以我一直说PIC单片机包括软件硬件很多坑 |
ZSJM 发表于 2023-9-11 19:09 你是不是只用过C51啊,在C51里面code是程序区,而大多数单片机编译器是用const来实现的。 |
| 换个单片机 |
| 容量超了换大容量的单片机即可,寻址超了换更高位数的单片机,或加存储芯片扩展。 |
| 很久以前用mplab ,现在都忘记了,如果使用const仍然出现数据量超出范围的话,多半是单片机的flash太小了。 |
| 超出存储大小 |
Longan.Wang 发表于 2023-9-12 14:54 我是怀疑不是数据大的问题,当然看不到程序,只能估... |
| 使用const修饰定义的数据,都存放在程序区的。说明你使用的MCU FLASH小了,放不下你的程序和你定义的常量了。建议根据实际情况,重新选型MCU;或者外接Flash |
ZSJM 发表于 2023-9-11 19:09 程序区都放不下,数据区难道还放的下???? |
| 数组太大, 可以考虑将固定数值不变的内容放到25Q16这样的spi flash里面, 每次编译调试下载都快很多. |
| const 去掉试试... |
| 如果数组非要这么大建议换个单片机 |
| 什么型号的单片机?换个容量大的。 |
| 无论数组在不在MAIN里,它总是需要有地方放置的。请考虑你放的地方足够大吗? |
|
如果一定要这么大的数组,那就说明单片机选型选错了 |
devcang 发表于 2023-9-7 11:50 mplab 不支持 |
| 超出存储大小,如果使用large模式+CODE 后还超,建议缩减代码、或使用外存 |