hardware.lst

来自「此程序是采用凌阳的061单片机实现对波形发生的」· 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      
000001EF 00 00              	.VAR	R_ReadIndex;
000001F0 00 00              	.VAR	R_WriteIndex;
                            	
00009F4C                    	.CODE
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Send data to speech driver(PWM/DAC)                                   
                            	// Destory register: r4                                            
                            	//////////////////////////////////////////////////////////////////        
                            	
                            	F_SP_Send_PWM:    							//
00009F4C 1C D9 16 70        	       [P_PWM] = r4;						//
00009F4E 90 9A              	       retf;           						//
                            	
                            	F_SP_Send_DAC1:								//
00009F4F 1C D9 17 70        			[P_DAC1] = r4;						//
00009F51 90 9A              			retf;        						//
                            	F_SP_Send_DAC2:								//
00009F52 1C D9 16 70        			[P_DAC2] = r4;						//
00009F54 90 9A              			retf;        						//
                            	F_SP_Send_Two_DAC:
00009F55 1C D9 17 70        			[P_DAC1] = r4;						//
00009F57 1C D9 16 70        			[P_DAC2] = r4;						//
00009F59 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:
00009F5A 14 99 14 70        			R4 = [P_ADC]
00009F5C 90 9A              			retf
                            	
                            	
                            	F_SP_Set_P_TimerA_Ctrl:
00009F5D 19 D3 0B 70        		[P_TimerA_Ctrl] = R1
00009F5F 90 9A              		RETF
                            	F_SP_Set_P_TimerA_Data:
00009F60 19 D3 0A 70        		[P_TimerA_Data] = R1
00009F62 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Ctrl:
00009F63 19 D3 0D 70        		[P_TimerB_Ctrl] = R1
00009F65 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Data:
00009F66 19 D3 0C 70        		[P_TimerB_Data] = R1
00009F68 90 9A              		RETF
                            	
                            	F_SP_Set_P_INT_Ctrl:
00009F69 19 D3 10 70        		[P_INT_Ctrl] = R1
00009F6B 90 9A              		RETF
                            	F_SP_Set_P_INT_Clear:
00009F6C 19 D3 11 70        		[P_INT_Clear] = R1
00009F6E 90 9A              		RETF
                            	
                            	F_SP_Set_P_SystemClock:
00009F6F 19 D3 13 70        		[P_SystemClock] = R1
00009F71 90 9A              		RETF
                            	
                            	F_SP_Set_P_DAC_Ctrl:
00009F72 19 D3 2A 70        		[P_DAC_Ctrl] = R1
00009F74 90 9A              		RETF	
                            	
                            	F_SP_Set_P_ADC_Ctrl:
00009F75 19 D3 15 70        		[P_ADC_Ctrl] = R1
00009F77 90 9A              		RETF
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Interrupt vector setting
                            	// Used register: R1                                                                                    
                            	////////////////////////////////////////////////////////////////// 
                            	
                            	F_SP_Write_INT_Status:						//write interrupt status
00009F78 19 D3 BB 01        	        [R_InterruptStatus] = R1;       	//
00009F7A 90 9A              	        retf;								
                            	        
                            	F_SP_Read_INT_Status:						//read interrupt status
00009F7B 11 93 BB 01        	        R1 = [R_InterruptStatus];       	//
00009F7D 90 9A              	        retf;
                            	
                            	
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	//
                            	//////////////////////////////////////////////////////////////////    
                            	_SP_Init_IOA: .PROC
00009F7E 88 DA              			PUSH BP,BP TO [SP];
00009F7F 08 0B 01 00        	        BP = SP + 1;
00009F81 88 D2              			PUSH R1,R1 TO [SP];
00009F82 03 92              			R1 = [BP+3];						// Port direction
00009F83 19 D3 02 70        			[P_IOA_Dir] = R1;
00009F85 04 92              			R1 = [BP+4];
00009F86 19 D3 00 70        			[P_IOA_Data] = R1;
00009F88 05 92              			R1 = [BP+5];
00009F89 19 D3 03 70        			[P_IOA_Attrib] = R1;
                            			
00009F8B 88 90              			POP R1,R1 FROM [SP];
00009F8C 88 98              	        POP BP,BP FROM [SP];
00009F8D 90 9A              	        RETF;
                            			.ENDP
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	// SP_Inti_IOB
                            	//////////////////////////////////////////////////////////////////    
                            	
                            	_SP_Init_IOB: .PROC
