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

📄 isr.asm

📁 凌阳单片机的语音程序4
💻 ASM
字号:
//****************************************************************
// Function: Fast Interrupt Service routine Area                     
//      Service for     (1)PWM FIQ
//                      (2)Timer A FIQ
//                      (3)Timer B FIQ
//      User's FIQ must hook on here                            
//  _FIQ:                            // Fast interrupt entrence
//  _IRQ1:                           // interrupt entrence
//  _IRQ2:                           // interrupt entrence
//  _IRQ3:                           // interrupt entrence
//  _IRQ4:                           // interrupt entrence
//  _IRQ5:                           // interrupt entrence
//  _IRQ6:                           // interrupt entrence     
//  _IRQ7:                           // interrupt entrence
//****************************************************************

.include hardware.inc;              // include hardware information
.include ms01.inc;


.TEXT
.public _BREAK;
.public _FIQ;
.public _IRQ0;
.public _IRQ1;
.public _IRQ2;
.public _IRQ3;
.public _IRQ4;
.public _IRQ5;
.public _IRQ6;
.public _IRQ7;

               
_FIQ:
                push r1,r5 to [sp];

                r1 = C_FIQ_PWM;
                test r1,[P_INT_Ctrl];
                jne     L_FIQ_PWM;
                r1 = C_FIQ_TMA;
                test r1,[P_INT_Ctrl];
                jne L_FIQ_TimerA;
L_FIQ_TimerB:
                //r1 = C_FIQ_TimerB;
                //[P_INT_Clear] = r1;
                //------------------------------------------------------------------
                // hook Timer B FIQ subroutine here and define it to be external
                //------------------------------------------------------------------
                pop r1,r5 from [sp];
                reti;
L_FIQ_PWM:                                                                              // PWM FIQ entrence
                [P_INT_Clear] = r1;
                //------------------------------------------------------------------
                // hook PWM FIQ subroutine here and define it to be external
                //------------------------------------------------------------------
                //call F_FIQ_Service_SACM_S480;
                //call    F_FIQ_Service_SACM_MS01;
                pop r1,r5 from [sp];
                reti;
L_FIQ_TimerA:
                [P_INT_Clear] = r1;
                //------------------------------------------------------------------
                // hook Timer A FIQ subroutine here and define it to be external
                //call    F_FIQ_Service_SACM2000;         // Subband Timer A FIQ service
                //------------------------------------------------------------------
                call    F_FIQ_Service_SACM_MS01;
                pop r1,r5 from [sp];
                reti;

/////////////////////////////////////////////////////////////////////////////////////////
// Function: Interrupt Service routine Area
//      Service for     IRQ1 - IRQ7
//      User's IRQ must hook on here
/////////////////////////////////////////////////////////////////////////////////////////        
_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,r5 to [sp];
                call    F_IRQ2_Service_SACM_MS01; //2ch drum sound
                r1 = C_IRQ2_TMB;  // 0x0400
                [P_INT_Clear] = r1;
                pop r1,r5 from [sp];
                reti;
_IRQ3:
                push r1,r4 to [sp];
                pop r1,r4 from [sp];
                reti;
_IRQ4:        
                push r1,r1 to [sp];
                call    F_IRQ4_Service_SACM_MS01;  //tempo
                r1 = C_IRQ4_1KHz;  // 0x0010
                [P_INT_Clear] = r1;
                pop r1,r1 from [sp];
                reti;
_IRQ5:        
                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;
//========================================================================================        
// End of isr.asm
//========================================================================================
        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -