- UID
- 166704
- 性别
- 男
|
大家好!我在调试程序过程中遇到了一个棘手的问题,无从下手解决。
我用的单片机型号是: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
}
} |
|