📄 irq.asm
字号:
.external _ironnum
.external _ironflag
.external _timenum
.include hardware.inc
.include S480.inc
.include Resource.inc
.text
.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;
pop r1,r4 from [sp];
reti;
L_FIQ_TimerB:
[P_INT_Clear]=r1;
pop r1,r4 from [sp];
reti;
.public _IRQ3;
_IRQ3:
push r1,r2 to [sp]
int off
r1=[P_INT_Ctrl]
cmp r1,0x0100
jnz IQR3_EXT2
//cmp r1,0x0080
//jz IQR3_KEY
r2=[_ironnum]
r2+=1
[_ironnum]=r2
r2=1
[_ironflag]=r2
cmp r2,4
jnz NEXTGO
call F_Delay5s
NEXTGO:
r1=0x0100
[P_INT_Clear]=r1
INT FIQ,IRQ
pop r1,r2 from [sp]
reti
IQR3_EXT2:
[P_INT_Clear]=r1
int FIQ,IRQ
pop r1,r2 from [sp]
reti
.public _IRQ5
_IRQ5:
push r1,r3 to [sp]
int off
r1=[P_INT_Ctrl]
test r1,0x0008
int fiq,irq
jnz To2Hz
r2=[_timenum]
r2+=1
[_timenum]=r2
cmp r2,340
jnz Irq5End
r3=[P_IOB_Data]
r3&=0xe0ff
[P_IOB_Data]=r3 //小车停止运动
Irq5End:
[P_INT_Clear]=r1
pop r1,r3 from [sp]
reti
To2Hz:
r1=0x0004
[P_INT_Clear]=r1
pop r1,r3 from [sp]
reti;
.code
.public F_Delay5s
F_Delay5s:
push r1,r5 to [sp]
r1=[P_IOB_Data]
r1&=0xe0ff
[P_IOB_Data]=r1 // 关电机
irq off
r1=28
LOOPD1:
r2=0xffff
LOOPD2:
r2-=1
jnz LOOPD2
r1-=1
r3=1
[_ironflag]=r3
jnz LOOPD1
irq on;
pop r1,r5 from [sp]
retf;
.public _F_Delay2s
_F_Delay2s:
push r1,r5 to [sp]
r1=[P_IOB_Data]
r1&=0xe0ff
[P_IOB_Data]=r1 // 关电机
r1=10
LOOP11:
r2=0xffff
LOOP22:
r2-=1
jnz LOOP22
r1-=1
r3=1
[_ironflag]=r3
jnz LOOP11
pop r1,r5 from [sp]
retf;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -