打印

单片机莫名其妙复位

[复制链接]
楼主: 不戴帽子
手机看帖
扫描二维码
随时随地手机跟帖
21
jack.how| | 2010-5-21 12:53 | 只看该作者 回帖奖励 |倒序浏览
主程序没有死循环出现,程序最多只跑一遍!

使用特权

评论回复
22
一棵小草| | 2010-5-21 13:10 | 只看该作者
要知道程序的流程,可以仿真啊,靠,不会仿真的意思都不懂吧

真怀疑你是怎么用keil的,没有硬件仿真也可以软件仿真嘛,大不了设置断点,然后单步执行,不就知道什么原因了?

使用特权

评论回复
23
不戴帽子|  楼主 | 2010-5-21 16:02 | 只看该作者
22# 一棵小草
我仿真过了,程序执行没有错误,下载后运行就不正确了,不明白为什么?请指点

使用特权

评论回复
24
不戴帽子|  楼主 | 2010-5-21 16:03 | 只看该作者
21# jack.how
您说的非常对,我就是想让程序按顺序执行一遍,但是它到中途就会返回到主函数的开始处,我不明白这是为什么,仿真也没发现有问题啊

使用特权

评论回复
25
loveguigui0929| | 2010-5-21 16:39 | 只看该作者
不懂你说的是什么

使用特权

评论回复
26
puqingzj| | 2010-5-21 18:46 | 只看该作者
看看是不是编译后HEX超过了c52的容量

使用特权

评论回复
27
ningling_21| | 2010-5-21 18:50 | 只看该作者
这种问题我曾经碰到过,解决方法就是前面说的,不知道你是否是51单片机...

使用特权

评论回复
28
不戴帽子|  楼主 | 2010-5-21 18:56 | 只看该作者
27# ningling_21
请您说的详细一点好吗,我的问题还没解决呢,谢谢

使用特权

评论回复
29
不戴帽子|  楼主 | 2010-5-21 18:56 | 只看该作者
26# puqingzj
应该没抄吧,编译后是6k

使用特权

评论回复
30
ningling_21| | 2010-5-21 19:23 | 只看该作者
我用的是51的单片机,运行时程序莫名其妙的复位,经过指点,修改SP后就正常了...

使用特权

评论回复
31
yun_xiao| | 2010-5-23 11:31 | 只看该作者
程序功能是什么?

使用特权

评论回复
32
gx_huang| | 2010-5-23 15:38 | 只看该作者
修改SP就正常?C还需要修改SP?

使用特权

评论回复
33
hgjinwei| | 2010-5-23 17:27 | 只看该作者
这玩意还讨论了那么久?
仿真正常是因为你认为程序运行完main就算正常,但是在实际的处理器内部,程序是不会在main后面给你停住的,PC会一直往上跑,后面她到底在干什么就难于预知了,如果全是FF还好,跑完一串FF后就会回到0000H重新执行。如果不是,那她干了什么就只有她自个知道了。

使用特权

评论回复
34
zhangjiwei2007| | 2010-5-23 20:47 | 只看该作者
复位键是否松动,编程中是否写错。

使用特权

评论回复
35
flutters| | 2010-5-23 21:09 | 只看该作者
我也碰到类似情况,我碰到的是由于函数调用时,进入了中断嵌套后堆栈溢出了

使用特权

评论回复
36
shibaba065146| | 2010-5-25 11:11 | 只看该作者
哈哈:)

使用特权

评论回复
37
chenchenxxx| | 2010-5-26 09:25 | 只看该作者
怎么没有while? 内部看门狗复位了?

使用特权

评论回复
38
YEZI930| | 2010-5-27 09:14 | 只看该作者
看门狗呢?

使用特权

评论回复
39
YEZI930| | 2010-5-27 09:15 | 只看该作者
基本程序架构
void main(void)
{
    init();
   
    while(1)
    {
        f1();
        f2();
         .....
    }
}

void isr_uart(void) interrupt 4
{

}
ayb_ice 发表于 2010-5-21 10:48


按照标准写!

使用特权

评论回复
40
peigang| | 2010-5-27 16:04 | 只看该作者
太多人说了
建议画流程图

使用特权

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

本版积分规则