请教在写自己IAP15W4K61S4升级程序时的一个问题
在IAP15W4K61S4的示例程序中,userisp程序,是没有用到任何中断的,所以里面有isr.asm能编译通过,但在我自己的工程中,因为我想在userisp中全能串口以中断方式接收数据,那么编译就报地址重叠错误了那么问题来了,如何写代码,从而实现在userapp,与userisp中都能使用中断呢???
因为我想实现两套中断,如果是在userisp中运行的代码,那么跳转到0x203开始的中断向量表,如果是在userapp中运行,则跳转到0x1000开始的中断向量表。。。
共用一个位变量,根据位变量决定跳转位置,此跳转代码都在BOOT中 Ayb_ice 发表于 2026-5-28 10:36
共用一个位变量,根据位变量决定跳转位置,此跳转代码都在BOOT中
JNB,AJMP,LJMP3+2+3不是正好吗 就算不够,你先跳转某个位置再判断也可以 Ayb_ice 发表于 2026-5-28 11:20
就算不够,你先跳转某个位置再判断也可以
JB g_bBootFlag,BOOT_INT
LJMP 200BH ;APP中断
BOOT_INT:
AJMP 000BH ;BOOT中断 放出代码,,,
ISP_INT EQU 0203H ; ISP中断向量表地址
APP_INT EQU 1000H ; APP中断向量表地址
ISP_MODE EQU 2FH.0 ; 需要在C中写义变量unsigned char bdata isp_mode _at_ 0x2f;// 位变量
MAPISR MACRO ADDR
CSEG ATADDR
JB ISP_MODE, $+5 ;isp_mode为1则跳转到app中断向量
AJMP ISP_INT + ADDR
LJMP APP_INT + ADDR
ENDM
MAPISR0003H
MAPISR000BH
MAPISR0013H
MAPISR001BH
MAPISR0023H
MAPISR002BH
MAPISR0033H
MAPISR003BH
MAPISR0043H
MAPISR004BH
MAPISR0053H
MAPISR005BH
MAPISR0063H
MAPISR006BH
MAPISR0073H
MAPISR007BH
MAPISR0083H
MAPISR008BH
MAPISR0093H
MAPISR009BH
MAPISR00A3H
MAPISR00ABH
MAPISR00B3H
MAPISR00BBH
MAPISR00C3H
MAPISR00CBH
MAPISR00D3H
MAPISR00DBH
MAPISR00E3H
MAPISR00EBH
MAPISR00F3H
MAPISR00FBH
MAPISR0103H
MAPISR010BH
MAPISR0113H
MAPISR011BH
MAPISR0123H
MAPISR012BH
MAPISR0133H
MAPISR013BH
MAPISR0143H
MAPISR014BH
MAPISR0153H
MAPISR015BH
MAPISR0163H
MAPISR016BH
MAPISR0173H
MAPISR017BH
MAPISR0183H
MAPISR018BH
MAPISR0193H
MAPISR019BH
MAPISR01A3H
MAPISR01ABH
MAPISR01B3H
MAPISR01BBH
MAPISR01C3H
MAPISR01CBH
MAPISR01D3H
MAPISR01DBH
MAPISR01E3H
MAPISR01EBH
MAPISR01F3H
MAPISR01FBH
END
页:
[1]