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

📄 isr.lst

📁 凌阳十六位单片机的实验详细说明及其相对应的源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
                     <      	.DEFINE C_Auto_Mode	 			0x0010;		//b4=1: A/D auto mode
                     <      	.DEFINE C_Manual_Mode	 		0x0000;		//b4=0: A/D manual mode
                     <      	//b5: ADINI?
                     <      	.DEFINE C_DAC_Current_2mA		0x0040;		//b6=1: DAC current = 2mA @ vdd=3V(new option)
                     <      	.DEFINE C_DAC_Current_3mA		0x0000;		//b6=0: DAC current = 3mA @ vdd=3V(Default)
                     <      	.DEFINE C_AD_Vref_VDD			0x0080;		//b7=1: Vref is VDD
                     <      	.DEFINE C_AD_Vref_VRTPAD		0x0000;		//b7=0: Vref is from pin "VRTPAD"
                     <      	.DEFINE C_AD_COMP				0x4000;		//b14=1: output voltage of DAC0<Analog input signal
                     <      												//b14=0: output voltage of DAC0>Analog input signal
                     <      	.DEFINE C_AD_RDY				0x8000;		//b15=1: A/D digital data ready; 0: not ready
                     <      	.endif
                     <      	
                     <      	.if BODY_TYPE == SPCE500A
                     <      	.DEFINE	C_AD					0x0001 			//
                     <      	.DEFINE C_DA					0x0000 			//
                     <      	.DEFINE C_MIC					0x0000 			//
                     <      	.DEFINE C_LINE					0x0002 			//
                     <      	.endif
                     <      	//----------------------------------------------
                     <      	
                     <      	
                     <      	// Define for P_DAC_Ctrl
                     <      	//----------------------------------------------
                     <      	.if BODY_TYPE == SPCE061A
                     <      	.DEFINE	C_DAC1_Direct			0x0000;		// b8 b7: DAC1 latch
                     <      	.DEFINE C_DAC1_LatchA			0x0080;		// Latch data to DAC1 by TimerA 
                     <      	.DEFINE C_DAC1_LatchB			0x0100;		// Latch data to DAC1 by TimerB
                     <      	.DEFINE C_DAC1_LatchAB			0x0180;		// Latch data to DAC1 by TimerA or TimerB
                     <      	
                     <      	.DEFINE	C_DAC2_Direct			0x0000;		// b6 b5: DAC2 latch
                     <      	.DEFINE C_DAC2_LatchA			0x0020;		// Latch data to DAC2 by TimerA
                     <      	.DEFINE C_DAC2_LatchB			0x0040;		// Latch data to DAC2 by TimerB
                     <      	.DEFINE C_DAC2_LatchAB			0x0060;		// Latch data to DAC2 by TimerA or TimerB
                     <      	
                     <      	.DEFINE	C_ADC_Direct			0x0000;		// b4 b3: ADC latch
                     <      	.DEFINE C_ADC_LatchA			0x0008;		// Latch data to ADC by TimerA
                     <      	.DEFINE C_ADC_LatchB			0x0010;		// Latch data to ADC by TimerB
                     <      	.DEFINE C_ADC_LatchAB			0x0018;		// Latch data to ADC by TimerA or TimerB
                     <      	.endif
                     <      	
                     <      	.if BODY_TYPE == SPCE500A
                     <      	.DEFINE C_PushPull				0x0000 			// b0, (default) 
                     <      	.DEFINE C_DoubleEnd				0x0001 			// b0
                     <      	.DEFINE	C_DAC_Mode				0x0000 			// b1, (default)
                     <      	.DEFINE C_PWM_Mode				0x0002 			// b1
                     <      	
                     <      	.DEFINE	C_D1_Direct				0x0000 			// DAC1 latch
                     <      	.DEFINE C_D1_LatchA				0x0008 			// 
                     <      	.DEFINE C_D1_LatchB				0x0010 			//
                     <      	.DEFINE C_D1_LatchAB			0x0018 			//
                     <      	
                     <      	.DEFINE	C_D2_Direct				0x0000 			// DAC2 latch
                     <      	.DEFINE C_D2_LatchA				0x0020 			// 
                     <      	.DEFINE C_D2_LatchB				0x0040 			//
                     <      	.DEFINE C_D2_LatchAB			0x00C0 			//
                     <      	.endif
                     <      	//----------------------------------------------
                     <      	
                     <      	// Define for P_LVD_Ctrl
                     <      	//----------------------------------------------
                     <      	.if BODY_TYPE == SPCE061A
                     <      	.DEFINE C_LVD24V				0x0000;		// LVD = 2.4V; b1b0 
                     <      	.DEFINE C_LVD28V				0x0001;		// LVD = 2.8V
                     <      	.DEFINE C_LVD32V				0x0002;		// LVD = 3.2V
                     <      	.endif
                     <      	
                     <      	.if BODY_TYPE == SPCE500A
                     <      	.DEFINE C_LVD26V				0x0000 			// LVD = 2.6V 
                     <      	.DEFINE C_LVD30V				0x0001 			// LVD = 3.0V
                     <      	.DEFINE C_LVD36V				0x0002 			// LVD = 3.6V
                     <      	.DEFINE C_LVD40V				0x0003 			// LVD = 4.0V
                     <      	.endif
                     <      	
                     <      	.DEFINE C_LVD_Result			0x8000;		// b15 = 1: below the selected LVD level
                     <      	//----------------------------------------------
                     <      	
                     <      	
                     <      	// SPCE061 flash operation instruction definition
                     <      	//----------------------------------------------
                     <      	.if BODY_TYPE == SPCE061A
                     <      	.DEFINE C_EnableFlashAccess		0xAAAA;
                     <      	.DEFINE C_EraseFlashPage  		0x5511;
                     <      	.DEFINE C_ProgramFlash 	   		0x5533;
                     <      	.endif
                     <      	//----------------------------------------------
                     <      	
                     <      	
                     <      	
                     <      	//===============================================================
                     <      	// Sunplus APIs for SPCE 061A
                     <      	//===============================================================
                     <      	//////////////////////////////////////////////////
                     <      	// Note: This register will map to the P_INT_Ctrl
                     <      	//	(0x7010), The SACMvxx.lib use this register to
                     <      	//	combine with user's interrupt setting.
                     <      	//  In SPCE061, it is not necessary since the 
                     <      	//  P_INT_Mask(0x702D) already does this. It is for 
                     <      	//  compatibility to keep it here. 
                     <      	//////////////////////////////////////////////////
                     <      	//.EXTERNAL	R_InterruptStatus 
                     <      	
                     <      	//========================================================================================        
                     <      	// End of SPCE.inc
                     <      	//========================================================================================
                     <      	
                     <      	
                     <      	        
                            	.include ms01.inc					// include ms01 information
                     <      	// Progarm: SACM-MS01 API external definition for sacmVxx.lib
                     <      	// Writen by: Andy
                     <      	// Date: 	2000/06/20
                     <      	// 			2001/02/10
                     <      	//			2001/10/11: Add manual mode definition
                     <      	//////////////////////////////////////////////////////////////////////////////////////////
                     <      	
                     <      	.EXTERNAL F_SACM_MS01_Initial
                     <      	.EXTERNAL F_SACM_MS01_ServiceLoop				// For Auto Mode only
                     <      	.EXTERNAL F_SACM_MS01_Play						// For Auto Mode only
                     <      	.EXTERNAL F_SACM_MS01_Stop
                     <      	.EXTERNAL F_SACM_MS01_Stop_EX					// Keep Int. enable
                     <      	.EXTERNAL F_SACM_MS01_Pause
                     <      	.EXTERNAL F_SACM_MS01_Resume
                     <      	.EXTERNAL F_SACM_MS01_Volume
                     <      	.EXTERNAL F_SACM_MS01_Status
                     <      	
                     <      	.EXTERNAL F_SACM_MS01_ChannelOff
                     <      	.EXTERNAL F_SACM_MS01_ChannelOn
                     <      	.EXTERNAL F_SACM_MS01_SetInstrument
                     <      	
                     <      	.EXTERNAL F_SACM_MS01_ADPCM_Play
                     <      	.EXTERNAL F_SACM_MS01_ADPCM_Status
                     <      	
                     <      	.EXTERNAL F_SACM_MS01_InitDecoder				// For Manual Mode only
                     <      	.EXTERNAL F_SACM_MS01_Decoder					// For Manual Mode only
                     <      	.EXTERNAL F_SACM_MS01_InitQueue					// For Manual Mode only
                     <      	.EXTERNAL F_SACM_MS01_FillQueue					// For Manual Mode only
                     <      	.EXTERNAL F_SACM_MS01_TestQueue					// For Manual Mode only
                     <      	
                     <      	.EXTERNAL F_FIQ_Service_SACM_MS01				// Interrupt service Routine(FM)
                     <      	.EXTERNAL F_ISR_Service_SACM_MS01				// Interrupt service Routine(FM)
                     <      	.EXTERNAL F_IRQ2_Service_SACM_MS01				// Interrupt service Routine(ADPCM)
                     <      	.EXTERNAL F_IRQ4_Service_SACM_MS01				// Interrupt service Routine(TEMPO)
                     <      	
                     <      	//========================================================================================        
                     <      	// End of MS01.inc
                     <      	//========================================================================================
                            	
                            	.public _BREAK
                            	.public _FIQ
                            	.public	_IRQ0
                            	.public _IRQ1
                            	.public _IRQ2
                            	.public _IRQ3
                            	.public _IRQ4
                            	.public _IRQ5
                            	.public _IRQ6
                            	.public _IRQ7
                            	
                            	 
                            	_FIQ:
