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

📄 isr.asm

📁 电压控制程序,符合各种设备需要,核心程序,IBm专属
💻 ASM
字号:
//======================================================
// 文件名称:	ISR.ASM
// 功能描述:   中断服务程序
// 完成日期:   2003-8-15
//======================================================

.include	hardware.inc
.include	DVR.inc
.include	Key.inc

.public	_FIQ, _IRQ6


.text

//============================================================================================
//汇编格式:	_FIQ
//实现功能:	中断服务子程序,在FIQ_TMA中断中调用F_FIQ_Service_SACM_DVR函数
//参数:		无
//返回值:		无	
//破坏寄存器:	无
//=============================================================================================
_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_DVR;	//调用DVR录放音的FIQ服务程序
	pop R1,R4 from [sp];			//出栈
	reti;
L_FIQ_TimerB:						//TimerB的FIQ中断服务
	[P_INT_Clear]=R1;				//清中断标志
	pop R1,R4 from [sp];			//出栈
	RETI;
	
//============================================================================================
//汇编格式:	_IRQ6
//实现功能:	中断服务子程序,在IRQ6的TMB2 128Hz中断当中调用扫键程序
//参数:		无
//返回值:		无
//破坏寄存器:	无
//=============================================================================================	
_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;  

//============================================================================================
//汇编格式: 	_Initial_INT
//C语言格式:	void Initial_INT(void)
//实现功能:	初始化中断状态,以通知音频程序,目前已打开的中断情况
//参数:		无
//返回值:		无
//破坏寄存器:	无
//=============================================================================================	
.CODE
.DEFINE		P_INT_Ctrl_New			0x702D		// Same as P_INT_Mask
.PUBLIC _Initial_INT
_Initial_INT:
	r1 = [R_InterruptStatus]					//在hardware.asm当中定义
	r2 = [P_INT_Ctrl_New]
	r1 = r1|r2
	[R_InterruptStatus] = r1
	retf
	

⌨️ 快捷键说明

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