Microchip PIC MPLAB(MCC18)编译器将其内存划分为256个块(0x100)。

如何创建大于256个字节的数组?

char buffer[256];


为了达到256,我需要使用#pragma进行单独的分段

#pragma udata segment_name
char buffer[256];
#pragma udata


因此,我可以强迫MCC18分配更大的缓冲区吗?或合并两个内存段?

最佳答案

粘贴以下来源的答案:

http://forum.microchip.com/printable.aspx?m=39357

以防万一它消失了。


只需三个简单步骤,第1步:分配
将变量放入
源代码:

#pragma udata big_scn
char big_array[0x180];
#pragma udata


步骤2:在中创建更大的区域
链接描述文件:之前:

DATABANK NAME=gpr3 START=0x300 END=0x3FF
DATABANK NAME=gpr4 START=0x400 END=0x4FF


后:

DATABANK NAME=big_scn START=0x300 END=0x47F PROTECTED
DATABANK NAME=gpr4    START=0x480 END=0x4FF
SECTION  NAME=big_scn RAM=big_scn


步骤3:仅通过
指针:

char *big_array_ptr = &big_array[0];
big_array_ptr[0x100] = 5;
while( big_array_ptr[x] != 20 )



注意:我相信您仍然可以直接引用数组,而不必使用指针。似乎为我工作。

在以下文档中可以找到相同的信息:

MPLAB C18 C Compiler Getting Started Guide

第104页

07-24 16:01