⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isr.asm

📁 完整的方案
💻 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 + -