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

📄 evb061test.lst

📁 此代码是凌阳61单片机上的程序——上电自检程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
                     <      	
                     <      	.EXTERNAL	F_SP_SACM_A2000_Init_
                     <      	.EXTERNAL	F_SP_SACM_S480_Init_
                     <      	.EXTERNAL	F_SP_SACM_S240_Init_
                     <      	
                     <      	.EXTERNAL	F_SP_SACM_MS01_Init_
                     <      	.EXTERNAL	F_SP_PlayMode0_
                     <      	.EXTERNAL	F_SP_PlayMode1_
                     <      	.EXTERNAL	F_SP_PlayMode2_
                     <      	.EXTERNAL	F_SP_PlayMode3_
                     <      	
                     <      	.EXTERNAL	F_SP_SACM_DVR_Init_
                     <      	.EXTERNAL 	F_SP_SACM_DVR_Rec_Init_
                     <      	.EXTERNAL 	F_SP_SACM_DVR_Play_Init_
                     <      	
                     <      	.EXTERNAL	F_SP_GetResource
                     <      	
                     <      	//////////////////////////////////////////////////////////////////
                     <      	// Reserve old defintion
                     <      	// Note: Some user who use old library may use the old name
                     <      	//////////////////////////////////////////////////////////////////
                     <      	.EXTERNAL	F_SP_Send_PWM					// Get RAW data 
                     <      	.EXTERNAL	F_SP_Send_DAC1 					// 
                     <      	.EXTERNAL	F_SP_Send_DAC2 					//
                     <      	
                     <      	.EXTERNAL	F_STD_Send_DAC1 				// reserved old
                     <      	.EXTERNAL	F_STD_Send_DAC2 				// reserved old
                     <      	
                     <      	.EXTERNAL 	F_RampUpDAC1					// reserved old
                     <      	.EXTERNAL 	F_RampDnDAC1					// reserved old
                     <      	.EXTERNAL 	F_RampUpDAC2					// reserved old
                     <      	.EXTERNAL  	F_RampDnDAC2					// reserved old
                     <      	///////////////////////////////////////////////////////////////////
                     <      	
                     <      	
                     <      		
                     <      	//========================================================================================        
                     <      	// End of hardware.inc
                     <      	//========================================================================================
00008E23                    	.code
                            	//=====================================//
                            	//函数名称:unsigned IOTest()
                            	//出口参数:1.测试成功0、测试失败
                            	//无入口参数
                            	//硬件连接:A口B口短接
                            	//=====================================//
                            	
                            	.public _IOTest;
                            	_IOTest:    .proc
                            	
                            	InitPortAinput_Boutput:
00008E23 40 92              	    r1=0x0000                 //初始化A口为输入端
00008E24 19 D3 02 70        		[P_IOA_Dir]=r1
00008E26 19 D3 03 70        		[P_IOA_Attrib]=r1
00008E28 19 D3 00 70        		[P_IOA_Data]=r1
                            		                          //初始化B口为输出端
00008E2A 09 93 FF FF        		r1=0xffff                 
00008E2C 19 D3 07 70        		[P_IOB_Dir]=r1
00008E2E 19 D3 08 70        		[P_IOB_Attrib]=r1
00008E30 40 92              		r1=0x0000
00008E31 19 D3 05 70        		[P_IOB_Data]=r1
                            	
                            	WritePortB:
00008E33 09 93 FF FF        	    r1 = Write_Port_Data;    //向B口写数据0xaaaa   
                            	LoopWrite:      
00008E35 41 22              	    r1 = r1-1;
00008E36 0D 5E              	    jz  InitPortBinput_Aoutput;//
00008E37 19 D3 05 70        	    [P_IOB_Data]=r1
                            	ReadPortA: 
                            	                             //使数据稳定   
00008E39 00 EE              	    nop;
00008E3A 00 EE              	    nop;      
00008E3B 12 95 00 70        	    r2 = [P_IOA_Data];       //读A口数据    
00008E3D 02 43              	    cmp r1,r2;               //比较读写数据是否相同
00008E3E 4A 5E              	    je  LoopWrite;
                            	    //je  InitPortBinput_Aoutput;
                            	   
00008E3F 00 EE              	    nop;
00008E40 40 92              	    r1 = 0x0000;             //测试失败
00008E41 00 EE              	    nop;
00008E42 00 EE              	    nop;
00008E43 90 9A              	    retf;
                            	    
                            	InitPortBinput_Aoutput:
                            	   
00008E44 40 92              	     r1=0x0000                 //初始化B口为输入
00008E45 19 D3 07 70        		[P_IOB_Dir]=r1
00008E47 19 D3 08 70        		[P_IOB_Attrib]=r1
00008E49 19 D3 05 70        		[P_IOB_Data]=r1
                            		                          //初始化A口为输出
00008E4B 09 93 FF FF        		r1=0xffff                 
00008E4D 19 D3 02 70        		[P_IOA_Dir]=r1
00008E4F 19 D3 03 70        		[P_IOA_Attrib]=r1
00008E51 40 92              		r1=0x0000
00008E52 19 D3 00 70        		[P_IOA_Data]=r1
                            		
                            	WritePortA:                  //向A口写数据
00008E54 09 93 FF FF        	    r1 = Write_Port_Data
                            	LoopWrite0:   
00008E56 41 22              	    r1 = r1 - 1;
00008E57 0A 5E              	    jz  TestSuc;    
00008E58 19 D3 00 70        	    [P_IOA_Data]=r1    
                            	ReadPortB:
                            	                             //使数据稳定
                            	 
00008E5A 00 EE              	    nop;
00008E5B 00 EE              	    nop;    
00008E5C 12 95 05 70        	    r2 = [P_IOB_Data];       //读B口数据    
00008E5E 02 43              	    cmp r1,r2;               //比较读写数据是否相同
00008E5F 4A 5E              	    je  LoopWrite0;
                            	
00008E60 40 92              	    r1 = 0x0000;             //测试失败
00008E61 90 9A              	    retf;
                            	 TestSuc:
00008E62 41 92              	    r1 = 0x0001;
00008E63 90 9A              	    retf;
                            	    .endp
                            	//===========================================//
                            	//函数名称:unsigned KeyWakeUp()
                            	//出口参数:1.测试成功0、测试失败
                            	//无入口参数
                            	//硬件连接:A口B口短接
                            	//=====================================//
                            	.public _KeyWakeUp;
                            	_KeyWakeUp:    .proc
                            	.define P_IOA_RL   0x7004
                            	//InitPortA_input_B_output0:
00008E64 40 92              	    r1=0x0000                 //初始化A口为输入端
00008E65 19 D3 02 70        		[P_IOA_Dir]=r1
00008E67 19 D3 03 70        		[P_IOA_Attrib]=r1
00008E69 19 D3 00 70        		[P_IOA_Data]=r1
                            	
                            	
                            		                          //初始化B口为输出端
00008E6B 09 93 FF FF        		r1=0xffff                 
00008E6D 19 D3 07 70        		[P_IOB_Dir]=r1
00008E6F 19 D3 08 70        		[P_IOB_Attrib]=r1
00008E71 40 92              		r1=0x0000
00008E72 19 D3 05 70        		[P_IOB_Data]=r1
00008E74 11 93 2D 70        	    r1 = [P_INT_Ctrl_New]
00008E76 44 A2              	    r1 |= 0x0004                //中断初始化
00008E77 19 D3 10 70        	    [P_INT_Ctrl] = r1;  
00008E79 11 93 04 70        	    r1=[P_IOA_RL] 
00008E7B 41 F1              	    INT IRQ                  //开中断   
00008E7C 57 92              	    r1=0x0017;               //on 32768   
00008E7D 19 D3 13 70        	    [P_SystemClock]=r1       //进入睡眠状态
                            	    
                            	   // R1 = 0x0001;				// Clear Watch Dog
                            	   //[P_Watchdog_Clear] = R1;
                            	    
