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

📄 isr.asm

📁 本文介绍了利用两套SPCE061A精简开发板(简称61板)和两套传感器模组设计的遥控环境测量系统方案:其中利用一套61板作为主控制器
💻 ASM
字号:
//====================================================================================
//文件名:isr.asm
//功能描述:中断服务函数文件
//维护记录:2006年6月16         by hongyan.Feng
//====================================================================================
.INCLUDE SPCE061A.inc
.INCLUDE s480.inc

.EXTERNAL _ADGet				//A/D转换函数申明,该函数在AD.asm中定义
.EXTERNAL _ADGet1				//A/D转换函数申明,该函数在AD.asm中定义

.EXTERNAL _TADData				//外部变量用来存储A/D转换的数据
.EXTERNAL _TCounter				//外部变量用来作为测量次数计数器
.EXTERNAL _LADData				//外部变量用来存储A/D转换的数据
.EXTERNAL _LCounter				//外部变量用来作为测量次数计数器
.EXTERNAL _SFlag				//外部变量用来作为检测测量温度还是光线

.EXTERNAL _iData				//外部变量用来作为保存红外接收头接收数据
.EXTERNAL _iCounter				//外部变量用来作为红外接收计数器

.TEXT
//==============================================================================
//汇编语言格式:_BREAK
//功能描述:BREAK的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//===============================================================================
.PUBLIC _BREAK
_BREAK:
	reti 
//==============================================================================
//汇编语言格式:_FIQ
//功能描述:FIQ的中断服务函数
//         调用F_FIQ_Service_SACM_S480函数进行语音解码和语音数据的输出
//入口参数:无
//出口参数:无
//===============================================================================
.PUBLIC _FIQ
_FIQ:
	push r1,r5 to[sp]
	r1 = 0x2000
	test r1,[P_INT_Ctrl]
	jnz ?FIQ_TMA
	r1 = 0x0800
	test r1,[P_INT_Ctrl]
	jnz ?FIQ_TMB
	r1 = 0x8000
	[P_INT_Clear] = r1
	jmp ?exit
?FIQ_TMA:
	[P_INT_Clear] = r1
	call F_FIQ_Service_SACM_S480
	jmp ?exit
?FIQ_TMB:
	[P_INT_Clear] = r1
?exit:
	pop r1,r5 from[sp]
	reti 
//==============================================================================
//汇编语言格式:_IRQ0
//功能描述:IRQ0的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//===============================================================================
.PUBLIC _IRQ0
_IRQ0:
	reti 
//==============================================================================
//汇编语言格式:_IRQ1
//功能描述:IRQ1的中断服务函数,利用38KHz中断读取IOA7口的数据,并进行时间累加
//入口参数:无
//出口参数:无
//===============================================================================
.PUBLIC _IRQ1
_IRQ1:
	push r1,r5 to[sp]
	r1 = 0x1000
	[P_INT_Clear] = r1
	r1 = [P_IOA_Data]
	r1 &= 0x0080
	[_iData] = r1
	r1 = [_iCounter]
	r1 += 1
	[_iCounter] = r1
	pop r1,r5 from[sp]
	reti
//==============================================================================
//汇编语言格式:_IRQ2
//功能描述:IRQ2的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//===============================================================================
.PUBLIC _IRQ2
_IRQ2:
	reti 	
//==============================================================================
//汇编语言格式:_IRQ3
//功能描述:IRQ3的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//===============================================================================
.PUBLIC _IRQ3
_IRQ3:
	reti 
//==============================================================================
//汇编语言格式:_IRQ4
//功能描述:IRQ4的中断服务函数
//        这个中断服务程序中调用A/D转换函数取转换数据,并进行10次累加
//入口参数:无
//出口参数:无
//===============================================================================	
.PUBLIC _IRQ4
_IRQ4:
	push r1,r5 to[sp]							//寄存器入栈
	r1 = 0x0010
	test r1,[P_INT_Ctrl]						//判断是否为IRQ4_1KHz中断
	jnz ?IRQ4_1KHz								//是,转向?IRQ4_1KHz   
	r1 = 0x0020          
	test r1,[P_INT_Ctrl]						//判断是否为IRQ4_2KHz中断
	jnz ?IRQ4_2KHz								//是,转向?IRQ4_2KHz  
	r1 = 0x0040
	[P_INT_Clear] = r1							//清IRQ4_4KHz中断标志
	jmp ?exit
?IRQ4_1KHz:
	[P_INT_Clear] = r1							//清IRQ4_1KHz中断标志
	r1 = [_SFlag]
	test r1,0x0001								//检测是否为温度测量标志
	jnz ?TM
	test r1,0x0002								//检测是否为光线测量标志
	jnz ?LG
	jmp ?exit
?TM:
	call _ADGet									//调用A/D转换程序测量温度
	r2 = [_TADData]								//
	r2 += r1									//取转换后数据,累加
	[_TADData] = r2
	r1 = [_TCounter]							//计数器加一  
	r1 += 1
	[_TCounter] = r1
	jmp ?exit
?LG:		
	call _ADGet1								//调用A/D转换程序测量光线
	r2 = [_LADData]								//
	r2 += r1									//取转换后数据,累加
	[_LADData] = r2
	r1 = [_LCounter]							//计数器加一  
	r1 += 1
	[_LCounter] = r1
	jmp ?exit
?IRQ4_2KHz:	
	[P_INT_Clear] = r1							//清IRQ4_2KHz中断标志
?exit:	
	pop r1,r5 from[sp]                         //寄存器出栈
	reti 
//==============================================================================
//汇编语言格式:_IRQ5
//功能描述:IRQ5的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//===============================================================================	
.PUBLIC _IRQ5
_IRQ5:
	reti 
//==============================================================================
//汇编语言格式:_IRQ6
//功能描述:IRQ6的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//===============================================================================	
.PUBLIC _IRQ6
_IRQ6:
	reti 
//==============================================================================
//汇编语言格式:_IRQ7
//功能描述:IRQ7的中断服务函数
//        如果需要,请在reti前面写用户的中断服务函数
//入口参数:无
//出口参数:无
//===============================================================================	
.PUBLIC _IRQ7
_IRQ7:
	reti 

⌨️ 快捷键说明

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