www.pudn.com > 图像识别模组源代码eagle_New.rar > FIQ.asm


.public _FIQ 
//............................................... 
.external _BSR_FIQ_Routine 
.external __gIsStopRecog //This variable = 0 if recognizer is busy, 
						 //              = 1 if recognizer is stopped, 
						 //              = 2 if recognizer is paused. 
 
.public _BREAK,_IRQ0, _IRQ1, _IRQ2, _IRQ3, _IRQ4, _IRQ5, _IRQ6, _IRQ7 
 
//.................................................. 
.include 	A2000.inc; 
.include 	resource.inc; 
.include 	hardware.inc; 
.include	eagle3.inc; 
 
.external	_VR_TimeDeldy; 
.external	_SleepCount; 
.external	_PlayFlag; 
 
.TEXT 
_FIQ: 
		push R1,R4 to [SP] 
		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_A2000 
		pop	R1,R4 from [SP]; 
		reti; 
L_FIQ_TimerB: 
		[P_INT_Clear] = r1 
		pop	R1,R4 from [SP]; 
		reti; 
_BREAK:  
		push r1,r4 to [sp];		 
		pop r1,r4 from [sp]; 
        reti;   
 
_IRQ0: 
		push r1,r4 to [sp];		 
		pop r1,r4 from [sp]; 
        reti;   
_IRQ1:  
		push r1,r4 to [sp];		 
		pop r1,r4 from [sp]; 
        reti;   
_IRQ2:  
		push r1,r4 to [sp];		 
		pop r1,r4 from [sp]; 
        reti;   
_IRQ3:  
		push r1,r4 to [sp]; 
		r1 = 0x0100; 
		test r1,[P_INT_Ctrl]; 
		jnz	L_IRQ3_Ext1; 
		r1 = 0x0200; 
		test r1,[P_INT_Ctrl]; 
		jnz	L_IRQ3_Ext2; 
L_IRQ3_KeyChange_WakeUp: 
		r1 = 0; 
		[_SleepCount] = r1; 
		r1 = 0x0080; 
	    [P_INT_Clear] = R1; 
		pop	R1,R4 from [SP]; 
		reti; 
	 
L_IRQ3_Ext2: 
 	    [P_INT_Clear] = R1;	 
		pop	R1,R4 from [SP]; 
		reti; 
	 
L_IRQ3_Ext1: 
	    [P_INT_Clear] = R1; 
		pop	R1,R4 from [SP]; 
		reti;				 
_IRQ4:         
		push r1,r4 to [sp]; 
		r1 = C_IRQ4_1KHz; 
		[P_INT_Clear] = r1; 
	 
		r1 = [R_DelayTime]; 
		r1 += 0x01; 
		[R_DelayTime] = r1; 
		 
		r1 = [R_WaitRDYTime]; 
		r1 += 1; 
		[R_WaitRDYTime] = r1; 
		 
		r1 = [_VR_TimeDeldy]; 
		r1 += 1; 
		[_VR_TimeDeldy]= r1; 
		pop r1,r4 from [sp]; 
        reti;   
         
_IRQ5:         
		push r1,r4 to [sp]; 
		r1 = 1; 
		[P_Watchdog_Clear] = r1; 
		r1 = 0x0008; 
		test r1,[P_INT_Ctrl]; 
		jnz	L_IRQ5_4Hz; 
		r1 = [_SleepCount]; 
		r1 += 1; 
		[_SleepCount] = r1; 
		r1 = 0x0004; 
 	    [P_INT_Clear] = R1; 
		pop	R1,R4 from [SP]; 
		reti; 
 
L_IRQ5_4Hz: 
	    [P_INT_Clear] = R1; 
		pop	R1,R4 from [SP]; 
		reti; 
 
_IRQ6:  
		push r1,r4 to [sp];		 
		pop r1,r4 from [sp]; 
        reti;   
 
_IRQ7: 
		push r1,r4 to [sp];		 
		pop r1,r4 from [sp]; 
        reti;   
//======================= 中断处理程序结束 =====================