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

📄 isr.asm

📁 此程序为出租车计价器
💻 ASM
字号:
//======================================================
// 文件名称:	isr.asm
// 功能描述:	中断服务程序
// 维护记录:	2006-10-12	v1.0
//======================================================

.include spce061a.inc
.TEXT
.public _BREAK;
.public _FIQ;
.public _IRQ0;
.public _IRQ1;
.public _IRQ2;
.public _IRQ3;
.public _IRQ4;
.public _IRQ5;
.public _IRQ6;
.public _IRQ7;
_BREAK:
	//add your code here

	reti;

//=============================================================
// 语法格式:	
// 实现功能:	FIQ中断服务程序
// 参数:		无
// 返回值:		无
//=============================================================
.external F_FIQ_Service_SACM_S480
_FIQ:
	PUSH	R1,R4 to [sp]			//寄存器压栈保护
	R1 = 0x2000
	test R1,[P_INT_Ctrl]			//是TimerA的FIQ中断?
	jnz L_FIQ_TimerA
	R1 = 0x0800
	test R1,[P_INT_Ctrl]			//是TimerB的FIQ中断?
	jnz L_FIQ_TimerB
L_FIQ_PWM:							//PWM的FIQ中断服务
	R1 = C_FIQ_PWM
	[P_INT_Clear] = R1				//清中断标志
	POP R1,R4 from[sp]				//出栈
	reti
L_FIQ_TimerA:						//TimerA的FIQ中断服务
	[P_INT_Clear] = R1				//清中断标志
	call F_FIQ_Service_SACM_S480	//调用A2000播放的FIQ服务程序
	pop R1,R4 from [sp]				//出栈
	reti
L_FIQ_TimerB:						//TimerB的FIQ中断服务
	[P_INT_Clear]=R1				//清中断标志
	pop R1,R4 from [sp]				//出栈
	RETI

//=============================================================
// 语法格式:	
// 实现功能:	IRQ0中断服务程序
// 参数:		无
// 返回值:		无
//=============================================================
_IRQ0:
	//add your code here

	reti;

//=============================================================
// 语法格式:	
// 实现功能:	IRQ1中断服务程序
// 参数:		无
// 返回值:		无
//=============================================================
_IRQ1:
	//add your code here

	reti;

//=============================================================
// 语法格式:	
// 实现功能:	IRQ2中断服务程序
// 参数:		无
// 返回值:		无
//=============================================================
_IRQ2:
	//add your code here

	reti;

//=============================================================
// 语法格式:	
// 实现功能:	IRQ3中断服务程序
// 参数:		无
// 返回值:		无
//=============================================================
.external _Dis_In_IRQ_DistanceServiceLoop
_IRQ3:
	//add your code here
	push r1, r4 to [sp]
	r1 = C_IRQ3_EXT1
	[P_INT_Clear] = r1
	call _Dis_In_IRQ_DistanceServiceLoop
	pop r1, r4 from [sp]
	reti;

//=============================================================
// 语法格式:	
// 实现功能:	IRQ4中断服务程序
// 参数:		无
// 返回值:		无
//=============================================================
.external _KeyScan_ServiceLoop
.external _IRQ_PlayService
_IRQ4:
	//add your code here
	push r1, r4 to [sp]
	r1 = [P_INT_Ctrl]
	test r1, C_IRQ4_4KHz
	jnz ?IRQ4_4KHz
	test r1, C_IRQ4_2KHz
	jnz ?IRQ4_2KHz
?IRQ4_1KHz:
	r1 = C_IRQ4_1KHz
	[P_INT_Clear] = r1
	call _KeyScan_ServiceLoop
	jmp ?IRQ4_Exit

?IRQ4_4KHz:
	r1 = C_IRQ4_4KHz
	[P_INT_Clear] = r1
	call _IRQ_PlayService
	jmp ?IRQ4_Exit

?IRQ4_2KHz:
	r1 = C_IRQ4_2KHz
	[P_INT_Clear] = r1
?IRQ4_Exit:
	pop r1, r4 from [sp]
	reti;

//=============================================================
// 语法格式:	
// 实现功能:	IRQ5中断服务程序
// 参数:		无
// 返回值:		无
//=============================================================
.external _Dis_In_IRQ_SpeedServiceLoop
.external _Cal_In_IRQ_ServiceLoop
.external _uiFlashFlag
_IRQ5:
	//add your code here
	push r1,r4 to [sp]
	r1 = C_IRQ5_2Hz
	[P_INT_Clear] = r1
	r1 = 0x0001
	[P_Watchdog_Clear] = r1
	[_uiFlashFlag] = r1
	call _Dis_In_IRQ_SpeedServiceLoop
	call _Cal_In_IRQ_ServiceLoop
	pop r1,r4 from [sp]
	reti;


//=============================================================
// 语法格式:	
// 实现功能:	IRQ6中断服务程序
// 参数:		无
// 返回值:		无
//=============================================================
_IRQ6:
	//add your code here

	reti;


//=============================================================
// 语法格式:	
// 实现功能:	IRQ7中断服务程序
// 参数:		无
// 返回值:		无
//=============================================================
_IRQ7:
	//add your code here

	reti;

⌨️ 快捷键说明

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