我正在使用PIC16F877a,我需要重置程序而不使用按钮。当我查看数据表和referance设计时,MLCR引脚上有一个按钮。如果按下按钮,则MCU被重置。但我需要重置可以用C代码控制,我不想使用重置按钮。还有其他办法吗?
答案 0 :(得分:1)
PIC 8位MCUS具有软件复位汇编指令:
RESET
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 才能在程序执行前进入已知状态。复位通常由来自外部源的硬件信号产生,例如,您可能会在开发板上找到复位按钮。大多数微控制器设备都有一个用于复位的输入引脚。