C8051F340的问题

[复制链接]
25305|26
 楼主| luowei2651 发表于 2009-12-21 11:36 | 显示全部楼层 |阅读模式
我使用C8051F340现在代码量有50多K,但是现在怎么再也加不进程序了,随便加什么它就是不跑拉!!!困扰了我一个星期拉,大家看看有什么好建议吗?要不然我只有换芯片拉。
 楼主| luowei2651 发表于 2009-12-21 11:39 | 显示全部楼层
是不加代码能正常跑,加一点点东西,我看它的汇编后的代码,就是从0000h,跳到一个死循环里,把我郁闷的!!!!!!!
5880527 发表于 2009-12-21 11:47 | 显示全部楼层
哎,小问题也要困扰一个多星期,发现问题的方法不对啊,蛮干是解决不了问题的
 楼主| luowei2651 发表于 2009-12-21 11:55 | 显示全部楼层
3楼有什么好方法吗?给点意见。
jerkoh 发表于 2009-12-21 12:14 | 显示全部楼层
main 里面加一个_nop_() 还跑吗?
HWM 发表于 2009-12-21 12:22 | 显示全部楼层
看加了代码后是否超出63K,其最后1K是预留的。

评分

参与人数 1威望 +1 收起 理由
luowei2651 + 1

查看全部评分

 楼主| luowei2651 发表于 2009-12-21 12:38 | 显示全部楼层
还没有超出63K,只有52、53的样子,情况是这样的
main()
{
cpu_in();
}
就是再增加代码
cpu_in();跟本进不到这个函数。
也不知道是不是嵌套的函数太深了。有人建议我改堆宅的深度,这个我没改,不会!!先谢谢楼上的几位。
 楼主| luowei2651 发表于 2009-12-21 12:40 | 显示全部楼层
对加个_nop_() ,它都不跑拉。
5880527 发表于 2009-12-21 12:48 | 显示全部楼层
SP赋值为80H就可以的呀

评分

参与人数 1威望 +1 收起 理由
luowei2651 + 1

查看全部评分

jerkoh 发表于 2009-12-21 12:57 | 显示全部楼层
将cpu_in() 改成 _nop_() 都不行?那应该不是嵌套问题吧
再或者_nop_() 改成 P30=~P30;  这种无关的测试语句

贴下反汇编 出来的 你说的那个进入的死循环的代码

我猜想 会不会是没检测 晶振还没稳定下来? 代码刚好跑飞?

评分

参与人数 1威望 +1 收起 理由
luowei2651 + 1

查看全部评分

 楼主| luowei2651 发表于 2009-12-21 13:08 | 显示全部楼层
对啊,将cpu_in() 改成 _nop_() 都不行,好的我等会把汇编代码贴出来,我上班的电脑不能上网,我把汇编抄过来,等会。
winloop 发表于 2009-12-21 13:25 | 显示全部楼层
C8051F340要十七八个大洋,这个价格能买个STM32F101RCT6了,代码空间256K,接口比340丰富多了,用JLINK的仿真速度比340的仿真快多了,340的仿真我真的是头疼,速度太慢了,为什么还要死守340?
 楼主| luowei2651 发表于 2009-12-21 13:40 | 显示全部楼层
我贴汇编代码拉
0000       LJMP   01ACH
01AC    MOV  R0,#7FH
              CLR  A
              MOV  @R0,A
FD         DJNZ   R0,FDH
就是在这里一直跑不出去拉,假如没增加代码,也是这样同样的代码,但能跑出去。
 楼主| luowei2651 发表于 2009-12-21 14:03 | 显示全部楼层
它跑不出去的时候,我在这里设置R0的值为FDH,它跑是能跑拉,但是运行的非常不正常,显示屏幕一会更新快,一会更新慢的。
5880527 发表于 2009-12-21 14:06 | 显示全部楼层
“我在这里设置R0的值为FDH”,你这里R0跟FDH这个数字几乎就没关系,哪里还来它的什么值为FDH啊
xdata 发表于 2009-12-21 16:13 | 显示全部楼层
看看是不是WDT的问题
keyboard 发表于 2009-12-21 16:59 | 显示全部楼层
楼上说的有理
看你的反汇编代码,不会跑不出去的,很可能是跑出去又回来了
在0000地址设断点,看是否会复位,若复位了,查寄存器看复位原因
 楼主| luowei2651 发表于 2009-12-21 18:05 | 显示全部楼层
我听人说是因为XDATA 太大了,可以在STARTUP.A51中直接关闭看门狗,就可以了,但我不知道具体怎么做啊,是不是只在KEIL里改拉就行了,可是我是用 SILICON 的呀??
jerkoh 发表于 2009-12-21 20:03 | 显示全部楼层
默认的 狗是开的
上电 加个 蜂鸣器什么的 几声指示下
myfaith 发表于 2009-12-22 10:19 | 显示全部楼层
LZ,很有可能是你家狗的问题,初始化时间太长导致你的关狗语句还没
执行狗就到时间"咬人"了.在启动文件中关狗看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

77

帖子

0

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