?? fiq.asm
字號:
//*********************************************************//
//函數:FIQ()
//語法:void FIQ(void)
//描述:快速請求中斷;
// 入口地址:_FIQ
// 功能:調用語音解碼并播放API
//參數:無
//返回:無
//*********************************************************//
.INCLUDE a2000.inc;
.INCLUDE hardware.inc
.PUBLIC _FIQ,_IRQ3, _IRQ5, _IRQ6
.EXTERNAL _TimeCount; // 觸發計時
.EXTERNAL Per500msSet //2Hz中斷,每次500ms時鐘
.EXTERNAL _TimeChangeCount; //計時
.TEXT
_FIQ:
push r1,r5 to [sp]
r1 = 0x0800
r1&=[P_INT_Ctrl]
jnz FIQ_is_TimB
r1 = 0x2000
r1&=[P_INT_Ctrl]
jnz FIQ_is_TimA
r1 = 0x8000
r1&=[P_INT_Ctrl]
jnz FIQ_is_PWM
FIQ_is_PWM:
[P_INT_Clear] = r1
pop r1,r5 from [sp];
reti;
FIQ_is_TimA:
call F_FIQ_Service_SACM_A2000;
r1 = 0x2000
[P_INT_Clear] = r1
pop r1,r5 from [sp];
reti;
FIQ_is_TimB:
r1=0x0800;
[P_INT_Clear] = r1;
pop r1,r5 from [sp];
reti;
_IRQ3:
push r1,r5 to [sp]
r1 = 0x0380; //按鍵喚醒
[P_INT_Clear] = r1;
pop r1,r5 from [sp];
reti;
//--------2Hz and 4Hz------//
_IRQ5:
push r1,r5 to [sp]
r1 = 0x0008;
test r1,[P_INT_Ctrl];
jnz L_IRQ5_4Hz;
L_IRQ5_2Hz:
r1 = 0xFFFF; //萬年歷時間///////////////////
[Per500msSet] = r1;
r1 = [_TimeCount]; //計時
r1 += 1;
[_TimeCount] = r1;
r1=0x0004
[P_INT_Clear] = r1;
pop r1,r5 from [sp];
reti;
L_IRQ5_4Hz:
[P_INT_Clear] = r1;
pop r1,r5 from [sp];
reti;
//-------- 256Hz RTC --------//
_IRQ6:
push r1,r5 to [sp]
r1=0x0001
test r1,[P_INT_Ctrl]
jnz IRQ6_TMB2
IRQ6_TMB1:
r1=0x0002
[P_INT_Clear]=r1
pop r1,r5 from [sp];
reti;
IRQ6_TMB2:
r1=[_TimeChangeCount]
r1+=1
[_TimeChangeCount]=r1
r1=0x0001
[P_INT_Clear]=r1
pop r1,r5 from [sp];
reti;
.END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -