MCC生成的bootloader跳转用法供你参考
void BOOTLOADER_Initialize ()
{
if (Bootload_Required () == true)
{
Run_Bootloader (); // generic comms layer
}
STKPTR = 0x1F;
asm ("pagesel " str(NEW_RESET_VECTOR));
asm ("goto " str(NEW_RESET_VECTOR));
}
如果是PIC18的话。。。反汇编给你参考吧
! // Initialize the device
! SYSTEM_Initialize();
0x20: CALL 0x220, 0
0x22: NOP
! pp = SYSTEM_Initialize;
0x24: MOVLW 0x20
0x26: MOVWF pp, ACCESS
0x28: MOVLW 0x2
0x2A: MOVWF 0xC, ACCESS
0x2C: MOVLW 0x0
0x2E: MOVWF 0xD, ACCESS
! pp = (void*)0x800;
0x30: MOVLW 0x0
0x32: MOVWF pp, ACCESS
0x34: MOVLW 0x8
0x36: MOVWF 0xC, ACCESS
0x38: MOVLW 0x0
0x3A: MOVWF 0xD, ACCESS
! (*pp)();
0x3C: CALL 0x0, 0
0x3E: NOP
|