打印

仿真器调试问题

[复制链接]
4120|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
别震了行不|  楼主 | 2010-4-21 14:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我师傅给了我一个程序,我用仿真器调试,编译成功,没有错误,有几个警告。
然后我开始调试,但是总会有“走不下去”的情况,第一次走不下去,我直接把那段程序屏蔽了,因为我现在还用不到。接着调试,又走不下去,继续屏蔽。接着调试,这回到了延时这里
void        Delay50ms( )
{
        unsigned char i, j;
        for ( i=200; i!=0; i-- )
         for ( j=250; j!=0; j-- );
}
调到for( j=250; j!=0; j-- );那里又走不下去了。很迷茫,不知道是哪里有问题。
问高手,一般这种情况是哪里出了问题,要怎么做?

相关帖子

沙发
别震了行不|  楼主 | 2010-4-21 14:38 | 只看该作者
坐等

使用特权

评论回复
板凳
liushiming82| | 2010-4-21 14:45 | 只看该作者
是不是FOR语句少一个;呀

使用特权

评论回复
地板
别震了行不|  楼主 | 2010-4-21 14:55 | 只看该作者
没有,那里不用加;

使用特权

评论回复
5
qzhui121| | 2010-4-21 15:30 | 只看该作者
程序没错啊

使用特权

评论回复
6
别震了行不|  楼主 | 2010-4-21 15:31 | 只看该作者
但是就是调不过去啊,我很郁闷,很迷茫

使用特权

评论回复
7
冷漠| | 2010-4-21 15:50 | 只看该作者
LZ意思说,下面程序过不去?我用仿真器运行的很顺,看机器码也没问题。

void  Delay50ms( )
{
        unsigned char i, j;
        for ( i=200; i!=0; i-- )
         for ( j=250; j!=0; j-- );
}

void main(void)
{
Delay50ms();
while(1);
}

   3: void  Delay50ms( )
     4: {
     5:         unsigned char i, j;
     6:         for ( i=200; i!=0; i-- )
C:0x000F    7FC8     MOV      R7,#T2CON(0xC8)
     7:          for ( j=250; j!=0; j-- );
C:0x0011    7EFA     MOV      R6,#0xFA
C:0x0013    DEFE     DJNZ     R6,C:0013
C:0x0015    DFFA     DJNZ     R7,C:0011
     8: }
     9:  
C:0x0017    22       RET      
    10: void main(void)
    11: {
    12:  
    13: Delay50ms();
    14:  
C:0x0018    12000F   LCALL    Delay50ms(C:000F)
    15: while(1);
C:0x001B    80FE     SJMP     C:001B
C:0x001D    00       NOP

使用特权

评论回复
8
别震了行不|  楼主 | 2010-4-21 16:07 | 只看该作者
是啊,不光这段运行不过去,但是编译却成功了。
以前也有过这情况
void        Delay2us( )
{
        unsigned char i;
        for ( i=2; i!=0; i-- );
}
过不去,跟上面情形一样
我改成
void        Delay2us( )
{
     _nop_();
    _nop_();
}过去了

使用特权

评论回复
9
别震了行不|  楼主 | 2010-4-21 19:33 | 只看该作者
自己顶,没人知道吗

使用特权

评论回复
10
电子write_cai| | 2010-4-21 19:37 | 只看该作者
可能延时时间长了,你时间短点看看。

使用特权

评论回复
11
wangjie5540| | 2010-4-21 19:38 | 只看该作者
你说的过不去是什么意思?
你是用仿真的么?截图一下如何?

使用特权

评论回复
12
别震了行不|  楼主 | 2010-4-21 19:43 | 只看该作者
过不去就是调试到那一步,再往下就不走了。
不是延时长的问题,上面有延时2us的也过不去啊

使用特权

评论回复
13
别震了行不|  楼主 | 2010-4-22 09:30 | 只看该作者
再顶

使用特权

评论回复
14
ayb_ice| | 2010-4-22 10:06 | 只看该作者
建议先把程序写规范

使用特权

评论回复
15
别震了行不|  楼主 | 2010-4-22 10:14 | 只看该作者
ls
怎么写才算规范啊?

使用特权

评论回复
16
木字四点水| | 2010-4-22 10:32 | 只看该作者
是单步调试?

使用特权

评论回复
17
别震了行不|  楼主 | 2010-4-22 10:38 | 只看该作者
是的,我很不明白为什么会不走了呢,按一下“步入”的调试按钮,不往下走,再那个按钮就按不了了。我没有遇到过这种情况,所以一点办法都没有

使用特权

评论回复
18
木字四点水| | 2010-4-22 10:53 | 只看该作者
程序是对的,编译器的问题吧,缩短延时就可以了

使用特权

评论回复
19
别震了行不|  楼主 | 2010-4-22 11:11 | 只看该作者
ls
不是我跟延时较真,这只是一个例子。我要问的是这类情况是哪里的问题,要怎么处理。
按您的方法改过,还是不行啊。

使用特权

评论回复
20
mengzs| | 2010-4-22 11:14 | 只看该作者
建议将仿真器的程序文件卸载重装一下,卸的干净一些 ,重装,再试一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

44

帖子

1

粉丝