📄 isr.asm
字号:
.public _BREAK
.public _FIQ
.public _IRQ0
.public _IRQ1
.public _IRQ2
.public _IRQ3
.public _IRQ4
.public _IRQ5
.public _IRQ6
.public _IRQ7
.TEXT
_FIQ:
PUSH R1,R5 TO [SP]
R1 = [_SacmStatus]
JZ FIQ_End
R1-=2
JCC FIQ_Play
JZ FIQ_Playback
CMP R1, 1
JNZ FIQ_End
FIQ_Record:
.ifdef MOUDLE_DVR1600
CALL F_ISR_Service_SACM_DVR1600 // for record
.endif
JMP FIQ_End
FIQ_Play:
R1=[_PlayType]
R1+=FIQ_Play_Branch
PC=[R1]
FIQ_PlayMS01:
.ifdef MOUDLE_MS01
CALL F_ISR_Service_SACM_MS01
.endif
JMP FIQ_End
FIQ_Playback:
FIQ_PlayA1600:
.ifdef MOUDLE_DVR1600
CALL F_ISR_Service_SACM_DVR1600
.endif
JMP FIQ_End
FIQ_PlayS200:
.ifdef MOUDLE_S200
CALL F_ISR_Service_SACM_S200
.endif
JMP FIQ_End
FIQ_PlayS530:
.ifdef MOUDLE_S530
CALL F_ISR_Service_SACM_S530
.endif
JMP FIQ_End
FIQ_PlayS480:
FIQ_PlayS720:
.ifdef MOUDLE_S480
CALL F_ISR_Service_SACM_S480
.endif
JMP FIQ_End
FIQ_PlayA2000:
FIQ_PlayMS02:
FIQ_End:
R1=C_FIQ_TMB
[P_INT_Clear] = R1
POP R1,R5 FROM [sp]
RETI
FIQ_Play_Branch:
.DW FIQ_PlayA2000
.DW FIQ_PlayS480
.DW FIQ_PlayS720
.DW FIQ_PlayMS01
.DW FIQ_PlayA1600
.DW FIQ_PlayMS02
.DW FIQ_PlayS200
.DW FIQ_PlayS530
_IRQ2:
PUSH R1,R5 TO [SP]
.ifdef MOUDLE_MS01
R1 = [_SacmStatus]
JZ IRQ2_Jmp_End
CALL F_IRQ2_Service_SACM_MS01 //2ch drum sound
IRQ2_Jmp_End:
.endif
R1 = C_IRQ2_TMB
[P_INT_Clear] = R1
POP R1,R5 FROM [SP]
RETI
// ---------------------------------------------------------------------------
_IRQ4:
PUSH R1,R5 TO [SP]
.ifdef MOUDLE_MS01
R1 = [_SacmStatus]
JZ IRQ4_Jmp_End
CALL F_IRQ4_Service_SACM_MS01; // SONG Tempo control
IRQ4_Jmp_End:
.endif
R1 = C_IRQ4_1KHz;
[P_INT_Clear] = R1
POP R1,R5 FROM [SP]
RETI
// ---------------------------------------------------------------------------
_IRQ6:
PUSH R1 TO [SP]
R1 = C_IRQ6_TMB1
[P_INT_Clear] = R1
R1=[_SetFlag]
TEST R1, DiPlayTimeBit
JNE IRQ61
R1=[_PlayTotalTime]
R1+=1
[_PlayTotalTime]=R1
JNE IRQ60
R1=0xffff
[_PlayTotalTime]=R1
IRQ60:
R1=[_PrevDelayTime]
JE IRQ61
R1-=1
[_PrevDelayTime]=R1
IRQ61:
// R1=[_LowVEnTime]
// JE IRQ62
// R1-=1
// [_LowVEnTime]=R1
IRQ62:
R1=[_AutoOffRequire]
JNE IRQ63
R1=[_SacmStatus]
JNE IRQ63
R1=[_AutoOffTime]
R1+=1
[_AutoOffTime]=R1
JE IRQ63
CMP R1, [_AutoOffTimeSet]
JNE IRQ63
[_AutoOffRequire]=R1
IRQ63:
R1=[_RxErrCnt]
JE IRQ6E
R1-=1
[_RxErrCnt]=R1
IRQ6E:
POP R1 FROM [SP]
RETI
_BREAK:
_IRQ0:
_IRQ1:
_IRQ3:
_IRQ5:
_IRQ7:
RETI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -