79F085全速运行的时候总是会复位

[复制链接]
4306|24
 楼主| chenho 发表于 2011-7-27 15:53 | 显示全部楼层 |阅读模式
79F085全速运行的时候总是会复位
zhuhuis 发表于 2011-7-27 16:02 | 显示全部楼层
是设断点观察吧,在代码选项的配置中禁止看门狗了吗?
 楼主| chenho 发表于 2011-7-27 16:05 | 显示全部楼层
禁止了,可能会是什么问题,是不是哪边设置不对
neyo.zhong 发表于 2011-7-27 16:14 | 显示全部楼层
我个人怀疑,可能是下面问题造成的:
一.开启看门狗
1.程序中没有进行清看门狗动作;
2.主程序中有进行清看门狗动作,但是子程序存在死循环的情况,无法返回到主程序进行清狗动作,以至看门狗定时超时

二.关闭看门狗
1.程序跑飞:(1)看看振荡器是否有问题 (2)看看是否翻BANK操作存在错误 (3)其他程序错误
gongche 发表于 2011-7-27 16:31 | 显示全部楼层
把你的代码发上来看看
 楼主| chenho 发表于 2011-7-27 16:42 | 显示全部楼层
#include "File_Include.h"
void main(void)
{
//寄存器初始化
SP  =INIT_SP;
PSW  =INIT_PSW;
INSCON =INIT_INSCON;
PCON =INIT_PCON;   
while(1)
{
  STB=1;   //端口测试
  STB=0;   
}  
}
happy_10 发表于 2011-7-27 16:47 | 显示全部楼层
在pc=0000处加一个断点,复位的时候,请看看RSTSTAT里面的值。bit7=1, WDT溢出, bit5 = 1, 上电复位。bit4=1, 低电压复位。 bit3=1, 引脚复位
wenfen 发表于 2011-7-27 17:12 | 显示全部楼层
如LS所说,在SP=INIT_SP;这条指令加一个断点,看RSTSTAT里面的值。看看是什么复位
bananarer 发表于 2011-7-27 17:41 | 显示全部楼层
我觉得还是看门狗复位。如楼上所说,加断点试试
tian111 发表于 2011-7-29 14:23 | 显示全部楼层
不知楼主啥情况了
 楼主| chenho 发表于 2011-7-29 14:50 | 显示全部楼层
REGCON的值始终为0x67,还有个问题,第一条语句对堆栈初始化时,INIT_SP宏定义为0xdf,但是执行过后SP仍为0x07
 楼主| chenho 发表于 2011-7-29 14:53 | 显示全部楼层
while(1)
{
unsigned char i,j,k;
i=5;
j=3;
k=j+i;               
}
这里执行不对,i,j,k的值都没有变化,是通过变量窗口观察的
tian111 发表于 2011-7-29 14:55 | 显示全部楼层
你是不是直接进入仿真,没有进行代码的下载啊
 楼主| chenho 发表于 2011-7-29 14:58 | 显示全部楼层
我晕,这种低级错误。。。。
 楼主| chenho 发表于 2011-7-29 15:01 | 显示全部楼层
结贴闪人
ssdw 发表于 2011-8-1 21:41 | 显示全部楼层
谁都有犯错的时候
ssdw 发表于 2011-8-1 21:41 | 显示全部楼层
总结下 就可以了
ssdw 发表于 2011-8-1 21:41 | 显示全部楼层
huwr 发表于 2011-8-1 21:52 | 显示全部楼层
楼上真是宽宏大量
huwr 发表于 2011-8-1 21:52 | 显示全部楼层
不得不赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

748

主题

9853

帖子

5

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