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

📄 ad_line.lst

📁 凌阳单片机的自检程序 包括io检测ad检测睡眠检测等
💻 LST
字号:
Sunplus u'nSP Assembler - Ver. 1.10.0
              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
00008DBF                    	.CODE
                            	.public _AD_Line;
                            	_AD_Line:  .proc
                            	       
00008DBF 41 92              	        R1=0x0001
00008DC0 C1 D3              	        [TIME]=R1//选择LINE0
00008DC1 09 93 F0 00        			r1=0x00f0
00008DC3 C2 D3              			[value]=r1	//端口送入的值
00008DC4 09 93 FF FF        			r1=0xffff 
00008DC6 19 D3 08 70        			[P_IOB_ATTRI]=r1 
00008DC8 19 D3 07 70        			[P_IOB_DIR]=r1 
00008DCA 40 92              			r1=0x0000
00008DCB 19 D3 05 70        			[P_IOB_DATA]=r1;
                            			
                            		    
                            			   		
00008DCD 41 92              			R1 = 0x0001	            //允许A/D
00008DCE 19 D3 15 70        			[P_ADC_Ctrl] = R1 		 
00008DD0 09 93 A0 00        		    r1 = 0x00A0;
00008DD2 19 D3 2A 70        		    [P_DAC_Ctrl] = r1;
00008DD4 40 F0 E9 8D        			call _InitAD1
00008DD6 41 C2              			test r1,0x0001;
00008DD7 0F 5E              			jz fail;	
                            			
00008DD8 09 93 FF FF        			r1=0xffff
00008DDA 19 D3 05 70        			[P_IOB_DATA]=r1;
00008DDC 41 92              	   		R1=0x0001
00008DDD C1 D3              	        [TIME]=R1
00008DDE 09 93 00 FF        			r1=0xff00
00008DE0 C2 D3              			[value]=r1	
                            			
00008DE1 40 F0 00 8E        			call _InitAD2
00008DE3 41 C2              			test r1,0x0001;
00008DE4 02 5E              			jz fail;		
00008DE5 41 92              			r1 = 0x0001  //success
                            			
00008DE6 90 9A              		    retf;
                            			
00008DE7 40 92              	fail:	r1 = 0x0000   //fail
                            	        // fiq on
                            	        // irq on
00008DE8 90 9A              		    retf;
                            		
                            	.endp
                            			
                            			
                            	.public _InitAD1
                            	_InitAD1:
                            	       
00008DE9 C1 95              	       R2=[TIME]							
00008DEA 0A C5 80 00        		   test r2,0x0080
00008DEC 11 4E              		   jNZ NEXT1
00008DED 1A D5 2B 70        		   [P_ADC_MUX_Ctrl]=R2
00008DEF 42 95              		   R2=R2 LSL 1
00008DF0 C1 D5              		   [TIME]=R2	   
00008DF1 11 93 2C 70        	       r1=[P_ADC_MUX_DATA]
                            	       
                            	 _AD1:
                            	 	 
00008DF3 11 93 2B 70        	       r1=[P_ADC_MUX_Ctrl] 
00008DF5 09 C3 00 80        	       test r1,0x8000
00008DF7 45 5E              	       jz _AD1
                            	     
                            	       
                            	   
00008DF8 11 93 2C 70        	       r1=[P_ADC_MUX_DATA]
                            	       
00008DFA C2 43              	       CMP R1,[value] 
00008DFB 53 8E              	       jbe  _InitAD1
                            	      
00008DFC 40 92              	       r1 = 0;
00008DFD 90 9A              	       retf;
                            	        			      // 调用ADC初始化程序
                            	NEXT1:
                            			//成功
00008DFE 41 92              			r1 = 0x0001;
                            		
00008DFF 90 9A              	       RETF
                            	       
                            	       
                            	.public _InitAD2
                            	_InitAD2:
                            	       
00008E00 C1 95              	       R2 = [TIME]							
00008E01 0A C5 80 00        		   test r2,0x0080
00008E03 11 4E              		   jNZ NEXT2
00008E04 1A D5 2B 70        		   [P_ADC_MUX_Ctrl] = R2
00008E06 42 95              		   R2=R2 LSL 1
00008E07 C1 D5              		   [TIME]=R2	  
00008E08 11 93 2C 70        	       r1=[P_ADC_MUX_DATA]
                            	
                            	 _AD2:  
00008E0A 11 93 2B 70        	       r1=[P_ADC_MUX_Ctrl] 
00008E0C 09 C3 00 80        	       test r1,0x8000
00008E0E 45 5E              	       jz _AD2   
                            	       
                            	   
00008E0F 11 93 2C 70        	       r1 = [P_ADC_MUX_DATA]
                            	       
00008E11 C2 43              	       CMP R1,[value] 
00008E12 53 1E              	       jae  _InitAD2
                            	       //shibai
00008E13 40 92              	       r1 = 0;
00008E14 90 9A              	       retf;
                            	        			      // 调用ADC初始化程序
                            	NEXT2:
                            			//成功
00008E15 41 92              			r1 = 0x0001;
00008E16 90 9A              	       RETF
                            	       
                            	delay://1ms
00008E17 90 D4              		push r1,r2 to [sp]
00008E18 41 92              	    r1 = 1
                            	loop_out:
00008E19 0A 95 FF 00        	    r2 = 0x00ff
                            	loop_in:
00008E1B 41 24              	    r2 -=1
00008E1C 40 44              	    cmp r2,0x0000
00008E1D 43 4E              	    jnz loop_in;
00008E1E 41 22              	    r1 -= 1;
00008E1F 40 42              	    cmp r1,0x0000
00008E20 48 4E              	    jnz loop_out;
00008E21 90 90              	    pop r1,r2 from [sp]
00008E22 90 9A              	    retf  
                            	   
                            	   
                            	   
                            	 
0 error(s), 0 warning(s).

⌨️ 快捷键说明

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