0000805A A8 DA              	       PUSH R1,R5 TO [SP];
                            	       //------------------------------------------------------------------
                            	       // hook Timer A FIQ subroutine here and define it to be external
0000805B 40 F0 65 88        	       CALL    F_ISR_Service_SACM_MS01
                            	       //------------------------------------------------------------------
0000805D 09 93 00 20        	       R1 = C_FIQ_TMA
0000805F 19 D3 11 70        	       [P_INT_Clear] = R1
00008061 A8 90              	       POP R1,R5 FROM [SP]
00008062 98 9A              	       RETI
                            	
                            	/////////////////////////////////////////////////////////////////////////////////////////
                            	// Function: Interrupt Service routine Area
                            	//      Service for     IRQ1 - IRQ7
                            	//      User's IRQ must hook on here
                            	/////////////////////////////////////////////////////////////////////////////////////////        
                            	_BREAK:        
                            	_IRQ0:        
                            	_IRQ1:        
00008063 A8 DA              			PUSH R1,R5 to [sp]
                            			//R1 = C_x
                            	        //[P_INT_Clear] = R1
00008064 A8 90              			POP R1,R5 from [sp] 
00008065 98 9A              			RETI
                            	
                            	_IRQ2:        
00008066 A8 DA              	        PUSH R1,R5 TO [SP]
00008067 40 F0 9B 88        	        CALL F_IRQ2_Service_SACM_MS01			 //2ch drum sound
00008069 09 93 00 04        	        R1 = C_IRQ2_TMB  				
0000806B 19 D3 11 70        	 		[P_INT_Clear] = R1
0000806D A8 90              	   		POP R1,R5 FROM [SP]
0000806E 98 9A              	        RETI
                            	_IRQ3:
0000806F A8 DA              			PUSH R1,R5 to [sp]
                            			//R1 = C_x
                            	        //[P_INT_Clear] = R1
00008070 A8 90              			POP R1,R5 from [sp] 
00008071 98 9A              			RETI
                            	_IRQ4:        
00008072 A8 DA              	        PUSH R1,R5 TO [SP]
00008073 40 F0 42 89        	        CALL F_IRQ4_Service_SACM_MS01;  // SONG Tempo control
00008075 50 92              	        R1 = C_IRQ4_1KHz;  
00008076 19 D3 11 70        	        [P_INT_Clear] = R1
00008078 A8 90              	        POP R1,R5 FROM [SP]
00008079 98 9A              	        RETI
                            	_IRQ5:
                            	_IRQ6:        
                            	_IRQ7:        
0000807A A8 DA              			PUSH R1,R5 to [sp]
                            			//R1 = C_x
                            	        //[P_INT_Clear] = R1
0000807B A8 90              			POP R1,R5 from [sp] 
0000807C 98 9A              			RETI
                            	
                            	//========================================================================================        
                            	// End of isr.asm
                            	//========================================================================================
                            	        
0 error(s), 0 warning(s).


⌨️ 快捷键说明

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