打印

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

[复制链接]
1671|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
彪哥|  楼主 | 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 | 只看该作者

位什么图贴不上啊 ?

使用特权

评论回复
5
彪哥|  楼主 | 2007-3-25 13:50 | 只看该作者

再试试

使用特权

评论回复
6
彪哥|  楼主 | 2007-3-25 13:57 | 只看该作者

这回再看看

https://bbs.21ic.com/upfiles/img/20073/2007325135436145.gif
fre_hund_buf、fre_ten_buf 
都是uint型数据,位数肯定是够的

使用特权

评论回复
7
彪哥|  楼主 | 2007-3-25 14:06 | 只看该作者
8
彪哥|  楼主 | 2007-3-25 14:08 | 只看该作者

我就不信了

使用特权

评论回复
9
彪哥|  楼主 | 2007-3-25 14:10 | 只看该作者

高手帮忙啊,图啊

使用特权

评论回复
10
彪哥|  楼主 | 2007-3-25 14:15 | 只看该作者
11
彪哥|  楼主 | 2007-3-25 14:17 | 只看该作者

还一个

使用特权

评论回复
12
彪哥|  楼主 | 2007-3-25 14:45 | 只看该作者

确实是堆栈溢出了

整个程序里有好多这样的乘除运算,该怎么解决堆栈的问题呀?

使用特权

评论回复
13
dai_weis| | 2007-3-25 15:42 | 只看该作者

把延时程序关掉看看

使用特权

评论回复
14
mohanwei| | 2007-3-25 15:50 | 只看该作者

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

sprintf用1次跟用100次所占用的内存资源是差不多的。
加9级优化……当然了优化之前自己要先对代码做一下优化,比如减小嵌套深度,把浮点运算改成整数运算(类似定点运算)等等

使用特权

评论回复
15
ayb_ice| | 2007-3-26 08:06 | 只看该作者

随便说说

  程序逻辑问题...

使用特权

评论回复
16
艾森豪威尔| | 2007-3-27 13:25 | 只看该作者

彪哥很有毅力呀!

佩服ing~

使用特权

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

本版积分规则

44

主题

171

帖子

1

粉丝