请教各位前辈,32位变量被中断骚扰??

cd001   2011-1-7 23:21 楼主


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位运行要很长时间,我的程序不能禁止中断这么长时间)

回复评论 (8)

                                 嗯,这个是老问题了。
点赞  2011-1-7 23:44
                                 不会吧,中断没有使用全局变量啊
点赞  2011-1-8 11:54
是局部变量(unsigned long int c,d;)被中断骚扰的,  这个应该是编译器的问题吧,
各位前辈指点下,这个要怎么解决??
点赞  2011-1-8 15:45
                                 等待回答中....
点赞  2011-1-10 15:56
                                 还是没人回答
点赞  2011-1-10 21:50
                                 我也碰到了同样的问题,期待回答
点赞  2011-1-22 10:35
                                 在中断函数入口要加一个符号的
点赞  2011-1-22 22:59
在中断程序的定义中增加修饰符 @svlreg 后再试试,我也刚解决了这个问题。
点赞  2011-10-7 11:02
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复