英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

标题: 全局绝对变量为何在执行中断程序中的最后一句 [打印本页]

作者: winnie    时间: 2009-4-26 10:51
标题: 全局绝对变量为何在执行中断程序中的最后一句
全局绝对变量为何在执行中断程序中的最后一句(不管是什么语句)时总被清零?
下面中断程序中,只要最后执行一句,全局绝对变量总清零。我用的是picmate2002  v3.3  ht-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
在picc中指定地址的全局变量,编译器并不保留其地址。
在picc中指定地址的全局变量,编译器并不保留其地址。容易被其它变量覆盖,不应该指定变量地址。




欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/) Powered by Discuz! X3.2