英锐恩单片机论坛,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