仿真器调试问题

[复制链接]
5273|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 | 显示全部楼层
没有,那里不用加;
qzhui121 发表于 2010-4-21 15:30 | 显示全部楼层
程序没错啊
 楼主| 别震了行不 发表于 2010-4-21 15:31 | 显示全部楼层
但是就是调不过去啊,我很郁闷,很迷茫
冷漠 发表于 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
 楼主| 别震了行不 发表于 2010-4-21 16:07 | 显示全部楼层
是啊,不光这段运行不过去,但是编译却成功了。
以前也有过这情况
void        Delay2us( )
{
        unsigned char i;
        for ( i=2; i!=0; i-- );
}
过不去,跟上面情形一样
我改成
void        Delay2us( )
{
     _nop_();
    _nop_();
}过去了
 楼主| 别震了行不 发表于 2010-4-21 19:33 | 显示全部楼层
自己顶,没人知道吗
电子write_cai 发表于 2010-4-21 19:37 | 显示全部楼层
可能延时时间长了,你时间短点看看。
wangjie5540 发表于 2010-4-21 19:38 | 显示全部楼层
你说的过不去是什么意思?
你是用仿真的么?截图一下如何?
 楼主| 别震了行不 发表于 2010-4-21 19:43 | 显示全部楼层
过不去就是调试到那一步,再往下就不走了。
不是延时长的问题,上面有延时2us的也过不去啊
 楼主| 别震了行不 发表于 2010-4-22 09:30 | 显示全部楼层
ayb_ice 发表于 2010-4-22 10:06 | 显示全部楼层
建议先把程序写规范
 楼主| 别震了行不 发表于 2010-4-22 10:14 | 显示全部楼层
ls
怎么写才算规范啊?
木字四点水 发表于 2010-4-22 10:32 | 显示全部楼层
是单步调试?
 楼主| 别震了行不 发表于 2010-4-22 10:38 | 显示全部楼层
是的,我很不明白为什么会不走了呢,按一下“步入”的调试按钮,不往下走,再那个按钮就按不了了。我没有遇到过这种情况,所以一点办法都没有
木字四点水 发表于 2010-4-22 10:53 | 显示全部楼层
程序是对的,编译器的问题吧,缩短延时就可以了
 楼主| 别震了行不 发表于 2010-4-22 11:11 | 显示全部楼层
ls
不是我跟延时较真,这只是一个例子。我要问的是这类情况是哪里的问题,要怎么处理。
按您的方法改过,还是不行啊。
mengzs 发表于 2010-4-22 11:14 | 显示全部楼层
建议将仿真器的程序文件卸载重装一下,卸的干净一些 ,重装,再试一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

44

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部