00009F8E 88 DA              			PUSH BP,BP TO [SP];
00009F8F 08 0B 01 00        	        BP = SP + 1;
00009F91 88 D2              			PUSH R1,R1 TO [SP];
00009F92 03 92              			R1 = [BP+3];						// Port direction
00009F93 19 D3 07 70        			[P_IOB_Dir] = R1;
00009F95 04 92              			R1 = [BP+4];
00009F96 19 D3 05 70        			[P_IOB_Data] = R1;
00009F98 05 92              			R1 = [BP+5];
00009F99 19 D3 08 70        			[P_IOB_Attrib] = R1;
                            			
00009F9B 88 90              			POP R1,R1 FROM [SP];
00009F9C 88 98              	        POP BP,BP FROM [SP];
00009F9D 90 9A              	        RETF;
                            			.ENDP
                            	
                            	
                            	
                            	_SP_Import: .PROC
00009F9E 88 DA              	        PUSH BP,BP TO [SP];
00009F9F 08 0B 01 00        	        BP = SP + 1;
00009FA1 90 D4              			PUSH R1,R2 TO [SP];
00009FA2 03 92              			R1 = [BP+3]; 						// Port Number
00009FA3 04 94              			R2 = [BP+4]; 						// Data Buffer Pointer
00009FA4 C1 92              			R1 = [R1] ;
00009FA5 C2 D2              			[R2] = R1 ;
00009FA6 90 90              			POP R1,R2 FROM [SP];
00009FA7 88 98              	        POP BP,BP FROM [SP];
00009FA8 90 9A              	        RETF;
                            			.ENDP
                            	
                            	_SP_Export: .PROC
00009FA9 88 DA              	        PUSH BP,BP TO [SP];
00009FAA 08 0B 01 00        	        BP = SP + 1;
00009FAC 90 D4              			PUSH R1,R2 TO [SP];
00009FAD 03 92              			R1 = [BP+3]; 						// Port Number
00009FAE 04 94              			R2 = [BP+4]; 						// Value
00009FAF C1 D4              			[R1] = R2 ;
00009FB0 90 90              			POP R1,R2 FROM [SP];
00009FB1 88 98              	        POP BP,BP FROM [SP];
00009FB2 90 9A              	        RETF;        
                            	 		.ENDP
                            			 
                            	
                            	
                            		 
                            	///////////////////////////////////////
                            	_SP_RampUpDAC1:	.PROC
                            	F_SP_RampUpDAC1:
00009FB3 90 D4              	                push r1,r2 to [sp];
00009FB4 11 93 17 70        	                r1=[P_DAC1];
00009FB6 09 B3 C0 FF        	                r1 &= ~0x003f;
00009FB8 09 43 00 80        	                cmp     r1,0x8000
00009FBA 0E 0E              	                jb     	L_RU_NormalUp;  
00009FBB 19 5E              	                je      L_RU_End;
                            	                
                            	L_RU_DownLoop:
00009FBC 40 F0 1F A0        	                call    F_Delay;        
00009FBE 41 94              	                r2 = 0x0001;
00009FBF 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
00009FC1 09 23 40 00        	                r1 -= 0x40;
00009FC3 19 D3 17 70        	                [P_DAC1] = r1;
00009FC5 09 43 00 80        	                cmp     r1,0x8000;
00009FC7 4C 4E              	                jne     L_RU_DownLoop;  
                            	L_RD_DownEnd:
00009FC8 0C EE              	                jmp     L_RU_End;
                            	
                            	L_RU_NormalUp:
                            	L_RU_Loop:
00009FC9 40 F0 1F A0        	                call    F_Delay;
00009FCB 41 94              	                r2 = 0x0001;
00009FCC 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
00009FCE 09 03 40 00        	                r1 += 0x40;
00009FD0 19 D3 17 70        	                [P_DAC1] = r1;
00009FD2 09 43 00 80        	                cmp     r1, 0x8000;
00009FD4 4C 4E              	                jne     L_RU_Loop;
                            	                
                            	
                            	L_RU_End:
00009FD5 90 90              	                pop     r1,r2 from [sp];
00009FD6 90 9A              	                retf;
                            	                .ENDP
                            	/////////////////////////////////////// 
                            	_SP_RampDnDAC1:	.PROC
                            	F_SP_RampDnDAC1:
00009FD7 90 D4              					push r1,r2 to [sp];
                            	                //int off;
00009FD8 11 93 17 70        	                r1 = [P_DAC1];
00009FDA 09 B3 C0 FF        	                r1 &= ~0x003F;
00009FDC 0A 5E              	                jz      L_RD_End;
                            	L_RD_Loop:                
00009FDD 40 F0 1F A0        	                call    F_Delay;        
00009FDF 41 94              	                r2 = 0x0001;
00009FE0 1A D5 12 70        	                [P_Watchdog_Clear] = r2;

⌨️ 快捷键说明

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