首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

codewarrior程序调试求助!

codewarrior程序调试求助!

大家好!我在调试程序过程中遇到了一个棘手的问题,无从下手解决。
   我用的单片机型号是:9S12XHZ256,程序中使用到了浮点运算。
   程序烧写完成,运行,一段时间后程序会跳入如下函数,跳不出来。不知道是什么原因?请大侠们指点,谢谢!我应该从哪方面检查程序呢?

void F_FRLONGK (void)
{
  asm {
              LDD     _K_mant(2)
              BNE     FRLONGK_0    /* not zero */
              LDX     _K_mant(0)
              BNE     FRLONGK_0    /* not zero */
              /* { */
              /*   val == 0. */
              /* } */
              STD     _K_exp(0)
              RTS

  FRLONGK_0:  /* { */
              /*   D = mant[2..3] */
              /* } */
              LDX     #(125+32)
              TST     _K_mant(0)
              BMI     FRLONGK_1     /* already normalized */

  FRLONGK_2:  DEX
              LSLD
#ifdef __HCS12X__
              ROLW    _K_mant(0)
#else
              ROL     _K_mant(1)
              ROL     _K_mant(0)
#endif
              BPL     FRLONGK_2     /* not normalized yet */

  FRLONGK_1:  STAA    _K_mant(2)
              STX     _K_exp(0)
              RTS
  } /* msa */
}
void F_FREXP (void)
{
  asm {
               LDD       _K_exp(0)
               BEQ       FREXP_0      /* number zero or very small! */

    FREXP_1:   SUBD      #125
               STD       _L_exp(0)
               LDD       #125
               STD       _K_exp(0)
               RTS

    FREXP_0:   LDAB      #24          /* A is already 0. Same as "LDD #24" */
               STD       _K_exp(0)
               PULD
               __PIC_JSR(F_NORMK)     /* D not touched */
               PSHD
               LDD       _K_exp(0)
               BNE       FREXP_1      /* number not zero */

               STD       _L_exp(0)
               RTS
  }
}
返回列表