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

📄 irq.asm

📁 基于凌阳单片机数字电子钟的C语言源代码 基于凌阳单片机数字电子钟的C语言源代码
💻 ASM
字号:
//==================================================================
//文件名称:IRQ.asm
//功能描述:中断程序。实现日期时间的调整,以及秒表的实现。
//维护记录:2006.7.31  by zhenlei
//===================================================================
.INCLUDE SPCE061A.inc
.INCLUDE s480.inc
.EXTERNAL _num
.EXTERNAL _clock
.EXTERNAL _gyearmonthday
.EXTERNAL _gxq
.EXTERNAL _mbnum
.EXTERNAL _miaobiao
.EXTERNAL _int2hz
.EXTERNAL _mapcounter1
.TEXT
//===================================================================
//汇编语言格式:_FIQ
//功能描述:FIQ的中断服务函数
//         调用F_FIQ_Service_SACM_S480函数进行语音解码和语音数据的输出
//入口参数:无
//出口参数:无
//====================================================================
.PUBLIC _FIQ
_FIQ:
	push r1,r5 to [sp];                                            //判断是否TimerA中断。
	r1=0x2000;
	test r1,[P_INT_Ctrl];
	jnz ?L_FIQ_TimerA;
	r1=0x0800;
	test r1,[P_INT_Ctrl];
	jnz ?L_FIQ_TimerB;
?L_FIQ_PWM:                                                        //判断是否为PWM中断。
    r1=C_FIQ_PWM;
	[P_INT_Clear]=r1;
    jmp ?OUT
?L_FIQ_TimerA:                                                     //TimerA中断程序
	[P_INT_Clear]=r1;
    call F_FIQ_Service_SACM_S480;	
	jmp ?OUT
?L_FIQ_TimerB:                                                     //TimerB中断程序
	[P_INT_Clear]=r1;
?OUT:    
    pop r1,r5 from[sp]
    reti  
//====================================================================
//汇编语言格式:_IRQ0
//功能描述:IRQ0的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//====================================================================     
.PUBLIC _IRQ0       
_IRQ0:	
	reti
//====================================================================
//汇编语言格式:_IRQ1
//功能描述:IRQ1的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//=====================================================================
.PUBLIC _IRQ1
_IRQ1:	
	reti
//=====================================================================
//汇编语言格式:_IRQ2
//功能描述:IRQ2的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//=====================================================================
.PUBLIC _IRQ2
_IRQ2:	
	reti
//=====================================================================
//汇编语言格式:_IRQ3
//功能描述:IRQ3的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//=====================================================================
.PUBLIC _IRQ3
_IRQ3:	
	reti
//=====================================================================
//汇编语言格式:_IRQ4
//功能描述:1KHZ中断,用来实现秒表的修改。
//入口参数:无
//出口参数:无
//=====================================================================
.PUBLIC _IRQ4
_IRQ4:
	push r1,r5 to[sp]
    r1=[P_INT_Ctrl]
    test r1,0x0010
    jnz ?INT_1KHZ
    test r1,0x0400
    jnz ?INT_4KHZ
?INT_2KHZ:
	r1=0x0020
    [P_INT_Clear]=r1
    jmp ?OUT
?INT_4KHZ:
	r1=0x0400
    [P_INT_Clear]=r1        
    jmp ?OUT
?INT_1KHZ:
	r1=0x0010
    [P_INT_Clear]=r1
    r1=[_mbnum]
    r1=r1+0x0001
    [_mbnum]=r1  
    r1=[_mapcounter1]
    r1=r1+0x0001
    [_mapcounter1]=r1         
    call _miaobiao
	r1=0x0001
    [P_Watchdog_Clear]=r1                                     //清看门狗
	jmp ?OUT
?OUT:    
    pop r1,r5 from[sp]
    reti 
//=============================================================
//汇编语言格式:_IRQ5
//功能描述:2HZ中断,用来实现时钟以及日期的修改。
//入口参数:无
//出口参数:无
//============================================================= 	
 .PUBLIC _IRQ5
_IRQ5:
	push r1,r5 to[sp]
    r1=[P_INT_Ctrl]
    test r1,0x0004
    jnz ?INT_2HZ
?INT_4HZ:
    r1=0x0008
    [P_INT_Clear]=r1
    jmp ?OUT
?INT_2HZ:
    r1=0x0004
    [P_INT_Clear]=r1
    r1=[_num]
    r1=r1+0x0001
    [_num]=r1
    call _clock                                             //调用时间运算子函数            
    call _gyearmonthday                                     //调用年月运算子函数            
    call _gxq                                               //调用星期运算子函数
    r1=0x0001
	[P_Watchdog_Clear]=r1                                   //清看门狗
	r1=[_int2hz]
    cmp r1,0x0000
    jnz ?GAVE
    r1=0x0001
    [_int2hz]=r1
    jmp ?OUT
?GAVE:
    r1=0x0000
    [_int2hz]=r1
?OUT:    
    pop r1,r5 from[sp]    
    reti    
//=============================================================== 
//汇编语言格式:_IRQ6
//功能描述:IRQ6的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无 
//================================================================	  
.PUBLIC _IRQ6
_IRQ6:	
	reti
//================================================================
//汇编语言格式:_IRQ7
//功能描述:IRQ7的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//================================================================
.PUBLIC _IRQ7
_IRQ7:	
	reti
//================================================================
//汇编语言格式:_BREAK
//功能描述:BREAK的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//================================================================
.PUBLIC _BREAK
_BREAK:	
	reti
.END

//================================================================//
//IRQ.asm end
//================================================================//  
         
                  
              
       



⌨️ 快捷键说明

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