bingbingliang 发表于 2012-8-16 13:43:27

求助 如果单片机已经选定 现在的程序堆栈溢出了 肿么办呢

求助 如果单片机已经选定 现在的程序堆栈溢出了 肿么办呢

xywap 发表于 2012-8-16 13:44:51

优化程序

bingbingliang 发表于 2012-8-16 13:59:48

xywap 发表于 2012-8-16 13:44 static/image/common/back.gif
优化程序

怎么优化呀

dzmcs 发表于 2012-8-16 14:01:15

有些函数调用改为宏
局部变量尽量减少

lpc1788 发表于 2012-8-16 14:03:28

程序设计的时候尽量使用与单片位位宽相同的变量。减少局部变量,减少函数调用深度

bingbingliang 发表于 2012-8-16 14:10:27

lpc1788 发表于 2012-8-16 14:03 static/image/common/back.gif
程序设计的时候尽量使用与单片位位宽相同的变量。减少局部变量,减少函数调用深度 ...

您说的太深奥了 我能把程序发给您 您帮我瞅瞅吗

eedesign 发表于 2012-8-16 14:13:23

把变量定义在地址上然后去地址上取值

lg88 发表于 2012-8-16 14:40:33

减少函数调用

bingbingliang 发表于 2012-8-16 14:49:35

lg88 发表于 2012-8-16 14:40 static/image/common/back.gif
减少函数调用

O(∩_∩)O谢谢

myqiang1990 发表于 2012-8-16 14:50:51

修改堆栈大小不OK了。。。用什么单片机啊。。。

p4s5j6 发表于 2012-8-16 15:41:57

call 了又call 再加中断,多了就溢出了呗。减少子程序。不重复使用的功能尽量不要写成子函数

bingbingliang 发表于 2012-8-16 16:05:14

myqiang1990 发表于 2012-8-16 14:50 static/image/common/back.gif
修改堆栈大小不OK了。。。用什么单片机啊。。。

这个可以修改吗 现在是用的at89s53

myqiang1990 发表于 2012-8-16 16:35:34

bingbingliang 发表于 2012-8-16 16:05 static/image/common/back.gif
这个可以修改吗 现在是用的at89s53

是不是美女啊。。。是美女我就答你....{:3_62:}

coleyao 发表于 2012-8-16 16:54:56

Keil里面软件仿真,留好备份,剩下的就是想怎么折腾就怎么折腾了,直到堆栈不溢出为止!

xf331785508 发表于 2012-8-16 17:28:54

启动代码中改堆栈大小就OK 了!

bingbingliang 发表于 2012-8-16 17:41:59

myqiang1990 发表于 2012-8-16 16:35 static/image/common/back.gif
是不是美女啊。。。是美女我就答你....

呵呵 大哥哥见色起意 无色不欢 头像就是我 你觉得是就答 觉得不是大可置之不理

bingbingliang 发表于 2012-8-16 17:43:19

xf331785508 发表于 2012-8-16 17:28 static/image/common/back.gif
启动代码中改堆栈大小就OK 了!

哦? 是吗 怎么改呢 具体?

jz701209李 发表于 2012-8-16 21:25:32

路过学习一下!!!!!!

步凡王子 发表于 2012-8-16 21:34:41

myqiang1990 发表于 2012-8-16 16:35 static/image/common/back.gif
是不是美女啊。。。是美女我就答你....

楼主明显美女啊 怎么不回答啊~ 还等着学呢
另外 你也是90年的? 都金牌会员了,我还新手呢~

lg88 发表于 2012-8-17 19:14:07

是汇编语言可以改得,C语言好像不能改吧,是自动确定的

bingbingliang 发表于 2012-8-17 20:46:49

lg88 发表于 2012-8-17 19:14 static/image/common/back.gif
是汇编语言可以改得,C语言好像不能改吧,是自动确定的

哦 谢谢美女

jqbkl007 发表于 2012-8-17 22:44:57

路过学习一下!!

luguobing 发表于 2012-8-20 18:44:04

;------------------------------------------------------------------------------
;
;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.
;
;------------------------------------------------------------------------------



楼主试试是不是这里可以改

luguobing 发表于 2012-8-20 18:46:05

STARTUP.A51文件

bingbingliang 发表于 2012-8-21 09:13:13

luguobing 发表于 2012-8-20 18:46 static/image/common/back.gif
STARTUP.A51文件

哦 O(∩_∩)O谢谢

XA144F 发表于 2012-8-21 09:22:51

1.函数里尽量少再次嵌套函数,保证单片机一次只执行一个,最多保留一个返回值,然后调用下一个函数继续处理返回值。
2.入口参数尽量的少(不过我还没搞清入口参数和需要堆栈数量的关系)。
3.换RAM大的单片机,比如AVR的,至少512字节的空间都可以给你拿去压堆栈。
现在想到的就这么多了。

bingbingliang 发表于 2012-8-21 09:37:59

XA144F 发表于 2012-8-21 09:22 static/image/common/back.gif
1.函数里尽量少再次嵌套函数,保证单片机一次只执行一个,最多保留一个返回值,然后调用下一个函数继续处理 ...

您能帮我看下程序吗

bingbingliang 发表于 2012-8-21 09:38:20

luguobing 发表于 2012-8-20 18:46 static/image/common/back.gif
STARTUP.A51文件

您能帮我看下程序吗

bingbingliang 发表于 2012-8-21 09:38:40

luguobing 发表于 2012-8-20 18:44 static/image/common/back.gif
;------------------------------------------------------------------------------
;
;Reentrant Stack ...

您能帮我看下程序吗

anjf163 发表于 2012-8-21 09:48:54

把你程序发到我的邮箱,晚上帮你看一下。Anjf163@qq.com

bingbingliang 发表于 2012-8-21 15:35:03

anjf163 发表于 2012-8-21 09:48 static/image/common/back.gif
把你程序发到我的邮箱,晚上帮你看一下。

我加你QQ吧 你告诉我你的QQ

mbass51 发表于 2012-8-21 17:17:38

用stc90c516rd,容量大好多,ram不夠就可解決,lz都好美麗

luguobing 发表于 2012-8-21 19:01:26

bingbingliang 发表于 2012-8-21 09:38 static/image/common/back.gif
您能帮我看下程序吗

马化腾:14零4538二五7      发到马化腾邮箱就行

董家小富 发表于 2012-8-21 19:13:10

可以改一下设置

董家小富 发表于 2012-8-21 19:13:43

就是你是keil编译器吗

sypf 发表于 2012-8-21 20:05:58

keil的话···把某些变量扔XDATA去吧····静态的加上static·····

gyzzg2030 发表于 2012-8-21 20:14:35

C语言写程序会产生堆栈溢出?

asj1989 发表于 2012-8-21 20:46:39

楼主你是怎么确定你的程序堆栈溢出了?

anjf163 发表于 2012-8-22 09:43:50

本帖最后由 anjf163 于 2012-8-22 19:30 编辑

bingbingliang 发表于 2012-8-21 15:35 static/image/common/back.gif
我加你QQ吧 你告诉我你的QQ

.......

信天游 发表于 2012-8-25 12:31:50

c51 程序优化要领
45445.pdf
页: [1]
查看完整版本: 求助 如果单片机已经选定 现在的程序堆栈溢出了 肿么办呢