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

📄 irq.asm

📁 凌阳单片机4*4键盘扩展源代码及原理电路(PDF格式)
💻 ASM
字号:

.INCLUDE hardware.inc				
.EXTERNAL	F_Key_Scan;
.TEXT
.PUBLIC _BREAK;
.PUBLIC _FIQ;
.PUBLIC _IRQ0;
.PUBLIC _IRQ1;
.PUBLIC _IRQ2;
.PUBLIC _IRQ3;
.PUBLIC _IRQ4;
.PUBLIC _IRQ5;
.PUBLIC _IRQ6;
.PUBLIC _IRQ7;

//============================================================================================
//函数: FIQ(),IRQ0(),IRQ1(),IRQ2(),IRQ3(),IRQ4(),IRQ5(),IRQ6(),IRQ7()
//语法:void FIQ(void ),void IRQ0(void ),void IRQ1(void ),void IRQ2(void ),void IRQ3(void ),
//      void IRQ4(void ),void IRQ5(void ),void IRQ6(void ),void IRQ7(void )
//描述:FIQ(),IRQ0(),IRQ1(),IRQ2(),IRQ3(),IRQ4(),IRQ5(),IRQ6(),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:
    POP R1,R5 FROM[SP];
    RETI;
L_FIQ_PWM:                                     
   [P_INT_Clear] = R1;
   POP R1,R5 FROM[SP];
   RETI;
L_FIQ_TimerA:
   [P_INT_Clear] = R1;
   POP R1,R5 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,R5 TO [SP];
    
    [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];
    [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];
	R1=0x0001;
	TEST R1,[P_INT_Ctrl];
	JNZ  _IRQ6_TMB2;
	R1=0x0002;
	[P_INT_Clear]=R1;
	POP R1,R4 FROM [SP];
    RETI;         
_IRQ6_TMB2:
	[P_INT_Clear]=r1;
	CALL	F_Key_Scan;
	POP R1,R4 FROM [SP];
    RETI;  
_IRQ7:        
    PUSH R1,R4 TO [SP];
    POP R1,R4 FROM[SP];
    RETI;
    
.public _SP_INT_128Hz;
 _SP_INT_128Hz:
     R1 = 0x0000;
     [P_TimeBase_Setup]=R1        // TMB2选择128Hz //TMB1选择8Hz,但不起作用 
     R1 = 0x0001 				  //开中断IRQ6_TMB2
   	 [P_INT_Ctrl]= r1 
	 INT IRQ
     RETF;
.PUBLIC _SP_Init_IOB;              
_SP_Init_IOB: .PROC
   	R1 = 0x00f0;      
    [P_IOB_Attrib] = R1;    
    [P_IOB_Dir] = R1;
    [P_IOB_Data] = R1;
    RETF
.ENDP;

     
//========================================================================================        
//  isr.asm结束
//========================================================================================
        
       

⌨️ 快捷键说明

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