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

📄 isr.asm

📁 基于SPCE061A的带语音功能的超声波测距系统的源代码
💻 ASM
字号:
.include 	hardware.inc
.include	S480.inc
.include	Resource.inc
.define 	RUN_1KHz_TimeBase_INT 0x0010
.define     P_INT_Ctrl_New	0x702d

.ram
.public _TimeCounter
.var _TimeCounter

.text
.public	_FIQ;
_FIQ:
	PUSH	R1,R4 to [sp];
	R1 = 0x0001;				//清狗
    [P_Watchdog_Clear] = R1;
	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:						//以下两个中断均用于语音
	R1 = C_FIQ_PWM;
	[P_INT_Clear] = R1;
	POP R1,R4 from[sp];
	reti;
L_FIQ_TimerA:
	[P_INT_Clear] = R1;
	call F_FIQ_Service_SACM_S480;
	pop R1,R4 from [sp];
	RETI;						//.......end
L_FIQ_TimerB:
	[P_INT_Clear] = R1;
	pop R1,R4 from [sp];
	RETI;
	
	
.public	_IRQ4
_IRQ4:
		PUSH R1,R5 to [SP]
		R1=0x0010 	
		TEST R1,[P_INT_Ctrl]				//是否为1KHz中断
		JNZ  IRQ4_1K		 		  		//1KHz中断
		R1=0x0020 	
		TEST R1,[P_INT_Ctrl] 	  			//是否为2KHz中断
		JNZ  IRQ4_2K 			 	    	//2KHz中断 
IRQ4_4K:					
		R1=0x0040
		[P_INT_Clear]=R1         
		POP R1,R5 FROM [SP]   
		RETI
IRQ4_2K:
		R1=0x0020
		[P_INT_Clear]=R1         
		POP R1,R5 FROM [SP]   
		RETI
IRQ4_1K:
		R1=[_TimeCounter]
		JZ Back
		R1-=1
		[_TimeCounter]=R1
Back:	R1=0x0010
		[P_INT_Clear]=R1
		POP R1,R5 FROM [SP]
		RETI
		
		.code
		.public _InitIsr
_InitIsr:	.proc
		R1=0
		[_TimeCounter]=R1
		R1=RUN_1KHz_TimeBase_INT			//开放1KHz中断
		R2=[P_INT_Ctrl_New]					//....2004.7.26 张新强修改   原来这两行没有
		R1=R1|R2							//理由:原先的程序会把用户在调用它之前的中断设置改变的
		[P_INT_Ctrl]= R1
		int IRQ
		RETF
			.endp

⌨️ 快捷键说明

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