hardware.lst

来自「凌阳单片机A2000格式 语音播放程序」· LST 代码 · 共 660 行 · 第 1/3 页

LST
660
字号
         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      
0000032D 00 00              	.VAR	R_ReadIndex;
0000032E 00 00              	.VAR	R_WriteIndex;
                            	
00008D17                    	.CODE
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Send data to speech driver(PWM/DAC)                                   
                            	// Destory register: r4                                            
                            	//////////////////////////////////////////////////////////////////        
                            	
                            	F_SP_Send_PWM:    							//
00008D17 1C D9 16 70        	       [P_PWM] = r4;						//
00008D19 90 9A              	       retf;           						//
                            	
                            	F_SP_Send_DAC1:								//
00008D1A 1C D9 17 70        			[P_DAC1] = r4;						//
00008D1C 90 9A              			retf;        						//
                            	F_SP_Send_DAC2:								//
00008D1D 1C D9 16 70        			[P_DAC2] = r4;						//
00008D1F 90 9A              			retf;        						//
                            	F_SP_Send_Two_DAC:
00008D20 1C D9 17 70        			[P_DAC1] = r4;						//
00008D22 1C D9 16 70        			[P_DAC2] = r4;						//
00008D24 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:
00008D25 14 99 14 70        			R4 = [P_ADC]
00008D27 90 9A              			retf
                            	
                            	
                            	F_SP_Set_P_TimerA_Ctrl:
00008D28 19 D3 0B 70        		[P_TimerA_Ctrl] = R1
00008D2A 90 9A              		RETF
                            	F_SP_Set_P_TimerA_Data:
00008D2B 19 D3 0A 70        		[P_TimerA_Data] = R1
00008D2D 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Ctrl:
00008D2E 19 D3 0D 70        		[P_TimerB_Ctrl] = R1
00008D30 90 9A              		RETF
                            	F_SP_Set_P_TimerB_Data:
00008D31 19 D3 0C 70        		[P_TimerB_Data] = R1
00008D33 90 9A              		RETF
                            	
                            	F_SP_Set_P_INT_Ctrl:
00008D34 19 D3 10 70        		[P_INT_Ctrl] = R1
00008D36 90 9A              		RETF
                            	F_SP_Set_P_INT_Clear:
00008D37 19 D3 11 70        		[P_INT_Clear] = R1
00008D39 90 9A              		RETF
                            	
                            	F_SP_Set_P_SystemClock:
00008D3A 19 D3 13 70        		[P_SystemClock] = R1
00008D3C 90 9A              		RETF
                            	
                            	F_SP_Set_P_DAC_Ctrl:
00008D3D 19 D3 2A 70        		[P_DAC_Ctrl] = R1
00008D3F 90 9A              		RETF	
                            	
                            	F_SP_Set_P_ADC_Ctrl:
00008D40 19 D3 15 70        		[P_ADC_Ctrl] = R1
00008D42 90 9A              		RETF
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Interrupt vector setting
                            	// Used register: R1                                                                                    
                            	////////////////////////////////////////////////////////////////// 
                            	
                            	F_SP_Write_INT_Status:						//write interrupt status
00008D43 19 D3 F9 02        	        [R_InterruptStatus] = R1;       	//
00008D45 90 9A              	        retf;								
                            	        
                            	F_SP_Read_INT_Status:						//read interrupt status
00008D46 11 93 F9 02        	        R1 = [R_InterruptStatus];       	//
00008D48 90 9A              	        retf;
                            	
                            	
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	//
                            	//////////////////////////////////////////////////////////////////    
                            	_SP_Init_IOA: .PROC
00008D49 88 DA              			PUSH BP,BP TO [SP];
00008D4A 08 0B 01 00        	        BP = SP + 1;
00008D4C 88 D2              			PUSH R1,R1 TO [SP];
00008D4D 03 92              			R1 = [BP+3];						// Port direction
00008D4E 19 D3 02 70        			[P_IOA_Dir] = R1;
00008D50 04 92              			R1 = [BP+4];
00008D51 19 D3 00 70        			[P_IOA_Data] = R1;
00008D53 05 92              			R1 = [BP+5];
00008D54 19 D3 03 70        			[P_IOA_Attrib] = R1;
                            			
00008D56 88 90              			POP R1,R1 FROM [SP];
00008D57 88 98              	        POP BP,BP FROM [SP];
00008D58 90 9A              	        RETF;
                            			.ENDP
                            	
                            	////////////////////////////////////////////////////////////////// 
                            	// SP_Inti_IOB
                            	//////////////////////////////////////////////////////////////////    
                            	
                            	_SP_Init_IOB: .PROC
