winnie 发表于 2009-4-26 10:51:34

全局绝对变量为何在执行中断程序中的最后一句

全局绝对变量为何在执行中断程序中的最后一句(不管是什么语句)时总被清零?
下面中断程序中,只要最后执行一句,全局绝对变量总清零。我用的是picmate2002v3.3ht-tech c 8.05pl

PICC不能定义全局绝对变量吗?
注:程序中,全局变量、局部变量只有几个,RAM有足够空间。
uchar Rccs ;
unsigned char Rcflag @ 0x70;   
bit FS   @ (unsigned)&Rcflag*8+7;
bit FL@ (unsigned)&Rcflag*8+3;
void interrupt Service(void)
{
uchar rcdata;
   
if(RCIF)
{
FS=1;
rcdata=RCREG;
Rccs+=rcdata;
}
RCIF=0;                            //执行此句之前Rcflag(70H)=0x80;执行此句之后Rcflag(70H)=0
}
如果在“RCIF=0;”后面加“Rcflag=0x22;Rcflag=0x33”,
void interrupt Service(void)
{
uchar rcdata;
   
if(RCIF)
{
FS=1;
rcdata=RCREG;
Rccs+=rcdata;
}
RCIF=0;            //执行此句之前Rcflag(70H)=0x80;执行此句之后Rcflag(70H)=0x80
Rcflag=0x22;   //执行此句之后Rcflag(70H)=0x22
Rcflag=0x33;    //执行此句之后Rcflag(70H)=0
}

winnie 发表于 2009-4-26 10:51:55

在picc中指定地址的全局变量,编译器并不保留其地址。
在picc中指定地址的全局变量,编译器并不保留其地址。容易被其它变量覆盖,不应该指定变量地址。
页: [1]
查看完整版本: 全局绝对变量为何在执行中断程序中的最后一句