Board logo

标题: codewarrior程序调试求助! [打印本页]

作者: benbo610    时间: 2012-11-22 08:45     标题: 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
  }
}




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0