本帖最后由 heqiaosheng 于 2014-11-6 14:02 编辑
编译环境:MPLAB C18 C 编译器。
默认情况下, MPLAB C18 假设对象不超过存储区边界。 要安全使用大于 256 字节的对象,需要执行下列步骤:
例如我需要在PIC18f25k80中想创建一个空间大于256的数组,串口接收缓存数组UartRecBuf[768]。
第一步:在程序中,用伪指令#pragma udata或#pragma udata将对象分配到恰当的段。
#define UART_REC_BUF_LEN 768
#pragma udata buffer_uart
u8 buffer1[UART_REC_BUF_LEN];
#pragma udata
第二步:定义指针访问对象。
u8 *UartRecBuf = &buffer1[0];
第三步:必须在链接描述文件中创建一个跨越多个存储区的区域。
文件地址:安装目录v3.45inLKR18f25k80_g.lkr
DATABANK NAME=gpr0 START=0x60 END=0xFF
DATABANK NAME=gpr1 START=0x100 END=0x1FF
DATABANK NAME=gpr2 START=0x200 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
DATABANK NAME=gpr4 START=0x400 END=0x4FF
DATABANK NAME=gpr5 START=0x500 END=0x5FF
DATABANK NAME=gpr6 START=0x600 END=0x6FF
DATABANK NAME=gpr7 START=0x700 END=0x7FF
DATABANK NAME=gpr8 START=0x800 END=0x8FF
DATABANK NAME=gpr9 START=0x900 END=0x9FF
DATABANK NAME=big0 START=0xA00 END=0xCFF PROTECTED
第四步:
必须通过在链接描述文件中添加 SECTION 伪指令,将对象所在的段 (在第 1 步中创建)分配到新的区域 (在第 3 步中创建)。
文件地址:安装目录v3.45inLKR18f25k80_g.lkr
SECTION NAME=buffer_uart RAM=big0
QQ截图20141106133658.png (124.06 KB, 下载次数: 0)
下载附件
256
2014-11-6 13:37 上传
MPLAB C18 C 编译器入门 [06版] (中文).pdf
(5.91 MB, 下载次数: 26)
2014-11-6 13:48 上传
点击文件名下载附件
MPLAB C18 C 编译器入门
一周热门 更多>