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

📄 isr.asm

📁 这是利用凌阳单片机实现的多路温度测量
💻 ASM
字号:
//======================================================
// 文件名称:	ISR.asm
// 功能描述:	系统中断服务函数
// 维护记录:	2006-10-10	v1.0
//======================================================

.include spce061a.inc
.include key.inc
.include dig.inc

.external F_FIQ_Service_SACM_S480

.external _uiMode,_uiTurn
.public _FIQ,_IRQ0,_IRQ1,_IRQ2,_IRQ3,_IRQ4,_IRQ5,_IRQ6,_IRQ7,_BREAK

.RAM
.VAR uiBlink

.text
//======================================================
// 函数名称:	FIQ
// 汇编调用:	_FIQ
// 实现功能:   TimerA中断服务函数
// 入口参数:	无
// 出口参数:	无
// 破坏寄存器:	无
//======================================================
_FIQ:
	push r1,r5 to [sp]
	r1 = C_FIQ_TMA					//判断是否是定时器A的FIQ中断?
	[P_INT_Clear] = r1				//清中断标志位
	call F_FIQ_Service_SACM_S480	//调用音频中断服务程序A2000的
	pop r1,r5 from [sp]
	reti

//======================================================
// 函数名称:	IRQ2
// 汇编调用:	_IRQ2
// 实现功能:   TimerB中断服务函数
// 入口参数:	无
// 出口参数:	无
// 破坏寄存器:	无
//======================================================
_IRQ2:								// 自动状态下切换DS18B20通道
	push r1 to [sp]
	r1 = [_uiMode]
	jz ?Exit						// 手动模式下,禁止修改uiChannel	
//	r1 = [_F_Change]
//	jz ?Exit						// 当前转换尚未完成,禁止修改uiChannel	
	r1 = [_uiTurn]
	r1 += 1
	[_uiTurn] = r1
	cmp r1,1
	jna ?Exit
	r1 = 0
	[_uiTurn] = r1
?Exit:
	r1 = C_IRQ2_TMB
	[P_INT_Clear] = r1
	pop r1 from [sp]
	reti

//======================================================
// 函数名称:	IRQ4
// 汇编调用:	_IRQ4
// 实现功能:   4KHz中断服务函数
// 入口参数:	无
// 出口参数:	无
// 破坏寄存器:	无
//======================================================
_IRQ4:								// 数码管显示
	push r1 to [sp]
	call F_DIG_Drive
	r1 = C_IRQ4_4KHz
	[P_INT_Clear] = r1
	pop r1 from [sp]
	reti

//======================================================
// 函数名称:	IRQ5
// 汇编调用:	_IRQ5
// 实现功能:   2Hz中断服务函数
// 入口参数:	无
// 出口参数:	无
// 破坏寄存器:	无
//======================================================
_IRQ5:								// 数码管闪烁
	push r1 to [sp]
	call F_DIG_Blink
	r1 = C_IRQ5_2Hz
	[P_INT_Clear] = r1
	pop r1 from [sp]
	reti

//======================================================
// 函数名称:	IRQ6
// 汇编调用:	_IRQ6
// 实现功能:   128Hz中断服务函数
// 入口参数:	无
// 出口参数:	无
// 破坏寄存器:	无
//======================================================
_IRQ6:								// 按键扫描
	push r1 to [sp]
	call F_Key_Scan
	r1 = C_IRQ6_TMB2
	[P_INT_Clear] = r1
	pop r1 from [sp]
	reti

//	其他未用中断定义

_IRQ0:
	reti

_IRQ1:
	reti

_IRQ3:
	reti

_IRQ7:
	reti

_BREAK:
	reti

⌨️ 快捷键说明

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