单片机实现软件复位(软复位)的方法及讨论(转)
http://hi.baidu.com/wxdpj/blog/item/9707c7823631cdab0cf4d2a7.html
单片机软复位有什么好的方法?如从机收到复位命令(软件命令),程序怎么使机器复位?虽然要使软件始终处于可控状态,最好不要用"复位",因为复位是纯硬件过程,软件是不可控的.但是我们还是要讨论方法,一般流传的方法如下:
1、放狗;
2、((void(code *)(void))0x0000)();
3、用单片机一个引脚控制点一下RSTRST;
4、用单片机一个引脚控制重新加电;
5、用单片机自带的软件复位指令或内狗指令;
6、goto大法;
天堂雨林博客对以上方法的意见:
方法1:“放狗”是单片机软复位的最好办法,也基本上是唯一的一个办法。但并不是所有单片机都具备看门狗的功能,也不是一个万全之策。
办法2:这不是复位,只是把程序转到地址0去执行,不如用一个JMP更直接。目前可能极少数单片机或者用户已经自行添加Boot load时用户程序的程序开始地址并不为0x0000,所以需要查找这些特定单片机的启动地址。
在keil C51下面可以这样实现:
void soft_reset(void)
{
((void (code *) (void)) 0x0000) ();
}
在需要软件复位的地方使用语句

本文详细介绍了单片机实现软件复位的多种方法,包括利用看门狗、跳转到地址0执行、控制复位引脚、上电复位指令等。其中,使用内置软件复位指令被认为是最简洁方便的方式,而通过跳转到程序起始地址执行也是常见做法。同时,文章提醒注意使用goto命令的潜在问题。

2万+

被折叠的 条评论
为什么被折叠?



