uint16 moniliangruanjianjizhun(uint16 a,uint16 b) //模拟量软件基准计算
{
unsigned long int c,d;
if(a>=b) a=0xffff;
else
{
//_asm("sim"); //禁止中断后计算正常
c=a; d=c<<16; d-=c; //==d=c*0xffff;
c=b; d=d/c;
a=d;
//_asm("rim");//禁止中断后计算正常
}
return(a);
}
//如上程序,32位长整数计算会被中断骚扰, 当添加如上禁止中断后计算正常,
//请问要如何解决?? (32位运行要很长时间,我的程序不能禁止中断这么长时间)
是局部变量(unsigned long int c,d;)被中断骚扰的, 这个应该是编译器的问题吧,
各位前辈指点下,这个要怎么解决??
在中断程序的定义中增加修饰符 @svlreg 后再试试,我也刚解决了这个问题。