📄 isr.asm
字号:
.include hardware.inc
.external F_FIQ_Service_SACM_S480
/////////////////////////////////////////////////////////////////////////////////////////
// Function: Interrupt Service Routine Area
// Service for BREAK, FIQ, IRQ0-IRQ7
// User's ISR must hook on here
/////////////////////////////////////////////////////////////////////////////////////////
.TEXT
.public _BREAK
.public _FIQ
.public _IRQ0
.public _IRQ1
.public _IRQ2
.public _IRQ3
.public _IRQ4
.public _IRQ5
.public _IRQ6
.public _IRQ7
_BREAK:
PUSH R1,R5 to [sp]
/////----- BREAK User Code -----/////
/////----- BREAK End -----/////
POP R1,R5 from [sp]
RETI
_FIQ:
push R1,R5 to [sp];
R1 = C_FIQ_TMA;
test R1,[P_INT_Ctrl];
jnz L_FIQ_TimerA;
R1 = C_FIQ_TMB;
test R1,[P_INT_Ctrl];
jnz L_FIQ_TimerB;
L_FIQ_PWM:
R1 = C_FIQ_PWM;
[P_INT_Clear] = R1;
/////----- FIQ_PWM User Code -----/////
/////----- FIQ_PWM End -----/////
POP R1,R5 from[sp];
reti;
L_FIQ_TimerA:
R1 = C_FIQ_TMA;
[P_INT_Clear] = R1;
/////----- FIQ_TimerA User Code -----/////
call F_FIQ_Service_SACM_S480
/////----- FIQ_TimerA End -----/////
pop R1,R5 from [sp];
reti;
L_FIQ_TimerB:
R1 = C_FIQ_TMB;
[P_INT_Clear] = R1;
/////----- FIQ_TimerB User Code -----/////
/////----- FIQ_TimerB End -----/////
pop R1,R5 from [sp];
reti;
_IRQ0:
PUSH R1,R5 to [sp]
R1 = C_IRQ0_PWM;
[P_INT_Clear] = R1;
/////----- IRQ0_PWM User Code -----/////
/////----- IRQ0_PWM End -----/////
POP R1,R5 from [sp]
RETI
_IRQ1:
PUSH R1,R5 to [sp]
R1 = C_IRQ1_TMA;
[P_INT_Clear] = R1;
/////----- IRQ1_TimerA User Code -----/////
/////----- IRQ1_TimerA End -----/////
POP R1,R5 from [sp]
RETI
_IRQ2:
PUSH R1,R5 TO [SP]
R1 = C_IRQ2_TMB;
[P_INT_Clear] = R1;
/////----- IRQ2_TimerB User Code -----/////
/////----- IRQ2_TimerB End -----/////
POP R1,R5 FROM [SP]
RETI
_IRQ3:
PUSH R1,R5 to [sp];
R1 = C_IRQ3_EXT1;
test R1,[P_INT_Ctrl];
jnz L_IRQ3_EXT1;
R1 = C_IRQ3_EXT2;
test R1,[P_INT_Ctrl];
jnz L_IRQ3_EXT2;
L_IRQ3_KEY:
R1 = C_IRQ3_KEY;
[P_INT_Clear] = R1;
/////----- IRQ3_KEY User Code -----/////
/////----- IRQ3_KEY End -----/////
POP R1,R5 FROM [SP]
RETI
L_IRQ3_EXT1:
R1 = C_IRQ3_EXT1;
[P_INT_Clear] = R1;
/////----- IRQ3_EXT1 User Code -----/////
/////----- IRQ3_EXT1 End -----/////
POP R1,R5 FROM [SP]
RETI
L_IRQ3_EXT2:
R1 = C_IRQ3_EXT2;
[P_INT_Clear] = R1;
/////----- IRQ3_EXT2 User Code -----/////
/////----- IRQ3_EXT2 End -----/////
POP R1,R5 FROM [SP]
RETI
_IRQ4:
PUSH R1,R5 TO [SP]
R1 = C_IRQ4_2KHz
test R1,[P_INT_Ctrl]
jnz L_IRQ4_2KHz
R1 = C_IRQ4_4KHz
test R1,[P_INT_Ctrl]
jnz L_IRQ4_4KHz
L_IRQ4_1KHz:
R1 = C_IRQ4_1KHz;
[P_INT_Clear] = R1
/////----- IRQ4_1KHz User Code -----/////
/////----- IRQ4_1KHz End -----/////
POP R1,R5 FROM [SP]
RETI
L_IRQ4_2KHz:
R1 = C_IRQ4_2KHz;
[P_INT_Clear] = R1
/////----- IRQ4_2KHz User Code -----/////
/////----- IRQ4_2KHz End -----/////
POP R1,R5 FROM [SP]
RETI
L_IRQ4_4KHz:
R1 = C_IRQ4_4KHz;
[P_INT_Clear] = R1
/////----- IRQ4_4KHz User Code -----/////
/////----- IRQ4_4KHz End -----/////
POP R1,R5 FROM [SP]
RETI
_IRQ5:
PUSH R1,R5 to [sp]
R1 = C_IRQ5_4Hz
test R1,[P_INT_Ctrl]
jnz L_IRQ5_4Hz
L_IRQ5_2Hz:
R1 = C_IRQ5_2Hz;
[P_INT_Clear] = R1
/////----- IRQ5_2Hz User Code -----/////
/////----- IRQ5_2Hz End -----/////
POP R1,R5 FROM [SP]
RETI
L_IRQ5_4Hz:
R1 = C_IRQ5_4Hz;
[P_INT_Clear] = R1
/////----- IRQ5_4Hz User Code -----/////
/////----- IRQ5_4Hz End -----/////
POP R1,R5 FROM [SP]
RETI
_IRQ6:
PUSH R1,R5 to [sp]
R1 = C_IRQ6_TMB2;
test R1,[P_INT_Ctrl]
jnz L_IRQ6_TMB2
L_IRQ6_TMB1:
R1 = C_IRQ6_TMB1;
[P_INT_Clear] = R1
/////----- IRQ6_TMB1 User Code -----/////
/////----- IRQ6_TMB1 End -----/////
POP R1,R5 FROM [SP]
RETI
L_IRQ6_TMB2:
R1 = C_IRQ6_TMB2;
[P_INT_Clear] = R1
/////----- IRQ6_TMB2 User Code -----/////
/////----- IRQ6_TMB2 End -----/////
POP R1,R5 FROM [SP]
RETI
_IRQ7:
PUSH R1,R5 to [sp]
POP R1,R5 from [sp]
RETI
//========================================================================================
// End of isr.asm
//========================================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -