isr.asm
来自「台湾凌阳单片机SPCE061A单芯片做的一个带按健LCD显示」· 汇编 代码 · 共 115 行
ASM
115 行
//====================================================================================//
// 文件名: isr.asm
// 描 述: 该文件的程序主要用于处理SPCE061A的所有中断
// 日 期: 2003/04/03
//====================================================================================//
.public _BREAK
.public _FIQ
.public _IRQ0
.public _IRQ1
.public _IRQ2
.public _IRQ3
.public _IRQ4
.public _IRQ6
.public _IRQ7
.include hardware.inc
.include A2000.inc
.include Resource.inc
.external _F_USB_Isr
.external _F_Interrupt_Off
.external _F_Interrupt_On
.TEXT
_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_A2000;
R1 = 0x0001;
[P_Watchdog_Clear] = R1;
pop R1,R4 from [sp];
reti;
L_FIQ_TimerB:
[P_INT_Clear]=R1;
pop R1,R4 from [sp];
RETI;
_BREAK:
push R1,R4 to [sp];
pop R1,R4 from [sp];
reti;
// ---------------------------------------------------------------------------
_IRQ0:
push R1,R4 to [sp];
pop R1,R4 from [sp];
reti;
// ---------------------------------------------------------------------------
_IRQ1:
push R1,R4 to [sp];
pop R1,R4 from [sp];
reti;
// ---------------------------------------------------------------------------
_IRQ2:
push R1,R4 to [sp];
pop R1,R4 from [sp];
reti;
// ---------------------------------------------------------------------------
_IRQ3:
push R1,R5 to [sp]; //压栈保护
R1=0x0100;
test R1,[P_INT_Ctrl]; //比较是否为IRQ3_EXT1
jnz irq3_ext1; //是,则转至对应程序段;
R1=0x0200;
test R1,[P_INT_Ctrl]; //否,则比较是否为IRQ3_EXT2
jnz irq3_ext2; //是,则转至对应程序段;
irq3_key: //否,则进入键唤醒中断
R1=0x0080;
[P_INT_Clear]=R1;
jmp ExitIrq3;
irq3_ext2:
R1=0x0200;
[P_INT_Clear]=R1;
jmp ExitIrq3;
irq3_ext1:
int off;
R1=0x0100;
[P_INT_Clear]=R1;
R1=0x0001;
[P_Watchdog_Clear]=R1;
call _F_USB_Isr; //调用PDIUSBD12中断处理函数
int irq;
ExitIrq3:
pop R1,R5 from [sp];
reti;
// ---------------------------------------------------------------------------
_IRQ4:
push R1,R4 to [sp];
pop R1,R4 from [sp];
reti;
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
_IRQ6:
push R1,R4 to [sp];
pop R1,R4 from [sp];
reti;
// ---------------------------------------------------------------------------
_IRQ7:
push R1,R4 to [sp];
pop R1,R4 from [sp];
reti;
// ---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?