求助 如果单片机已经选定 现在的程序堆栈溢出了 肿么办呢
求助 如果单片机已经选定 现在的程序堆栈溢出了 肿么办呢 优化程序 xywap 发表于 2012-8-16 13:44 static/image/common/back.gif优化程序
怎么优化呀 有些函数调用改为宏
局部变量尽量减少
程序设计的时候尽量使用与单片位位宽相同的变量。减少局部变量,减少函数调用深度 lpc1788 发表于 2012-8-16 14:03 static/image/common/back.gif
程序设计的时候尽量使用与单片位位宽相同的变量。减少局部变量,减少函数调用深度 ...
您说的太深奥了 我能把程序发给您 您帮我瞅瞅吗 把变量定义在地址上然后去地址上取值 减少函数调用 lg88 发表于 2012-8-16 14:40 static/image/common/back.gif
减少函数调用
O(∩_∩)O谢谢 修改堆栈大小不OK了。。。用什么单片机啊。。。 call 了又call 再加中断,多了就溢出了呗。减少子程序。不重复使用的功能尽量不要写成子函数 myqiang1990 发表于 2012-8-16 14:50 static/image/common/back.gif
修改堆栈大小不OK了。。。用什么单片机啊。。。
这个可以修改吗 现在是用的at89s53 bingbingliang 发表于 2012-8-16 16:05 static/image/common/back.gif
这个可以修改吗 现在是用的at89s53
是不是美女啊。。。是美女我就答你....{:3_62:} Keil里面软件仿真,留好备份,剩下的就是想怎么折腾就怎么折腾了,直到堆栈不溢出为止! 启动代码中改堆栈大小就OK 了! myqiang1990 发表于 2012-8-16 16:35 static/image/common/back.gif
是不是美女啊。。。是美女我就答你....
呵呵 大哥哥见色起意 无色不欢 头像就是我 你觉得是就答 觉得不是大可置之不理 xf331785508 发表于 2012-8-16 17:28 static/image/common/back.gif
启动代码中改堆栈大小就OK 了!
哦? 是吗 怎么改呢 具体? 路过学习一下!!!!!! myqiang1990 发表于 2012-8-16 16:35 static/image/common/back.gif
是不是美女啊。。。是美女我就答你....
楼主明显美女啊 怎么不回答啊~ 还等着学呢
另外 你也是90年的? 都金牌会员了,我还新手呢~ 是汇编语言可以改得,C语言好像不能改吧,是自动确定的 lg88 发表于 2012-8-17 19:14 static/image/common/back.gif
是汇编语言可以改得,C语言好像不能改吧,是自动确定的
哦 谢谢美女 路过学习一下!! ;------------------------------------------------------------------------------
;
;Reentrant Stack Initilization
;
;The following EQU statements define the stack pointer for reentrant
;functions and initialized it:
;
;Stack Space for reentrant functions in the SMALL model.
IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
IBPSTACKTOP EQU 0FFfH+1; set top of stack to highest location+1.
;
;Stack Space for reentrant functions in the LARGE model.
XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
XBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
;
;Stack Space for reentrant functions in the COMPACT model.
PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
;
;------------------------------------------------------------------------------
楼主试试是不是这里可以改 STARTUP.A51文件 luguobing 发表于 2012-8-20 18:46 static/image/common/back.gif
STARTUP.A51文件
哦 O(∩_∩)O谢谢 1.函数里尽量少再次嵌套函数,保证单片机一次只执行一个,最多保留一个返回值,然后调用下一个函数继续处理返回值。
2.入口参数尽量的少(不过我还没搞清入口参数和需要堆栈数量的关系)。
3.换RAM大的单片机,比如AVR的,至少512字节的空间都可以给你拿去压堆栈。
现在想到的就这么多了。 XA144F 发表于 2012-8-21 09:22 static/image/common/back.gif
1.函数里尽量少再次嵌套函数,保证单片机一次只执行一个,最多保留一个返回值,然后调用下一个函数继续处理 ...
您能帮我看下程序吗 luguobing 发表于 2012-8-20 18:46 static/image/common/back.gif
STARTUP.A51文件
您能帮我看下程序吗 luguobing 发表于 2012-8-20 18:44 static/image/common/back.gif
;------------------------------------------------------------------------------
;
;Reentrant Stack ...
您能帮我看下程序吗 把你程序发到我的邮箱,晚上帮你看一下。Anjf163@qq.com anjf163 发表于 2012-8-21 09:48 static/image/common/back.gif
把你程序发到我的邮箱,晚上帮你看一下。
我加你QQ吧 你告诉我你的QQ 用stc90c516rd,容量大好多,ram不夠就可解決,lz都好美麗 bingbingliang 发表于 2012-8-21 09:38 static/image/common/back.gif
您能帮我看下程序吗
马化腾:14零4538二五7 发到马化腾邮箱就行 可以改一下设置 就是你是keil编译器吗
keil的话···把某些变量扔XDATA去吧····静态的加上static····· C语言写程序会产生堆栈溢出? 楼主你是怎么确定你的程序堆栈溢出了? 本帖最后由 anjf163 于 2012-8-22 19:30 编辑
bingbingliang 发表于 2012-8-21 15:35 static/image/common/back.gif
我加你QQ吧 你告诉我你的QQ
....... c51 程序优化要领
45445.pdf
页:
[1]