首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请问C语言的软件复位方法

S12的指令有软件复位的么?能不能介绍一下用法?
我现在用的是采用死循环,然后强制看门狗复位的办法实现的软复位
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
seuafu2005:你说的采用SWI的方法,在“软件中断向量中写入和reset向量中一样的地址”,具体应该怎么写?能不能明确解释一下?谢谢
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
那对S12单片机来说,除了看门狗外还有什么办法可以实现软件复位?
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
我找到很好的软件复位办法了,而且调试通过,这个办法对于S12,S08都适用。
采用看门狗的方法:
interrupt 2 void COP(void){
PORTB = 0x01;
asm jmp _Startup;
}
//=============================================================================
#pragma CODE_SEG DEFAULT
//======================== Force to Reset =====================================
void ForceReset(void){
COPCTL = 0x07; // Turn on watchdog
ARMCOP = 0x00; // Write Incorrect value => Force Reset
}
我实验过了没问题的,很好用。
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
“当清WATCHDOG是,必须写$55和$AA到ARMCOP寄存器。如果写其他的数,芯片马上就会复位。这也就可以用作软件复位了。”
事实不是这么简单,你必须在看门狗中断中加入跳转到Start处的指令:asm jmp _Startup;
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
返回列表