?? isr.asm
字號:
//========================================================
// 文件名稱: isr.asm
// 功能描述: 中斷程序
// 維護記錄: 2005-10-17 v1.0
//========================================================
.TEXT
.INCLUDE hardware.inc
.INCLUDE S480.inc
.INCLUDE Key.inc
.INCLUDE Dig.inc
//============================================================================================
//匯編格式: _FIQ
//實現功能: 中斷服務子程序,在FIQ_TMA中斷中調用F_FIQ_Service_SACM_S480函數解碼并播放
//參數: 無
//返回值: 無
//破壞寄存器: 無
//=============================================================================================
.PUBLIC _FIQ;
_FIQ:
PUSH r1,r4 to [sp];
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:
r1=C_FIQ_PWM;
[P_INT_Clear]=r1;
POP R1,R4 from[sp];
reti;
L_FIQ_TimerA:
[P_INT_Clear]=r1;
call F_FIQ_Service_SACM_S480; //調用F_FIQ_Service_SACM_S480解碼
pop r1,r4 from [sp];
reti;
L_FIQ_TimerB:
[P_INT_Clear]=r1;
pop r1,r4 from [sp];
reti;
//============================================================================================
//匯編格式: _IRQ4
//實現功能: 中斷服務子程序,在IRQ4的1KHz中斷當中調用顯示程序
//參數: 無
//返回值: 無
//破壞寄存器: 無
//=============================================================================================
.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
//============================================================================================
//匯編格式: _IRQ6
//實現功能: 中斷服務子程序,在IRQ6的TMB2 128Hz中斷當中調用掃鍵程序
//參數: 無
//返回值: 無
//破壞寄存器: 無
//=============================================================================================
.PUBLIC _IRQ6
_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 + -