如果只是单纯的软件复位,需先将R0寄存器清0:
#define mcu_ResetToRunApp(x) do { \
SFRPAGE = 0x00;\
*((uint8_t SI_SEG_DATA *)0x00) = 0; \
RSTSRC = RSTSRC_SWRSF__SET | RSTSRC_PORSF__SET; } while(0)
因为在软件复位前,若R0的值等于0xA5,则MCU在复位之后会进入bootloader模式,这个并不是我们所需要的。