00008E7F 40 92              	    r1 = 0x0000
00008E80 19 D3 13 70        	    [P_SystemClock]=r1 
00008E82 41 92              	    r1 = 0x0001;             //测试成功
00008E83 90 9A              	    retf;
                            	.endp    
                            	//********************************//
                            	//键唤醒中断    
                            	//*******************************//
00008094                    	.text  
                            	.public _IRQ3
                            	_IRQ3:
00008094 A0 D8              	    push r1,r4 to [sp]
                            	  
00008095 09 93 80 00        	    r1=0x0080
00008097 11 C3 10 70        	    test r1,[P_INT_Ctrl]   //是否为键唤醒中断
00008099 04 5E              	    jz L_notKeyArouse      //否,退出中断程序
0000809A 09 93 80 00        	    r1=0x0080
0000809C 19 D3 11 70        	    [P_INT_Clear]=r1       //是,清中断 
                            	L_notKeyArouse: 
0000809E A0 90              	    pop r1,r4 from [sp] 
0000809F 98 9A              	    reti
                            	
                            	
                            	//==============================//
                            	// MIC测试部分
                            	//==============================//
00008E84                    	.CODE
                            	_InitAD_DA: 
00008E84 40 F1              			INT OFF;	
                            		
00008E85 70 92              			R1 = 0x0030; 				// 时钟频率为CLKA的Fosc/2
00008E86 19 D3 0B 70        			[P_TimerA_Ctrl] = R1;		//
00008E88 09 93 23 FA        			R1 = TIMER_DATA_FOR_8KHZ; 	// 采样率为 8kHz
00008E8A 19 D3 0A 70        			[P_TimerA_Data] = R1;		//
                            			
00008E8C 55 92              			R1 = 0x0015;				// 设置AGC 
                            			//R1 = 0x0011				// 取消AGC 
00008E8D 19 D3 15 70        			[P_ADC_Ctrl] = R1;			// 采用自动方式、且通过MIC_IN通道输入,
                            			
                            			
00008E8F 09 93 A8 00        			R1 = 0x00A8;				//通过定时器A的溢出锁存数据,ADC为自动方式
00008E91 19 D3 2A 70        			[P_DAC_Ctrl] = R1;			
00008E93 09 93 00 10        			R1 = 0x1000;				//
00008E95 19 D3 10 70        			[P_INT_Ctrl] = R1;			// 开中断IRQ1_TM
                            			
00008E97 41 F1              			INT IRQ;
00008E98 90 9A              			retf; 
                            	
                            	//主程序
                            	.PUBLIC _MICTEST	
                            	_MICTEST: .PROC 
00008E99 40 F0 84 8E        			call _InitAD_DA				// 调用AD 初始化子程序 
                            		.ENDP
                            	loop:
00008E9B 41 92              		R1 = 0x0001;				// Clear Watch Dog
00008E9C 19 D3 12 70        		[P_Watchdog_Clear] = R1;
00008E9E 44 EE              		jmp loop 
000080A0                    	.text
                            	.PUBLIC _IRQ1 
                            	_IRQ1:       
000080A0 88 D2              			push R1 to [SP]
                            		
000080A1 11 93 14 70        			R1 = [P_ADC] 
000080A3 19 D3 17 70        			[P_DAC1] = R1 
000080A5 19 D3 16 70        			[P_DAC2] = R1 
000080A7 09 93 00 10        			R1 = 0x1000 
000080A9 19 D3 11 70        			[P_INT_Clear] = R1 
000080AB 88 90              			pop R1 from [SP] 
000080AC 98 9A              			reti 
0 error(s), 0 warning(s).

⌨️ 快捷键说明

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