📄 irq.asm
字号:
//==================================================================
//文件名称:IRQ.asm
//功能描述:中断程序。实现日期时间的调整,以及秒表的实现。
//维护记录:2006.7.31 by zhenlei
//===================================================================
.INCLUDE SPCE061A.inc
.INCLUDE s480.inc
.EXTERNAL _num
.EXTERNAL _clock
.EXTERNAL _gyearmonthday
.EXTERNAL _gxq
.EXTERNAL _mbnum
.EXTERNAL _miaobiao
.EXTERNAL _int2hz
.EXTERNAL _mapcounter1
.TEXT
//===================================================================
//汇编语言格式:_FIQ
//功能描述:FIQ的中断服务函数
// 调用F_FIQ_Service_SACM_S480函数进行语音解码和语音数据的输出
//入口参数:无
//出口参数:无
//====================================================================
.PUBLIC _FIQ
_FIQ:
push r1,r5 to [sp]; //判断是否TimerA中断。
r1=0x2000;
test r1,[P_INT_Ctrl];
jnz ?L_FIQ_TimerA;
r1=0x0800;
test r1,[P_INT_Ctrl];
jnz ?L_FIQ_TimerB;
?L_FIQ_PWM: //判断是否为PWM中断。
r1=C_FIQ_PWM;
[P_INT_Clear]=r1;
jmp ?OUT
?L_FIQ_TimerA: //TimerA中断程序
[P_INT_Clear]=r1;
call F_FIQ_Service_SACM_S480;
jmp ?OUT
?L_FIQ_TimerB: //TimerB中断程序
[P_INT_Clear]=r1;
?OUT:
pop r1,r5 from[sp]
reti
//====================================================================
//汇编语言格式:_IRQ0
//功能描述:IRQ0的中断服务函数
// 如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//====================================================================
.PUBLIC _IRQ0
_IRQ0:
reti
//====================================================================
//汇编语言格式:_IRQ1
//功能描述:IRQ1的中断服务函数
// 如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//=====================================================================
.PUBLIC _IRQ1
_IRQ1:
reti
//=====================================================================
//汇编语言格式:_IRQ2
//功能描述:IRQ2的中断服务函数
// 如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//=====================================================================
.PUBLIC _IRQ2
_IRQ2:
reti
//=====================================================================
//汇编语言格式:_IRQ3
//功能描述:IRQ3的中断服务函数
// 如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//=====================================================================
.PUBLIC _IRQ3
_IRQ3:
reti
//=====================================================================
//汇编语言格式:_IRQ4
//功能描述:1KHZ中断,用来实现秒表的修改。
//入口参数:无
//出口参数:无
//=====================================================================
.PUBLIC _IRQ4
_IRQ4:
push r1,r5 to[sp]
r1=[P_INT_Ctrl]
test r1,0x0010
jnz ?INT_1KHZ
test r1,0x0400
jnz ?INT_4KHZ
?INT_2KHZ:
r1=0x0020
[P_INT_Clear]=r1
jmp ?OUT
?INT_4KHZ:
r1=0x0400
[P_INT_Clear]=r1
jmp ?OUT
?INT_1KHZ:
r1=0x0010
[P_INT_Clear]=r1
r1=[_mbnum]
r1=r1+0x0001
[_mbnum]=r1
r1=[_mapcounter1]
r1=r1+0x0001
[_mapcounter1]=r1
call _miaobiao
r1=0x0001
[P_Watchdog_Clear]=r1 //清看门狗
jmp ?OUT
?OUT:
pop r1,r5 from[sp]
reti
//=============================================================
//汇编语言格式:_IRQ5
//功能描述:2HZ中断,用来实现时钟以及日期的修改。
//入口参数:无
//出口参数:无
//=============================================================
.PUBLIC _IRQ5
_IRQ5:
push r1,r5 to[sp]
r1=[P_INT_Ctrl]
test r1,0x0004
jnz ?INT_2HZ
?INT_4HZ:
r1=0x0008
[P_INT_Clear]=r1
jmp ?OUT
?INT_2HZ:
r1=0x0004
[P_INT_Clear]=r1
r1=[_num]
r1=r1+0x0001
[_num]=r1
call _clock //调用时间运算子函数
call _gyearmonthday //调用年月运算子函数
call _gxq //调用星期运算子函数
r1=0x0001
[P_Watchdog_Clear]=r1 //清看门狗
r1=[_int2hz]
cmp r1,0x0000
jnz ?GAVE
r1=0x0001
[_int2hz]=r1
jmp ?OUT
?GAVE:
r1=0x0000
[_int2hz]=r1
?OUT:
pop r1,r5 from[sp]
reti
//===============================================================
//汇编语言格式:_IRQ6
//功能描述:IRQ6的中断服务函数
// 如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//================================================================
.PUBLIC _IRQ6
_IRQ6:
reti
//================================================================
//汇编语言格式:_IRQ7
//功能描述:IRQ7的中断服务函数
// 如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//================================================================
.PUBLIC _IRQ7
_IRQ7:
reti
//================================================================
//汇编语言格式:_BREAK
//功能描述:BREAK的中断服务函数
// 如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//================================================================
.PUBLIC _BREAK
_BREAK:
reti
.END
//================================================================//
//IRQ.asm end
//================================================================//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -