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

📄 ad_line.lst

📁 此代码是凌阳61单片机上的程序——上电自检程序
💻 LST
字号:
Sunplus u'nSP Assembler - Ver. 1.14.3.1
              Listing File Has Been Relocated
                            	//***********************************************************
                            	// Note:通过模拟量输入口LINE_IN输入电压值,以8K的采样率经A/D
                            	//转换后送给IOB口控制LED点亮,同时可以根据LED的点亮来了解转换
                            	//的数据
                            	//*************************************************************									
                            	
                            	// 时钟源为Fosc/2,采样率为8KHz
                            	.define     TIMER_DATA_FOR_8KHZ   0xFA23  
                            	
                            	.define		P_IOB_DATA  	0x7005 
                            	.define		P_IOB_DIR   	0x7007 
                            	.define		P_IOB_ATTRI		0x7008 
                            	.define		P_INT_Ctrl		0x7010 
                            	.define		P_INT_CLEAR		0x7011 
                            	
                            	.define		P_TimerA_Ctrl	0x700b 
                            	.define		P_TimerA_Data	0x700a 
                            	.define		P_ADC_Ctrl		0x7015 
                            	.define		P_ADC			0x7014 
                            	.define		P_ADC_MUX_Ctrl	0x702b 
                            	.define		P_ADC_MUX_DATA	0x702C
                            	.define		P_DAC_Ctrl		0x702A 
                            	.DEFINE     P_Watchdog_Clear    0x7012;
                            	
                            	.define		P_DAC1			0x7017
                            	.define		P_DAC2			0x7016
                            	.DEFINE     P_SystemClock       0x7013;
00000000                    	.ISRAM
00000000 00 00              	.VAR RESULT
00000001 00 00              	.VAR TIME            //Line in select
00000002 00 00              	.var value           //vol 0 or ffc
00008E9F                    	.CODE
                            	.public _AD_Line;
                            	_AD_Line:  .proc
                            	       
00008E9F 41 92              	        R1=0x0001
00008EA0 C1 D3              	        [TIME]=R1//选择LINE0
00008EA1 09 93 F0 00        			r1=0x00f0
00008EA3 C2 D3              			[value]=r1	//端口送入的值
00008EA4 09 93 FF FF        			r1=0xffff 
00008EA6 19 D3 08 70        			[P_IOB_ATTRI]=r1 
00008EA8 19 D3 07 70        			[P_IOB_DIR]=r1 
00008EAA 40 92              			r1=0x0000
00008EAB 19 D3 05 70        			[P_IOB_DATA]=r1;
                            			
                            		    
                            			   		
00008EAD 41 92              			R1 = 0x0001	            //允许A/D
00008EAE 19 D3 15 70        			[P_ADC_Ctrl] = R1 		 
00008EB0 09 93 A0 00        		    r1 = 0x00A0;
00008EB2 19 D3 2A 70        		    [P_DAC_Ctrl] = r1;
00008EB4 40 F0 C9 8E        			call _InitAD1
00008EB6 41 C2              			test r1,0x0001;
00008EB7 0F 5E              			jz fail;	
                            			
00008EB8 09 93 FF FF        			r1=0xffff
00008EBA 19 D3 05 70        			[P_IOB_DATA]=r1;
00008EBC 41 92              	   		R1=0x0001
00008EBD C1 D3              	        [TIME]=R1
00008EBE 09 93 00 FF        			r1=0xff00
00008EC0 C2 D3              			[value]=r1	
                            			
00008EC1 40 F0 E0 8E        			call _InitAD2
00008EC3 41 C2              			test r1,0x0001;
00008EC4 02 5E              			jz fail;		
00008EC5 41 92              			r1 = 0x0001  //success
                            			
00008EC6 90 9A              		    retf;
                            			
00008EC7 40 92              	fail:	r1 = 0x0000   //fail
                            	        // fiq on
                            	        // irq on
00008EC8 90 9A              		    retf;
                            		
                            	.endp
                            			
                            			
                            	.public _InitAD1
                            	_InitAD1:
                            	       
00008EC9 C1 95              	       R2=[TIME]							
00008ECA 0A C5 80 00        		   test r2,0x0080
00008ECC 11 4E              		   jNZ NEXT1
00008ECD 1A D5 2B 70        		   [P_ADC_MUX_Ctrl]=R2
00008ECF 42 95              		   R2=R2 LSL 1
00008ED0 C1 D5              		   [TIME]=R2	   
00008ED1 11 93 2C 70        	       r1=[P_ADC_MUX_DATA]
                            	       
                            	 _AD1:
                            	 	 
00008ED3 11 93 2B 70        	       r1=[P_ADC_MUX_Ctrl] 
00008ED5 09 C3 00 80        	       test r1,0x8000
00008ED7 45 5E              	       jz _AD1
                            	     
                            	       
                            	   
00008ED8 11 93 2C 70        	       r1=[P_ADC_MUX_DATA]
                            	       
00008EDA C2 43              	       CMP R1,[value] 
00008EDB 53 8E              	       jbe  _InitAD1
                            	      
00008EDC 40 92              	       r1 = 0;
00008EDD 90 9A              	       retf;
                            	        			      // 调用ADC初始化程序
                            	NEXT1:
                            			//成功
00008EDE 41 92              			r1 = 0x0001;
                            		
00008EDF 90 9A              	       RETF
                            	       
                            	       
                            	.public _InitAD2
                            	_InitAD2:
                            	       
00008EE0 C1 95              	       R2 = [TIME]							
00008EE1 0A C5 80 00        		   test r2,0x0080
00008EE3 11 4E              		   jNZ NEXT2
00008EE4 1A D5 2B 70        		   [P_ADC_MUX_Ctrl] = R2
00008EE6 42 95              		   R2=R2 LSL 1
00008EE7 C1 D5              		   [TIME]=R2	  
00008EE8 11 93 2C 70        	       r1=[P_ADC_MUX_DATA]
                            	
                            	 _AD2:  
00008EEA 11 93 2B 70        	       r1=[P_ADC_MUX_Ctrl] 
00008EEC 09 C3 00 80        	       test r1,0x8000
00008EEE 45 5E              	       jz _AD2   
                            	       
                            	   
00008EEF 11 93 2C 70        	       r1 = [P_ADC_MUX_DATA]
                            	       
00008EF1 C2 43              	       CMP R1,[value] 
00008EF2 53 1E              	       jae  _InitAD2
                            	       //shibai
00008EF3 40 92              	       r1 = 0;
00008EF4 90 9A              	       retf;
                            	        			      // 调用ADC初始化程序
                            	NEXT2:
                            			//成功
00008EF5 41 92              			r1 = 0x0001;
00008EF6 90 9A              	       RETF
                            	       
                            	delay://1ms
00008EF7 90 D4              		push r1,r2 to [sp]
00008EF8 41 92              	    r1 = 1
                            	loop_out:
00008EF9 0A 95 FF 00        	    r2 = 0x00ff
                            	loop_in:
00008EFB 41 24              	    r2 -=1
00008EFC 40 44              	    cmp r2,0x0000
00008EFD 43 4E              	    jnz loop_in;
00008EFE 41 22              	    r1 -= 1;
00008EFF 40 42              	    cmp r1,0x0000
00008F00 48 4E              	    jnz loop_out;
00008F01 90 90              	    pop r1,r2 from [sp]
00008F02 90 9A              	    retf  
                            	   
                            	   
                            	   
                            	 
0 error(s), 0 warning(s).

⌨️ 快捷键说明

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