51单片机软件复位函数

51单片机无自带的看门狗,没有提供软件复位的函数和机制,要想实现软件复位,只能通过强制将PC指针指到0x0000位置,

通过以下函数将PC指针强制指到0x0000:

void reset(void)
{
    ((void (code *) (void)) 0x0000) ();
}


可以使用下面的程序跳到0000H实现软复位,下面的程序实际上是一个函数指针,指针指向了0000H地址。

((void (code *) (void)) 0x0000) ();

下面的例子将实现软件自复位

void reset (void)
{
    ((void (code *) (void)) 0x0000) ();
}

void main (void)
{
    reset ();
}

你可能注意到以上的软复位程序并不能清除8051的中断系统和某些8051的外围设备,当您在中断程序中调用上面的软件复位程序后,中断将再不能触发。因此,以上的软复位程序不能在中断子程序中调用。


STC的单片机有软件复位指令,即ISP_CONTR,地址在0E7H 单元(即str ISP_CONTR=0xE7),MOVISP_CONTR,#00100000B(C语言为ISP_CONTR=0x20),内狗也是一条指令MOV WDT_CONTR,#00111100B!
STC 51系列单片机Datasheet中指出:传统的8051 单片机由于硬件上未支持此功能,用户必须用软件模拟实现,实现起来较麻烦。现STC 新推出的增强型8051 根据客户要求增加了ISP_CONTR 特殊功能寄存器,实现了此功能。用户只需简单的控制ISP_CONTR 特殊功能寄存器的其中两位 SWBS / SWRST 就可以系统复位了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EmbededCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值