📄 isr.asm
字号:
//======================================================
// 文件名称: isr.asm
// 功能描述: 中断服务程序
// 维护记录: 2006-10-12 v1.0
//======================================================
.include spce061a.inc
.TEXT
.public _BREAK;
.public _FIQ;
.public _IRQ0;
.public _IRQ1;
.public _IRQ2;
.public _IRQ3;
.public _IRQ4;
.public _IRQ5;
.public _IRQ6;
.public _IRQ7;
_BREAK:
//add your code here
reti;
//=============================================================
// 语法格式:
// 实现功能: FIQ中断服务程序
// 参数: 无
// 返回值: 无
//=============================================================
.external F_FIQ_Service_SACM_S480
_FIQ:
PUSH R1,R4 to [sp] //寄存器压栈保护
R1 = 0x2000
test R1,[P_INT_Ctrl] //是TimerA的FIQ中断?
jnz L_FIQ_TimerA
R1 = 0x0800
test R1,[P_INT_Ctrl] //是TimerB的FIQ中断?
jnz L_FIQ_TimerB
L_FIQ_PWM: //PWM的FIQ中断服务
R1 = C_FIQ_PWM
[P_INT_Clear] = R1 //清中断标志
POP R1,R4 from[sp] //出栈
reti
L_FIQ_TimerA: //TimerA的FIQ中断服务
[P_INT_Clear] = R1 //清中断标志
call F_FIQ_Service_SACM_S480 //调用A2000播放的FIQ服务程序
pop R1,R4 from [sp] //出栈
reti
L_FIQ_TimerB: //TimerB的FIQ中断服务
[P_INT_Clear]=R1 //清中断标志
pop R1,R4 from [sp] //出栈
RETI
//=============================================================
// 语法格式:
// 实现功能: IRQ0中断服务程序
// 参数: 无
// 返回值: 无
//=============================================================
_IRQ0:
//add your code here
reti;
//=============================================================
// 语法格式:
// 实现功能: IRQ1中断服务程序
// 参数: 无
// 返回值: 无
//=============================================================
_IRQ1:
//add your code here
reti;
//=============================================================
// 语法格式:
// 实现功能: IRQ2中断服务程序
// 参数: 无
// 返回值: 无
//=============================================================
_IRQ2:
//add your code here
reti;
//=============================================================
// 语法格式:
// 实现功能: IRQ3中断服务程序
// 参数: 无
// 返回值: 无
//=============================================================
.external _Dis_In_IRQ_DistanceServiceLoop
_IRQ3:
//add your code here
push r1, r4 to [sp]
r1 = C_IRQ3_EXT1
[P_INT_Clear] = r1
call _Dis_In_IRQ_DistanceServiceLoop
pop r1, r4 from [sp]
reti;
//=============================================================
// 语法格式:
// 实现功能: IRQ4中断服务程序
// 参数: 无
// 返回值: 无
//=============================================================
.external _KeyScan_ServiceLoop
.external _IRQ_PlayService
_IRQ4:
//add your code here
push r1, r4 to [sp]
r1 = [P_INT_Ctrl]
test r1, C_IRQ4_4KHz
jnz ?IRQ4_4KHz
test r1, C_IRQ4_2KHz
jnz ?IRQ4_2KHz
?IRQ4_1KHz:
r1 = C_IRQ4_1KHz
[P_INT_Clear] = r1
call _KeyScan_ServiceLoop
jmp ?IRQ4_Exit
?IRQ4_4KHz:
r1 = C_IRQ4_4KHz
[P_INT_Clear] = r1
call _IRQ_PlayService
jmp ?IRQ4_Exit
?IRQ4_2KHz:
r1 = C_IRQ4_2KHz
[P_INT_Clear] = r1
?IRQ4_Exit:
pop r1, r4 from [sp]
reti;
//=============================================================
// 语法格式:
// 实现功能: IRQ5中断服务程序
// 参数: 无
// 返回值: 无
//=============================================================
.external _Dis_In_IRQ_SpeedServiceLoop
.external _Cal_In_IRQ_ServiceLoop
.external _uiFlashFlag
_IRQ5:
//add your code here
push r1,r4 to [sp]
r1 = C_IRQ5_2Hz
[P_INT_Clear] = r1
r1 = 0x0001
[P_Watchdog_Clear] = r1
[_uiFlashFlag] = r1
call _Dis_In_IRQ_SpeedServiceLoop
call _Cal_In_IRQ_ServiceLoop
pop r1,r4 from [sp]
reti;
//=============================================================
// 语法格式:
// 实现功能: IRQ6中断服务程序
// 参数: 无
// 返回值: 无
//=============================================================
_IRQ6:
//add your code here
reti;
//=============================================================
// 语法格式:
// 实现功能: IRQ7中断服务程序
// 参数: 无
// 返回值: 无
//=============================================================
_IRQ7:
//add your code here
reti;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -