hardware.lst

来自「凌阳科技单片机系统开发板测试程序,可以参考应用。」· LST 代码 · 共 665 行 · 第 1/3 页

LST
665
字号
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00 00 00
         00 00      
000001E6 00 00              	.VAR	R_ReadIndex;
000001E7 00 00              	.VAR	R_WriteIndex;
                            	
00008A89                    	.CODE
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Send data to speech driver(PWM/DAC)                                   
                            	// Destory register: r4                                            
                            	//////////////////////////////////////////////////////////////////        
                            	
                            	F_SP_Send_PWM:    							//
00008A89 1C D9 16 70        	       [P_PWM] = r4;						//
00008A8B 90 9A              	       retf;           						//
                            	
                            	F_SP_Send_DAC1:								//
00008A8C 1C D9 17 70        			[P_DAC1] = r4;						//
00008A8E 90 9A              			retf;        						//
                            	F_SP_Send_DAC2:								//
00008A8F 1C D9 16 70        			[P_DAC2] = r4;						//
00008A91 90 9A              			retf;        						//
                            	F_SP_Send_Two_DAC:
00008A92 1C D9 17 70        			[P_DAC1] = r4;						//
00008A94 1C D9 16 70        			[P_DAC2] = r4;						//
00008A96 90 9A              			retf;
                            	
                            	//.DEFINE	F_SP_Send_Out  F_SP_Send_PWM;
                            	//.DEFINE	F_SP_Send_Out  F_SP_Send_DAC1;
                            	//.DEFINE	F_SP_Send_Out  F_SP_Send_DAC2;
                            	.DEFINE	F_SP_Send_Out  F_SP_Send_Two_DAC;		// Send to both DAC1 and DAC2
                            	
                            	
                            	F_SP_Get_ADC:
00008A97 14 99 14 70        			R4 = [P_ADC]
00008A99 90 9A              			retf
                            	
                            	
                            	F_SP_Set_P_TimerA_Ctrl:
00008A9A 19 D3 0B 70        		[P_TimerA_Ctrl] = R1
00008A9C 90 9A              		RETF
                            	F_SP_Set_P_TimerA_Data:
00008A9D 19 D3 0A 70        		[P_TimerA_Data] = R1
00008A9F 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Ctrl:
00008AA0 19 D3 0D 70        		[P_TimerB_Ctrl] = R1
00008AA2 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Data:
00008AA3 19 D3 0C 70        		[P_TimerB_Data] = R1
00008AA5 90 9A              		RETF
                            	
                            	F_SP_Set_P_INT_Ctrl:
00008AA6 19 D3 10 70        		[P_INT_Ctrl] = R1
00008AA8 90 9A              		RETF
                            	F_SP_Set_P_INT_Clear:
00008AA9 19 D3 11 70        		[P_INT_Clear] = R1
00008AAB 90 9A              		RETF
                            	
                            	F_SP_Set_P_SystemClock:
00008AAC 19 D3 13 70        		[P_SystemClock] = R1
00008AAE 90 9A              		RETF
                            	
                            	F_SP_Set_P_DAC_Ctrl:
00008AAF 19 D3 2A 70        		[P_DAC_Ctrl] = R1
00008AB1 90 9A              		RETF	
                            	
                            	F_SP_Set_P_ADC_Ctrl:
00008AB2 19 D3 15 70        		[P_ADC_Ctrl] = R1
00008AB4 90 9A              		RETF
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Interrupt vector setting
                            	// Used register: R1                                                                                    
                            	////////////////////////////////////////////////////////////////// 
                            	
                            	F_SP_Write_INT_Status:						//write interrupt status
00008AB5 19 D3 B2 01        	        [R_InterruptStatus] = R1;       	//
00008AB7 90 9A              	        retf;								
                            	        
                            	F_SP_Read_INT_Status:						//read interrupt status
00008AB8 11 93 B2 01        	        R1 = [R_InterruptStatus];       	//
00008ABA 90 9A              	        retf;
                            	
                            	
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	//
                            	//////////////////////////////////////////////////////////////////    
                            	_SP_Init_IOA: .PROC
00008ABB 88 DA              			PUSH BP,BP TO [SP];
00008ABC 08 0B 01 00        	        BP = SP + 1;
00008ABE 88 D2              			PUSH R1,R1 TO [SP];
00008ABF 03 92              			R1 = [BP+3];						// Port direction
00008AC0 19 D3 02 70        			[P_IOA_Dir] = R1;
00008AC2 04 92              			R1 = [BP+4];
00008AC3 19 D3 00 70        			[P_IOA_Data] = R1;
00008AC5 05 92              			R1 = [BP+5];
00008AC6 19 D3 03 70        			[P_IOA_Attrib] = R1;
                            			
00008AC8 88 90              			POP R1,R1 FROM [SP];
00008AC9 88 98              	        POP BP,BP FROM [SP];
00008ACA 90 9A              	        RETF;
                            			.ENDP
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	// SP_Inti_IOB
                            	//////////////////////////////////////////////////////////////////    
                            	
                            	_SP_Init_IOB: .PROC
