全局绝对变量为何在执行中断程序中的最后一句
全局绝对变量为何在执行中断程序中的最后一句(不管是什么语句)时总被清零?下面中断程序中,只要最后执行一句,全局绝对变量总清零。我用的是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
} 在picc中指定地址的全局变量,编译器并不保留其地址。
在picc中指定地址的全局变量,编译器并不保留其地址。容易被其它变量覆盖,不应该指定变量地址。
页:
[1]