最近正在做pic单片机的在线更新,现在单片机与fpga之间只有 i2c接口,所以设计的是利用i2c接口实现在线更新。 使用的芯片:16f886。 程序分两块,bootload部分和workload部分。 将bootload放在0-7ff,workload放在800开始的部分。 这样就涉及到一个问题,中断服务程序在804部分,但是中断入口在004h。 我在boot程序中放了一段中断跳转的程序,如下。但是上电之后,会出现隔2分钟左右重启的现象,重启间隔很规律。大家有没有遇到过?
void interrupt service_isr(void)
{
asm("movlw 0x8");
asm("movwf _PCLATH"); //pclath
asm("goto 0x004");//GOTO k,k → PC<10:0>
} |