00008D59 88 DA              			PUSH BP,BP TO [SP];
00008D5A 08 0B 01 00        	        BP = SP + 1;
00008D5C 88 D2              			PUSH R1,R1 TO [SP];
00008D5D 03 92              			R1 = [BP+3];						// Port direction
00008D5E 19 D3 07 70        			[P_IOB_Dir] = R1;
00008D60 04 92              			R1 = [BP+4];
00008D61 19 D3 05 70        			[P_IOB_Data] = R1;
00008D63 05 92              			R1 = [BP+5];
00008D64 19 D3 08 70        			[P_IOB_Attrib] = R1;
                            			
00008D66 88 90              			POP R1,R1 FROM [SP];
00008D67 88 98              	        POP BP,BP FROM [SP];
00008D68 90 9A              	        RETF;
                            			.ENDP
                            	
                            	
                            	
                            	_SP_Import: .PROC
00008D69 88 DA              	        PUSH BP,BP TO [SP];
00008D6A 08 0B 01 00        	        BP = SP + 1;
00008D6C 90 D4              			PUSH R1,R2 TO [SP];
00008D6D 03 92              			R1 = [BP+3]; 						// Port Number
00008D6E 04 94              			R2 = [BP+4]; 						// Data Buffer Pointer
00008D6F C1 92              			R1 = [R1] ;
00008D70 C2 D2              			[R2] = R1 ;
00008D71 90 90              			POP R1,R2 FROM [SP];
00008D72 88 98              	        POP BP,BP FROM [SP];
00008D73 90 9A              	        RETF;
                            			.ENDP
                            	
                            	_SP_Export: .PROC
00008D74 88 DA              	        PUSH BP,BP TO [SP];
00008D75 08 0B 01 00        	        BP = SP + 1;
00008D77 90 D4              			PUSH R1,R2 TO [SP];
00008D78 03 92              			R1 = [BP+3]; 						// Port Number
00008D79 04 94              			R2 = [BP+4]; 						// Value
00008D7A C1 D4              			[R1] = R2 ;
00008D7B 90 90              			POP R1,R2 FROM [SP];
00008D7C 88 98              	        POP BP,BP FROM [SP];
00008D7D 90 9A              	        RETF;        
                            	 		.ENDP
                            			 
                            	
                            	
                            		 
                            	///////////////////////////////////////
                            	_SP_RampUpDAC1:	.PROC
                            	F_SP_RampUpDAC1:
00008D7E 90 D4              	                push r1,r2 to [sp];
00008D7F 11 93 17 70        	                r1=[P_DAC1];
00008D81 09 B3 C0 FF        	                r1 &= ~0x003f;
00008D83 09 43 00 80        	                cmp     r1,0x8000
00008D85 0E 0E              	                jb     	L_RU_NormalUp;  
00008D86 19 5E              	                je      L_RU_End;
                            	                
                            	L_RU_DownLoop:
00008D87 40 F0 EA 8D        	                call    F_Delay;        
00008D89 41 94              	                r2 = 0x0001;
00008D8A 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
00008D8C 09 23 40 00        	                r1 -= 0x40;
00008D8E 19 D3 17 70        	                [P_DAC1] = r1;
00008D90 09 43 00 80        	                cmp     r1,0x8000;
00008D92 4C 4E              	                jne     L_RU_DownLoop;  
                            	L_RD_DownEnd:
00008D93 0C EE              	                jmp     L_RU_End;
                            	
                            	L_RU_NormalUp:
                            	L_RU_Loop:
00008D94 40 F0 EA 8D        	                call    F_Delay;
00008D96 41 94              	                r2 = 0x0001;
00008D97 1A D5 12 70        	                [P_Watchdog_Clear] = r2;
00008D99 09 03 40 00        	                r1 += 0x40;
00008D9B 19 D3 17 70        	                [P_DAC1] = r1;
00008D9D 09 43 00 80        	                cmp     r1, 0x8000;
00008D9F 4C 4E              	                jne     L_RU_Loop;
                            	                
                            	
                            	L_RU_End:
00008DA0 90 90              	                pop     r1,r2 from [sp];
00008DA1 90 9A              	                retf;
                            	                .ENDP
                            	/////////////////////////////////////// 
                            	_SP_RampDnDAC1:	.PROC
                            	F_SP_RampDnDAC1:
00008DA2 90 D4              					push r1,r2 to [sp];
                            	                //int off;
00008DA3 11 93 17 70        	                r1 = [P_DAC1];
00008DA5 09 B3 C0 FF        	                r1 &= ~0x003F;
00008DA7 0A 5E              	                jz      L_RD_End;
                            	L_RD_Loop:                
00008DA8 40 F0 EA 8D        	                call    F_Delay;        
00008DAA 41 94              	                r2 = 0x0001;
00008DAB 1A D5 12 70        	                [P_Watchdog_Clear] = r2;

⌨️ 快捷键说明

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