打印

C8051F340的问题

[复制链接]
24068|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luowei2651|  楼主 | 2009-12-21 11:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
luowei2651|  楼主 | 2009-12-21 11:39 | 只看该作者
是不加代码能正常跑,加一点点东西,我看它的汇编后的代码,就是从0000h,跳到一个死循环里,把我郁闷的!!!!!!!

使用特权

评论回复
板凳
5880527| | 2009-12-21 11:47 | 只看该作者
哎,小问题也要困扰一个多星期,发现问题的方法不对啊,蛮干是解决不了问题的

使用特权

评论回复
地板
luowei2651|  楼主 | 2009-12-21 11:55 | 只看该作者
3楼有什么好方法吗?给点意见。

使用特权

评论回复
5
jerkoh| | 2009-12-21 12:14 | 只看该作者
main 里面加一个_nop_() 还跑吗?

使用特权

评论回复
6
HWM| | 2009-12-21 12:22 | 只看该作者
看加了代码后是否超出63K,其最后1K是预留的。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
luowei2651 + 1
7
luowei2651|  楼主 | 2009-12-21 12:38 | 只看该作者
还没有超出63K,只有52、53的样子,情况是这样的
main()
{
cpu_in();
}
就是再增加代码
cpu_in();跟本进不到这个函数。
也不知道是不是嵌套的函数太深了。有人建议我改堆宅的深度,这个我没改,不会!!先谢谢楼上的几位。

使用特权

评论回复
8
luowei2651|  楼主 | 2009-12-21 12:40 | 只看该作者
对加个_nop_() ,它都不跑拉。

使用特权

评论回复
9
5880527| | 2009-12-21 12:48 | 只看该作者
SP赋值为80H就可以的呀

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
luowei2651 + 1
10
jerkoh| | 2009-12-21 12:57 | 只看该作者
将cpu_in() 改成 _nop_() 都不行?那应该不是嵌套问题吧
再或者_nop_() 改成 P30=~P30;  这种无关的测试语句

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

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

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
luowei2651 + 1
11
luowei2651|  楼主 | 2009-12-21 13:08 | 只看该作者
对啊,将cpu_in() 改成 _nop_() 都不行,好的我等会把汇编代码贴出来,我上班的电脑不能上网,我把汇编抄过来,等会。

使用特权

评论回复
12
winloop| | 2009-12-21 13:25 | 只看该作者
C8051F340要十七八个大洋,这个价格能买个STM32F101RCT6了,代码空间256K,接口比340丰富多了,用JLINK的仿真速度比340的仿真快多了,340的仿真我真的是头疼,速度太慢了,为什么还要死守340?

使用特权

评论回复
13
luowei2651|  楼主 | 2009-12-21 13:40 | 只看该作者
我贴汇编代码拉
0000       LJMP   01ACH
01AC    MOV  R0,#7FH
              CLR  A
              MOV  @R0,A
FD         DJNZ   R0,FDH
就是在这里一直跑不出去拉,假如没增加代码,也是这样同样的代码,但能跑出去。

使用特权

评论回复
14
luowei2651|  楼主 | 2009-12-21 14:03 | 只看该作者
它跑不出去的时候,我在这里设置R0的值为FDH,它跑是能跑拉,但是运行的非常不正常,显示屏幕一会更新快,一会更新慢的。

使用特权

评论回复
15
5880527| | 2009-12-21 14:06 | 只看该作者
“我在这里设置R0的值为FDH”,你这里R0跟FDH这个数字几乎就没关系,哪里还来它的什么值为FDH啊

使用特权

评论回复
16
xdata| | 2009-12-21 16:13 | 只看该作者
看看是不是WDT的问题

使用特权

评论回复
17
keyboard| | 2009-12-21 16:59 | 只看该作者
楼上说的有理
看你的反汇编代码,不会跑不出去的,很可能是跑出去又回来了
在0000地址设断点,看是否会复位,若复位了,查寄存器看复位原因

使用特权

评论回复
18
luowei2651|  楼主 | 2009-12-21 18:05 | 只看该作者
我听人说是因为XDATA 太大了,可以在STARTUP.A51中直接关闭看门狗,就可以了,但我不知道具体怎么做啊,是不是只在KEIL里改拉就行了,可是我是用 SILICON 的呀??

使用特权

评论回复
19
jerkoh| | 2009-12-21 20:03 | 只看该作者
默认的 狗是开的
上电 加个 蜂鸣器什么的 几声指示下

使用特权

评论回复
20
myfaith| | 2009-12-22 10:19 | 只看该作者
LZ,很有可能是你家狗的问题,初始化时间太长导致你的关狗语句还没
执行狗就到时间"咬人"了.在启动文件中关狗看看

使用特权

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

本版积分规则

12

主题

77

帖子

0

粉丝