📄 isr.asm
字号:
//======================================================
// 文件名称: ISR.asm
// 功能描述: 系统中断服务函数
// 维护记录: 2006-10-10 v1.0
//======================================================
.include spce061a.inc
.include key.inc
.include dig.inc
.external F_FIQ_Service_SACM_S480
.external _uiMode,_uiTurn
.public _FIQ,_IRQ0,_IRQ1,_IRQ2,_IRQ3,_IRQ4,_IRQ5,_IRQ6,_IRQ7,_BREAK
.RAM
.VAR uiBlink
.text
//======================================================
// 函数名称: FIQ
// 汇编调用: _FIQ
// 实现功能: TimerA中断服务函数
// 入口参数: 无
// 出口参数: 无
// 破坏寄存器: 无
//======================================================
_FIQ:
push r1,r5 to [sp]
r1 = C_FIQ_TMA //判断是否是定时器A的FIQ中断?
[P_INT_Clear] = r1 //清中断标志位
call F_FIQ_Service_SACM_S480 //调用音频中断服务程序A2000的
pop r1,r5 from [sp]
reti
//======================================================
// 函数名称: IRQ2
// 汇编调用: _IRQ2
// 实现功能: TimerB中断服务函数
// 入口参数: 无
// 出口参数: 无
// 破坏寄存器: 无
//======================================================
_IRQ2: // 自动状态下切换DS18B20通道
push r1 to [sp]
r1 = [_uiMode]
jz ?Exit // 手动模式下,禁止修改uiChannel
// r1 = [_F_Change]
// jz ?Exit // 当前转换尚未完成,禁止修改uiChannel
r1 = [_uiTurn]
r1 += 1
[_uiTurn] = r1
cmp r1,1
jna ?Exit
r1 = 0
[_uiTurn] = r1
?Exit:
r1 = C_IRQ2_TMB
[P_INT_Clear] = r1
pop r1 from [sp]
reti
//======================================================
// 函数名称: IRQ4
// 汇编调用: _IRQ4
// 实现功能: 4KHz中断服务函数
// 入口参数: 无
// 出口参数: 无
// 破坏寄存器: 无
//======================================================
_IRQ4: // 数码管显示
push r1 to [sp]
call F_DIG_Drive
r1 = C_IRQ4_4KHz
[P_INT_Clear] = r1
pop r1 from [sp]
reti
//======================================================
// 函数名称: IRQ5
// 汇编调用: _IRQ5
// 实现功能: 2Hz中断服务函数
// 入口参数: 无
// 出口参数: 无
// 破坏寄存器: 无
//======================================================
_IRQ5: // 数码管闪烁
push r1 to [sp]
call F_DIG_Blink
r1 = C_IRQ5_2Hz
[P_INT_Clear] = r1
pop r1 from [sp]
reti
//======================================================
// 函数名称: IRQ6
// 汇编调用: _IRQ6
// 实现功能: 128Hz中断服务函数
// 入口参数: 无
// 出口参数: 无
// 破坏寄存器: 无
//======================================================
_IRQ6: // 按键扫描
push r1 to [sp]
call F_Key_Scan
r1 = C_IRQ6_TMB2
[P_INT_Clear] = r1
pop r1 from [sp]
reti
// 其他未用中断定义
_IRQ0:
reti
_IRQ1:
reti
_IRQ3:
reti
_IRQ7:
reti
_BREAK:
reti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -