hardware.lst

来自「能同时进行多路数据采集」· LST 代码 · 共 659 行 · 第 1/3 页

LST
659
字号
         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 00 00
         00 00 00 00
         00 00      
000001E6 00 00              	.VAR	R_ReadIndex;
000001E7 00 00              	.VAR	R_WriteIndex;
                            	
00008C17                    	.CODE
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Send data to speech driver(PWM/DAC)                                   
                            	// Destory register: r4                                            
                            	//////////////////////////////////////////////////////////////////        
                            	
                            	F_SP_Send_PWM:    							//
00008C17 1C D9 16 70        	       [P_PWM] = r4;						//
00008C19 90 9A              	       retf;           						//
                            	
                            	F_SP_Send_DAC1:								//
00008C1A 1C D9 17 70        			[P_DAC1] = r4;						//
00008C1C 90 9A              			retf;        						//
                            	F_SP_Send_DAC2:								//
00008C1D 1C D9 16 70        			[P_DAC2] = r4;						//
00008C1F 90 9A              			retf;        						//
                            	F_SP_Send_Two_DAC:
00008C20 1C D9 17 70        			[P_DAC1] = r4;						//
00008C22 1C D9 16 70        			[P_DAC2] = r4;						//
00008C24 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:
00008C25 14 99 14 70        			R4 = [P_ADC]
00008C27 90 9A              			retf
                            	
                            	
                            	F_SP_Set_P_TimerA_Ctrl:
00008C28 19 D3 0B 70        		[P_TimerA_Ctrl] = R1
00008C2A 90 9A              		RETF
                            	F_SP_Set_P_TimerA_Data:
00008C2B 19 D3 0A 70        		[P_TimerA_Data] = R1
00008C2D 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Ctrl:
00008C2E 19 D3 0D 70        		[P_TimerB_Ctrl] = R1
00008C30 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Data:
00008C31 19 D3 0C 70        		[P_TimerB_Data] = R1
00008C33 90 9A              		RETF
                            	
                            	F_SP_Set_P_INT_Ctrl:
00008C34 19 D3 10 70        		[P_INT_Ctrl] = R1
00008C36 90 9A              		RETF
                            	F_SP_Set_P_INT_Clear:
00008C37 19 D3 11 70        		[P_INT_Clear] = R1
00008C39 90 9A              		RETF
                            	
                            	F_SP_Set_P_SystemClock:
00008C3A 19 D3 13 70        		[P_SystemClock] = R1
00008C3C 90 9A              		RETF
                            	
                            	F_SP_Set_P_DAC_Ctrl:
00008C3D 19 D3 2A 70        		[P_DAC_Ctrl] = R1
00008C3F 90 9A              		RETF	
                            	
                            	F_SP_Set_P_ADC_Ctrl:
00008C40 19 D3 15 70        		[P_ADC_Ctrl] = R1
00008C42 90 9A              		RETF
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Interrupt vector setting
                            	// Used register: R1                                                                                    
                            	////////////////////////////////////////////////////////////////// 
                            	
                            	F_SP_Write_INT_Status:						//write interrupt status
00008C43 19 D3 B2 01        	        [R_InterruptStatus] = R1;       	//
00008C45 90 9A              	        retf;								
                            	        
                            	F_SP_Read_INT_Status:						//read interrupt status
00008C46 11 93 B2 01        	        R1 = [R_InterruptStatus];       	//
00008C48 90 9A              	        retf;
                            	
                            	
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	//
                            	//////////////////////////////////////////////////////////////////    
                            	_SP_Init_IOA: .PROC
00008C49 88 DA              			PUSH BP,BP TO [SP];
00008C4A 08 0B 01 00        	        BP = SP + 1;
00008C4C 88 D2              			PUSH R1,R1 TO [SP];
00008C4D 03 92              			R1 = [BP+3];						// Port direction
00008C4E 19 D3 02 70        			[P_IOA_Dir] = R1;
00008C50 04 92              			R1 = [BP+4];
00008C51 19 D3 00 70        			[P_IOA_Data] = R1;
00008C53 05 92              			R1 = [BP+5];
00008C54 19 D3 03 70        			[P_IOA_Attrib] = R1;
                            			
00008C56 88 90              			POP R1,R1 FROM [SP];
00008C57 88 98              	        POP BP,BP FROM [SP];
00008C58 90 9A              	        RETF;
                            			.ENDP
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	// SP_Inti_IOB
                            	//////////////////////////////////////////////////////////////////    
                            	
                            	_SP_Init_IOB: .PROC
00008C59 88 DA              			PUSH BP,BP TO [SP];
00008C5A 08 0B 01 00        	        BP = SP + 1;
00008C5C 88 D2              			PUSH R1,R1 TO [SP];
00008C5D 03 92              			R1 = [BP+3];						// Port direction
00008C5E 19 D3 07 70        			[P_IOB_Dir] = R1;
00008C60 04 92              			R1 = [BP+4];
00008C61 19 D3 05 70        			[P_IOB_Data] = R1;
00008C63 05 92              			R1 = [BP+5];
00008C64 19 D3 08 70        			[P_IOB_Attrib] = R1;
                            			
00008C66 88 90              			POP R1,R1 FROM [SP];
00008C67 88 98              	        POP BP,BP FROM [SP];
00008C68 90 9A              	        RETF;
                            			.ENDP
                            	
                            	
                            	
                            	_SP_Import: .PROC
00008C69 88 DA              	        PUSH BP,BP TO [SP];
00008C6A 08 0B 01 00        	        BP = SP + 1;
00008C6C 90 D4              			PUSH R1,R2 TO [SP];
00008C6D 03 92              			R1 = [BP+3]; 						// Port Number
00008C6E 04 94              			R2 = [BP+4]; 						// Data Buffer Pointer
00008C6F C1 92              			R1 = [R1] ;
00008C70 C2 D2              			[R2] = R1 ;
00008C71 90 90              			POP R1,R2 FROM [SP];
00008C72 88 98              	        POP BP,BP FROM [SP];
00008C73 90 9A              	        RETF;
                            			.ENDP
                            	
                            	_SP_Export: .PROC
00008C74 88 DA              	        PUSH BP,BP TO [SP];
00008C75 08 0B 01 00        	        BP = SP + 1;
00008C77 90 D4              			PUSH R1,R2 TO [SP];
00008C78 03 92              			R1 = [BP+3]; 						// Port Number
00008C79 04 94              			R2 = [BP+4]; 						// Value
00008C7A C1 D4              			[R1] = R2 ;
00008C7B 90 90              			POP R1,R2 FROM [SP];
00008C7C 88 98              	        POP BP,BP FROM [SP];
00008C7D 90 9A              	        RETF;        
                            	 		.ENDP
                            			 
                            	
                            	
                            		 
                            	///////////////////////////////////////
                            	_SP_RampUpDAC1:	.PROC
                            	F_SP_RampUpDAC1:
00008C7E 90 D4              	                push r1,r2 to [sp];
00008C7F 11 93 17 70        	                r1=[P_DAC1];
00008C81 09 B3 C0 FF        	                r1 &= ~0x003f;
00008C83 09 43 00 80        	                cmp     r1,0x8000
00008C85 0E 0E              	                jb     	L_RU_NormalUp;  
00008C86 19 5E              	                je      L_RU_End;
                            	                
                            	L_RU_DownLoop:
00008C87 40 F0 EA 8C        	                call    F_Delay;        
00008C89 41 94              	                r2 = 0x0001;
00008C8A 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
00008C8C 09 23 40 00        	                r1 -= 0x40;
00008C8E 19 D3 17 70        	                [P_DAC1] = r1;
00008C90 09 43 00 80        	                cmp     r1,0x8000;
00008C92 4C 4E              	                jne     L_RU_DownLoop;  
                            	L_RD_DownEnd:
00008C93 0C EE              	                jmp     L_RU_End;
                            	
                            	L_RU_NormalUp:
                            	L_RU_Loop:
00008C94 40 F0 EA 8C        	                call    F_Delay;
00008C96 41 94              	                r2 = 0x0001;
00008C97 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
00008C99 09 03 40 00        	                r1 += 0x40;
00008C9B 19 D3 17 70        	                [P_DAC1] = r1;
00008C9D 09 43 00 80        	                cmp     r1, 0x8000;
00008C9F 4C 4E              	                jne     L_RU_Loop;
                            	                
                            	
                            	L_RU_End:
00008CA0 90 90              	                pop     r1,r2 from [sp];
00008CA1 90 9A              	                retf;
                            	                .ENDP
                            	/////////////////////////////////////// 
                            	_SP_RampDnDAC1:	.PROC
                            	F_SP_RampDnDAC1:
00008CA2 90 D4              					push r1,r2 to [sp];
                            	                //int off;
00008CA3 11 93 17 70        	                r1 = [P_DAC1];
00008CA5 09 B3 C0 FF        	                r1 &= ~0x003F;
00008CA7 0A 5E              	                jz      L_RD_End;
                            	L_RD_Loop:                
00008CA8 40 F0 EA 8C        	                call    F_Delay;        
00008CAA 41 94              	                r2 = 0x0001;
00008CAB 1A D5 12 70        	                [P_Watchdog_Clear] = r2;

⌨️ 快捷键说明

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