00008ACB 88 DA              			PUSH BP,BP TO [SP];
00008ACC 08 0B 01 00        	        BP = SP + 1;
00008ACE 88 D2              			PUSH R1,R1 TO [SP];
00008ACF 03 92              			R1 = [BP+3];						// Port direction
00008AD0 19 D3 07 70        			[P_IOB_Dir] = R1;
00008AD2 04 92              			R1 = [BP+4];
00008AD3 19 D3 05 70        			[P_IOB_Data] = R1;
00008AD5 05 92              			R1 = [BP+5];
00008AD6 19 D3 08 70        			[P_IOB_Attrib] = R1;
                            			
00008AD8 88 90              			POP R1,R1 FROM [SP];
00008AD9 88 98              	        POP BP,BP FROM [SP];
00008ADA 90 9A              	        RETF;
                            			.ENDP
                            	
                            	
                            	
                            	_SP_Import: .PROC
00008ADB 88 DA              	        PUSH BP,BP TO [SP];
00008ADC 08 0B 01 00        	        BP = SP + 1;
00008ADE 90 D4              			PUSH R1,R2 TO [SP];
00008ADF 03 92              			R1 = [BP+3]; 						// Port Number
00008AE0 04 94              			R2 = [BP+4]; 						// Data Buffer Pointer
00008AE1 C1 92              			R1 = [R1] ;
00008AE2 C2 D2              			[R2] = R1 ;
00008AE3 90 90              			POP R1,R2 FROM [SP];
00008AE4 88 98              	        POP BP,BP FROM [SP];
00008AE5 90 9A              	        RETF;
                            			.ENDP
                            	
                            	_SP_Export: .PROC
00008AE6 88 DA              	        PUSH BP,BP TO [SP];
00008AE7 08 0B 01 00        	        BP = SP + 1;
00008AE9 90 D4              			PUSH R1,R2 TO [SP];
00008AEA 03 92              			R1 = [BP+3]; 						// Port Number
00008AEB 04 94              			R2 = [BP+4]; 						// Value
00008AEC C1 D4              			[R1] = R2 ;
00008AED 90 90              			POP R1,R2 FROM [SP];
00008AEE 88 98              	        POP BP,BP FROM [SP];
00008AEF 90 9A              	        RETF;        
                            	 		.ENDP
                            			 
                            	
                            	
                            		 
                            	///////////////////////////////////////
                            	_SP_RampUpDAC1:	.PROC
                            	F_SP_RampUpDAC1:
00008AF0 90 D4              	                push r1,r2 to [sp];
00008AF1 11 93 17 70        	                r1=[P_DAC1];
00008AF3 09 B3 C0 FF        	                r1 &= ~0x003f;
00008AF5 09 43 00 80        	                cmp     r1,0x8000
00008AF7 0E 0E              	                jb     	L_RU_NormalUp;  
00008AF8 19 5E              	                je      L_RU_End;
                            	                
                            	L_RU_DownLoop:
00008AF9 40 F0 5C 8B        	                call    F_Delay;        
00008AFB 41 94              	                r2 = 0x0001;
00008AFC 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
00008AFE 09 23 40 00        	                r1 -= 0x40;
00008B00 19 D3 17 70        	                [P_DAC1] = r1;
00008B02 09 43 00 80        	                cmp     r1,0x8000;
00008B04 4C 4E              	                jne     L_RU_DownLoop;  
                            	L_RD_DownEnd:
00008B05 0C EE              	                jmp     L_RU_End;
                            	
                            	L_RU_NormalUp:
                            	L_RU_Loop:
00008B06 40 F0 5C 8B        	                call    F_Delay;
00008B08 41 94              	                r2 = 0x0001;
00008B09 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
00008B0B 09 03 40 00        	                r1 += 0x40;
00008B0D 19 D3 17 70        	                [P_DAC1] = r1;
00008B0F 09 43 00 80        	                cmp     r1, 0x8000;
00008B11 4C 4E              	                jne     L_RU_Loop;
                            	                
                            	
                            	L_RU_End:
00008B12 90 90              	                pop     r1,r2 from [sp];
00008B13 90 9A              	                retf;
                            	                .ENDP
                            	/////////////////////////////////////// 
                            	_SP_RampDnDAC1:	.PROC
                            	F_SP_RampDnDAC1:
00008B14 90 D4              					push r1,r2 to [sp];
                            	                //int off;
00008B15 11 93 17 70        	                r1 = [P_DAC1];
00008B17 09 B3 C0 FF        	                r1 &= ~0x003F;
00008B19 0A 5E              	                jz      L_RD_End;
                            	L_RD_Loop:                
00008B1A 40 F0 5C 8B        	                call    F_Delay;        
00008B1C 41 94              	                r2 = 0x0001;
00008B1D 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
00008B1F 09 23 40 00        	                r1 -= 0x40;
00008B21 19 D3 17 70        	                [P_DAC1] = r1;  
00008B23 4A 4E              	                jnz     L_RD_Loop;
                            	L_RD_End:       

⌨️ 快捷键说明

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