查看: 1954|回复: 3

[S12] 9S12XHZ程序调试问题求助!

[复制链接]

该用户从未签到

1

主题

6

帖子

0

新手上路

Rank: 1

积分
33
最后登录
1970-1-1
发表于 2012-11-22 08:48:43 | 显示全部楼层 |阅读模式
大家好!我在调试程序过程中遇到了一个棘手的问题,无从下手解决。
               我用的单片机型号是: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
              }
            }
我知道答案 目前已有2人回答
回复

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2012-11-22 09:20:52 | 显示全部楼层

RE:9S12XHZ程序调试问题求助!

不好意思,我不会汇编,实在看不懂。建议仿真一下,看看他运行到哪里了。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

6

帖子

0

新手上路

Rank: 1

积分
33
最后登录
1970-1-1
 楼主| 发表于 2012-11-23 08:28:56 | 显示全部楼层

RE:9S12XHZ程序调试问题求助!

谢谢版主的回复! codewarrior的调试窗口中,能不能通过汇编语句的位置定位到C程序中相应的位置?
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2012-11-23 08:56:23 | 显示全部楼层

RE:9S12XHZ程序调试问题求助!

应该是可以的。你通过加断点来实现。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 19:31 , Processed in 0.087521 second(s), 23 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表