📄 isr.asm
字号:
//======================================================
// 文件名称: ISR.ASM
// 功能描述: 中断服务程序
// 完成日期: 2003-8-15
//======================================================
.include hardware.inc
.include DVR.inc
.include Key.inc
.public _FIQ, _IRQ6
.text
//============================================================================================
//汇编格式: _FIQ
//实现功能: 中断服务子程序,在FIQ_TMA中断中调用F_FIQ_Service_SACM_DVR函数
//参数: 无
//返回值: 无
//破坏寄存器: 无
//=============================================================================================
_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_DVR; //调用DVR录放音的FIQ服务程序
pop R1,R4 from [sp]; //出栈
reti;
L_FIQ_TimerB: //TimerB的FIQ中断服务
[P_INT_Clear]=R1; //清中断标志
pop R1,R4 from [sp]; //出栈
RETI;
//============================================================================================
//汇编格式: _IRQ6
//实现功能: 中断服务子程序,在IRQ6的TMB2 128Hz中断当中调用扫键程序
//参数: 无
//返回值: 无
//破坏寄存器: 无
//=============================================================================================
_IRQ6:
PUSH r1,r4 to [sp];
r1=0x0001;
TEST r1,[P_INT_Ctrl];
JNZ _IRQ6_TMB2;
r1=0x0002;
[P_INT_Clear]=r1;
POP r1,r4 FROM [sp];
RETI;
_IRQ6_TMB2:
[P_INT_Clear]=r1;
CALL F_Key_Scan; //扫描键盘
POP r1,r4 FROM [sp];
RETI;
//============================================================================================
//汇编格式: _Initial_INT
//C语言格式: void Initial_INT(void)
//实现功能: 初始化中断状态,以通知音频程序,目前已打开的中断情况
//参数: 无
//返回值: 无
//破坏寄存器: 无
//=============================================================================================
.CODE
.DEFINE P_INT_Ctrl_New 0x702D // Same as P_INT_Mask
.PUBLIC _Initial_INT
_Initial_INT:
r1 = [R_InterruptStatus] //在hardware.asm当中定义
r2 = [P_INT_Ctrl_New]
r1 = r1|r2
[R_InterruptStatus] = r1
retf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -