就是这个程序,是不是堆栈溢出了? 大家看看吧 ,图上来了

[复制链接]
 楼主| 彪哥 发表于 2007-3-25 13:44 | 显示全部楼层 |阅读模式
单步调试的时候发现运行到 fre_hund_buf = fre_count/1000以后就直接跳出for()了,根本不执行后面的    


 for(;((1200>=fre_count)&&(fre_count>=1000));)     //如果cy_add=0,执行1000--1200加
      {
        fre_count++;
           fre_hund_buf = fre_count/1000;
           fre_ten_buf = (fre_count-(fre_hund_buf*1000))/100;
           fre_one_buf = (fre_count-(fre_hund_buf*1000)-(fre_ten_buf*100))/10;
           fre_pint_buf = (fre_count-(fre_hund_buf*1000)-(fre_ten_buf*100)-(fre_one_buf*10));
         fre_time =10000000/((fre_hund_buf*1000)+(fre_ten_buf*100)+(fre_one_buf*10)+fre_pint_buf);      //将设置的频率值转换成时间周期,单位s
                     fre_int_count = fre_time/250;                  //频率定时器中断次数
                    fre_start = 255-(fre_time-(fre_int_count*250));     //频率定时器初值
                 display();
           delay(3000);
        if((FRE_ADD_set!=0)||(fre_count>1200))   break;
        } 
         
      if(fre_count>1200)                       //如果设置值超过1200,从最低开始计数
         { 
       fre_count = 20;
          fre_pint_buf = 0;
         }


这段程序是4位的数据取显示位,分别是千位、百位、十位、个位, 
fre_hund_buf = fre_count/1000;这条语句执行完后,fre_hund_buf居然等于10, 

dai_weis 发表于 2007-3-25 13:48 | 显示全部楼层

图看不到,如果fre_count 大于9999那么

得10 也就正常,断点单步跟踪看看
 楼主| 彪哥 发表于 2007-3-25 13:48 | 显示全部楼层
 楼主| 彪哥 发表于 2007-3-25 13:49 | 显示全部楼层

位什么图贴不上啊 ?

 楼主| 彪哥 发表于 2007-3-25 13:50 | 显示全部楼层

再试试

 楼主| 彪哥 发表于 2007-3-25 13:57 | 显示全部楼层

这回再看看

http://bbs.21ic.com/upfiles/img/20073/2007325135436145.gif
fre_hund_buf、fre_ten_buf 
都是uint型数据,位数肯定是够的
 楼主| 彪哥 发表于 2007-3-25 14:06 | 显示全部楼层
 楼主| 彪哥 发表于 2007-3-25 14:08 | 显示全部楼层

我就不信了

 楼主| 彪哥 发表于 2007-3-25 14:10 | 显示全部楼层
 楼主| 彪哥 发表于 2007-3-25 14:15 | 显示全部楼层
 楼主| 彪哥 发表于 2007-3-25 14:17 | 显示全部楼层

还一个

 楼主| 彪哥 发表于 2007-3-25 14:45 | 显示全部楼层

确实是堆栈溢出了

整个程序里有好多这样的乘除运算,该怎么解决堆栈的问题呀?
dai_weis 发表于 2007-3-25 15:42 | 显示全部楼层

把延时程序关掉看看

mohanwei 发表于 2007-3-25 15:50 | 显示全部楼层

换个资源更丰富一点的单片机,或者用sprintf()……

sprintf用1次跟用100次所占用的内存资源是差不多的。
加9级优化……当然了优化之前自己要先对代码做一下优化,比如减小嵌套深度,把浮点运算改成整数运算(类似定点运算)等等
ayb_ice 发表于 2007-3-26 08:06 | 显示全部楼层

随便说说

  程序逻辑问题...
艾森豪威尔 发表于 2007-3-27 13:25 | 显示全部楼层

彪哥很有毅力呀!

佩服ing~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

171

帖子

1

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

44

主题

171

帖子

1

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