16PIC877A使用C代码复位

时间:2016-12-30 11:00:28

标签: c microcontroller pic

我正在使用PIC16F877a,我需要重置程序而不使用按钮。当我查看数据表和referance设计时,MLCR引脚上有一个按钮。如果按下按钮,则MCU被重置。但我需要重置可以用C代码控制,我不想使用重置按钮。还有其他办法吗?

4 个答案:

答案 0 :(得分:1)

PIC 8位MCUS具有软件复位汇编指令:

RESET

reset instruction

http://microchip.wikidot.com/8bit:rst

您必须使用内联汇编。我从未在PIC中使用内联汇编,但从this page看起来这是MPLAB的正确语法:

void soft_reset(void)
{
    _asm
        reset
    _endasm
}

请注意,正如链接页面所述,外部看门狗定时器通常是触发完整系统复位的更好方法。通过软复位,外部设备也不会复位。使用外部WDT,您只需停止占用看门狗,然后重置整个电路板。

答案 1 :(得分:1)

MPLABX XC16的格式(假设这是您正在使用的编译器)是:

__asm__ volatile ("reset");

根据您的处理器,您还可以在启动时检查RCON寄存器的内容,以找出复位的原因(MCLR,软件,看门狗定时器,掉电等)。

答案 2 :(得分:0)

对于XC8,请使用#asm和#endasm。使用XC8手册中的示例

#asm
RESET
#endasm

// do it again the other way...
asm("RESET");

答案 3 :(得分:0)

微控制器需要 reset 才能在程序执行前进入已知状态。复位通常由来自外部源的硬件信号产生,例如,您可能会在开发板上找到复位按钮。大多数微控制器设备都有一个用于复位的输入引脚。