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

📄 isr.asm

📁 该软件为在sunplus的61单片机上实现的mp3播放器.里面有完整的源代码.
💻 ASM
字号:
//====================================================================================//
// 文件名:    isr.asm
// 描  述:   该文件的程序主要用于处理SPCE061A的所有中断
// 日  期:   2003/04/03
//====================================================================================//
.public _BREAK 
.public _FIQ 
.public _IRQ0 
.public _IRQ1 
.public _IRQ2 
.public _IRQ3 
.public _IRQ4 
.public _IRQ5 
.public _IRQ6 
.public _IRQ7 

.external _KeyEvent
.include .\spce061\061reg.inc   
.TEXT

_FIQ:                  
		push R1,R4 to [sp];                
        pop R1,R4 from [sp]; 
        reti;             
     
_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,R4 to [sp]; 
		call _KeyEvent
        R1=0x0400;	     
		[P_INT_Clear]=R1; 		
        pop R1,R4 from [sp]; 
        reti;         
// ---------------------------------------------------------------------------
_IRQ3:   

   		push R1,R5 to [sp];		//压栈保护 
   		R1=0x0100; 	    
   		test R1,[P_INT_Ctrl]; 	//比较是否为IRQ3_EXT1	 
   		jnz  irq3_ext1;			//是,则转至对应程序段;
   		R1=0x0200; 	    
   		test R1,[P_INT_Ctrl]; 	//否,则比较是否为IRQ3_EXT2
   		jnz  irq3_ext2;			//是,则转至对应程序段;
 
irq3_key:		     			//否,则进入键唤醒中断
		R1=0x0001;
		[P_Watchdog_Clear]=R1;
		R1=0x0080;	     
		[P_INT_Clear]=R1; 
    	jmp ExitIrq3;
irq3_ext1:	
    	R1=0x0100; 	     
    	[P_INT_Clear]=R1; 
    	jmp ExitIrq3;
irq3_ext2:
   		int off;
   		R1=0x0200; 	     
   		[P_INT_Clear]=R1; 
		R1=0x0001;
		[P_Watchdog_Clear]=R1;
   		int irq;
ExitIrq3:
   		pop R1,R5 from [sp]; 
   		reti;          
// ---------------------------------------------------------------------------
_IRQ4:        
        push R1,R5 to [sp];
   		R1=0x0010; 
   		test R1,[P_INT_Ctrl];
   		jnz IRQ4_1KHz
   		R1=0x0020;
   		test R1,[P_INT_Ctrl]
   		jnz IRQ4_2KHz
IRQ4_4KHz:
		r1=0x0040
		[P_INT_Clear]=r1
		jmp	Exit_IRQ4	   		
IRQ4_2KHz:
		r1=0x0020
		[P_INT_Clear]=r1
   		jmp Exit_IRQ4
IRQ4_1KHz:
   		r1=0x0010
   		[P_INT_Clear]=r1
Exit_IRQ4:		         
        pop R1,R5 from [sp]; 
        reti;   
// ---------------------------------------------------------------------------
_IRQ5:        
        push R1,R5 to [sp]
   		R1=0x0004; 	    
   		test R1,[P_INT_Ctrl]; 		//比较是否为IRQ5_2Hz	 
   		jnz  IRQ5_2Hz;				//是,则转至对应程序段;
IRQ5_4Hz:
		r1=0x0008;		
		[P_INT_Clear]=r1;
		R1=0x0001;
		[P_Watchdog_Clear]=R1;
		jmp Exit_IRQ5; 		
IRQ5_2Hz:
		r1=0x0004;
		[P_INT_Clear]=r1;  		   		
Exit_IRQ5:   		          
        pop R1,R5 from [sp] 
        reti          
// ---------------------------------------------------------------------------
_IRQ6:        
        push R1,R5 to [sp]; 	        
        pop R1,R5 from [sp]; 
        reti;          
// ---------------------------------------------------------------------------
_IRQ7:        
        push R1,R4 to [sp]; 
        pop R1,R4 from [sp]; 
        reti;          
// ---------------------------------------------------------------------------
        

⌨️ 快捷键说明

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