各位大神,目前小弟遇到的问题是:在头文件里定义的变量值在程序运行时被篡改。我理解的所用的18F6622单片机的RAM是4K byte,那么是不是可以定义大概4K byte的变量呢?我的lkr文件是按如下改的,头文件的大概定义格式是按下面这样定义的。统计了一下,没初始化和初始化的变量字节数要远小于在lkr里所开放的空间,那么为什么还会出现变量被篡改的问题呢?困扰多时了,请各位高手不吝赐教,感激涕零。
/////////以下为lkr文件的更改////////////////
ACCESSBANK NAME=accessram START=0x0 END=0x0FF
DATABANK NAME=gpr0 START=0x100 END=0x8FF
DATABANK NAME=gpr9 START=0x900 END=0xCFF
DATABANK NAME=gpr13 START=0xD00 END=0xEF3
DATABANK NAME=dbgspr START=0xEF4 END=0xEFF PROTECTED
DATABANK NAME=gpr15 START=0xF00 END=0xF5F
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED
SECTION NAME=CONFIG ROM=config
SECTION NAME=big RAM=gpr0
SECTION NAME=sma RAM=gpr9
STACK SIZE=0x100 RAM=gpr13
/////////以下为头文件的定义格式////////////////
#pragma udata big=0x100
此处定义了大概200多个字节的变量
#pragma udata
#pragma idata sma=0x900
此处定义了大概100多个字节的变量
#pragma idata |