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

📄 isr.asm

📁 本方案主要介绍了利用凌阳SPCE061A精简开发板作为控制核心
💻 ASM
字号:
//============================================================
// 文件名称:isr.asm
// 实现功能:采用FIQ_TMA(8K)中断实现语音数据队列的填充
// 日期: 2005/6/16
//============================================================
.TEXT
.INCLUDE spce.inc				         //包含IO、Timer、AD、DA等的设置
.INCLUDE a2000.inc
.INCLUDE Resource.inc

.EXTERNAL  _GetKey
.EXTERNAL  _ScreenAegis
.EXTERNAL   _flag;

.DEFINE TIMERA_CLKA_2           0x002D;
.DEFINE TIMERA_CLKB_1           0x0030;
.DEFINE RUN_TIMERA              0x2000;
.DEFINE TIMER_DATA_FOR_2HZ     0xFF37;
 
//======================================================================================
//voice function:to call the F_FIQ_Service_SACM_A2000 play voice
//edit by hongyan
//2005.4.01
//======================================================================================
.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;
//------------------------------------------------------------------
// hook PWM FIQ subroutine here and define it to be external
//------------------------------------------------------------------	
L_FIQ_PWM:
	R1 = C_FIQ_PWM;
	[P_INT_Clear] = R1;
	POP R1,R4 from[sp];
	reti;
//------------------------------------------------------------------		
// hook Timer A FIQ subroutine here and define it to be external
// SACM-A2000 Timer A FIQ service
//------------------------------------------------------------------	
L_FIQ_TimerA:

	[P_INT_Clear] = R1;
	call F_FIQ_Service_SACM_A2000;
	pop R1,R4 from [sp];
	reti;
//------------------------------------------------------------------
// hook Timer B FIQ subroutine here and define it to be external
//------------------------------------------------------------------	
L_FIQ_TimerB:
	[P_INT_Clear]=R1;
	pop R1,R4 from [sp];
	RETI;
	
//======================================================================
//	汇编格式:	_SP_INT_IRQ6
//	C格式:		F_SP_INT_IRQ6();
//	实现功能:	初始化中断IRQ6
//	入口参数:	无
//	出口参数:	无
//	破坏寄存器:r1
//======================================================================
.PUBLIC _SP_INT_IRQ6;    	      //8hz
.PUBLIC F_SP_INT_IRQ6;    	      //8hz
_SP_INT_IRQ6:   .PROC
 F_SP_INT_IRQ6:
     r1 = 0x0000;
     [P_TimeBase_Setup]=r1        //8hz
     r1 =  [P_INT_Ctrl_New];
	 r1 =  r1 |0x0002;           //开中断IRQ6   			         
	 [P_INT_Ctrl_New]= r1 
	 irq on;	 
     RETF;
.ENDP        

//===================================================================================
//  汇编格式:_IRQ6
//  C格式:   void IRQ6(void)
//  实现功能:利用2Hz中断定时1秒
//	出口参数:	无
//	破坏寄存器:无
//===================================================================================
   
.PUBLIC  _IRQ6;
_IRQ6:
	PUSH r1,r4 to [sp];
	r1 = 0x0002;
	TEST r1,[P_INT_Ctrl];
	JNZ  _IRQ6_TMB1;
//	r1=0x0002;
    r1=0x0001;
	[P_INT_Clear]=r1;	
	POP r1,r4 FROM [sp];
    RETI;         
_IRQ6_TMB1:   
	[P_INT_Clear]=r1;
	call _GetKey;	
	POP r1,r4 FROM [sp];
    RETI;
//======================================================================
//	汇编格式:	_turn_off_timeA
//	C格式:		turn_off_timeA();
//	实现功能:	计时设置
//	入口参数:	无
//	出口参数:	无
//	破坏寄存器:r1
//======================================================================
.PUBLIC _turn_off_timeA;
_turn_off_timeA:.PROC
       r1 = [P_INT_Ctrl_New];
       r1 &= 0xffef;
       [P_INT_Ctrl_New] = r1;
       RETF;
.ENDP        
.PUBLIC _SP_INT_TIMEA
_SP_INT_TIMEA:
    R1 = TIMER_DATA_FOR_2HZ;
    [P_TimerA_Data] = R1;
    R1 = TIMERA_CLKA_2; 
    [P_TimerA_Ctrl] = R1;
    R1 = [P_INT_Ctrl_New];
    R1 |= 0x0010
    [P_INT_Ctrl_New] = R1
    IRQ ON
    RETI
//===================================================================================
//  汇编格式:  _IRQ4
//  C格式:     void IRQ6(void)
//  实现功能:  
//	出口参数:	无
//	破坏寄存器:无
//===================================================================================
.PUBLIC _IRQ4;
_IRQ4:
     PUSH R1,R4 TO [SP]
     R1 = 0x0040;
     [P_INT_Clear] = R1;
     R1 = [_flag]
     R1 = R1 - 1;
     [_flag] = R1
exit:POP R1,R4 FROM [SP];
     RETI             
//========================================================================================        
// End of isr.asm
//========================================================================================       
        

⌨️ 快捷键说明

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