📄 isr.asm
字号:
//========================================================
// 文件名称: isr.asm
// 功能描述: 显示数据,扫描键盘
// 维护记录: 2005-09-12 v1.0
//========================================================
//.include hardware.inc
.external _g_uisum;
.external _g_ucIntFlag;
.INCLUDE SPCE061A.inc
.INCLUDE Dig.inc
//.INCLUDE Key.inc
.TEXT
.PUBLIC _IRQ4
_IRQ4:
push r1,r5 to [sp]
r1 = C_IRQ4_1KHz
test r1,[P_INT_Ctrl]
jnz ?L_IRQ4_1KHz
r1 = C_IRQ4_2KHz
test r1,[P_INT_Ctrl]
jnz ?L_IRQ4_2KHz
?L_IRQ4_4KHz:
call F_DIG_Drive //数码管显示,F_DIG_Drive函数在Dig.asm中定义
r1 = C_IRQ4_4KHz
[P_INT_Clear] = r1
pop r1,r5 from [sp]
reti
?L_IRQ4_2KHz:
[P_INT_Clear] = r1
pop r1,r5 from [sp]
reti
?L_IRQ4_1KHz:
[P_INT_Clear] = r1
pop r1,r5 from [sp]
reti
.PUBLIC _IRQ6
_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
pop r1,r5 from [sp]
reti
?L_IRQ6_TMB2:
// call F_Key_Scan //扫描键盘,F_Key_Scan函数在Key.asm中定义
r1 = C_IRQ6_TMB2
[P_INT_Clear] = r1
pop r1,r5 from [sp]
reti
.PUBLIC _IRQ5
_IRQ5: //定时1秒的中断程序
push r1,r4 to [sp];
r1 =0x0008;
test r1,[P_INT_Ctrl];
jnz L_4Hz;
r1 = 0x0004;
[P_INT_Clear] = r1; //清中断
r1 = [_g_uisum] //取时基信号量
r1 += 1;
cmp r1,2;
jnb loop0;
[_g_uisum]=r1 //保存时基信号量
pop r1,r4 from [sp];
reti;
loop0:
r1 = 0x0001;
[_g_ucIntFlag] = r1; //设置中断标识
r1 = 0
[_g_uisum] = r1
pop r1,r4 from [sp];
reti;
L_4Hz:
r1 = 0x0008;
[P_INT_Clear] = r1; //清中断
pop r1,r4 from [sp];
reti;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -