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

📄 sacm_user.lst

📁 凌阳十六位单片机的实验详细说明及其相对应的源码
💻 LST
📖 第 1 页 / 共 3 页
字号:
                            	    // defined by user
                            	    //-----------------------	
000094E7 88 DA              		push bp to [sp]
000094E8 08 0B 01 00        		bp = sp + 1
000094EA 88 D2              		push r1 to [sp]
000094EB 03 92              		r1 = [bp+3]
                            		
000094EC 40 F0 F1 94        		call F_USER_InitAdpcmData_Ch0
                            		
000094EE 88 90              		pop r1 from [sp]
000094EF 88 98              		pop bp from [sp]	
                            	    //-----------------------
                            		// end of user define area
                            	    //-----------------------			
000094F0 90 9A              		retf
                            		.endp
                            	
                            	///////////////////////////////////////////////////////////////////////////////
                            	// Function: F_USER_InitAdpcmData_Ch1
                            	// Input : R1=DrumIndex (User defined)
                            	// Output: (User defined)
                            	// Note: 1. This function initializes ADPCM playback from user storage.  
                            	//       2. User needs to implement the function body based on the external 
                            	//          storage type.
                            	///////////////////////////////////////////////////////////////////////////////
                            	F_USER_InitAdpcmData_Ch0:
                            	    //-----------------------
                            	    // defined by user
                            	    //-----------------------	
000094F1 98 D6              		push	r1,r3 to [sp]
                            		 									// r1 = ADPCM speech index
000094F2 09 07 45 80        		r3 = r1 + T_SACM_MS01_DrumTable;	// Drum # r1:i/p
000094F4 C3 94              	    r2 = [r3];
000094F5 0A 07 01 00        	    r3 = r2 + 0x01;
000094F7 C2 94              	    r2 = [r2];
000094F8 1A D5 B8 00        	    [R_AdpcmAddrCh0] = r2					// Got Address
000094FA C3 96              	    r3 = [r3];
000094FB 5B 97              	    r3 = r3 lsl 4;
000094FC 5B 97              	    r3 = r3 lsl 4;
000094FD 4B 97              	    r3 = r3 lsl 2;
000094FE 1B D7 B7 00        	    [R_AdpcmBankCh0] = r3					// Got Bank
00009500 98 90              	    pop		r1,r3 from [sp]
                            	    //-----------------------
                            		// end of user define area
                            	    //-----------------------       
00009501 90 9A              			retf
                            	
                            	///////////////////////////////////////////////////////////////////////////////
                            	// Function: _User_InitAdpcmData_Ch1
                            	// Syntax : User_InitAdpcmData_Ch1(DrumIndex)
                            	// Input : DrumIndex (User defined)
                            	// Output: (User defined)
                            	// Note: 1. This C API calls F_User_InitAdpcmData_Ch1 to initialize ADPCM playback 
                            	//          from user storage.  
                            	//       2. User needs to implement the function body based on the external 
                            	//          storage type.
                            	///////////////////////////////////////////////////////////////////////////////
                            	
                            	_USER_InitAdpcmData_Ch1:	.proc
                            	    //-----------------------
                            	    // defined by user
                            	    //-----------------------	
00009502 88 DA              		push bp to [sp]
00009503 08 0B 01 00        		bp = sp + 1
00009505 88 D2              		push r1 to [sp]
00009506 03 92              		r1 = [bp+3]
                            		
00009507 40 F0 0C 95        		call F_USER_InitAdpcmData_Ch1
                            		
00009509 88 90              		pop r1 from [sp]	
0000950A 88 98              		pop bp from [sp]	
                            	    //-----------------------
                            		// end of user define area
                            	    //-----------------------			
0000950B 90 9A              		retf
                            		.endp
                            			
                            	///////////////////////////////////////////////////////////////////////////////
                            	// Function: F_USER_InitAdpcmData_Ch1
                            	// Input : R1=DrumIndex (User defined)
                            	// Output: (User defined)
                            	// Note: 1. This function initializes ADPCM playback from user storage.  
                            	//       2. User needs to implement the function body based on the external 
                            	//          storage type.
                            	///////////////////////////////////////////////////////////////////////////////
                            	F_USER_InitAdpcmData_Ch1:
                            	    //-----------------------
                            	    // defined by user
                            	    //-----------------------	
0000950C 98 D6              			push	r1,r3 to [sp]
                            			 									// r1 = ADPCM speech index
0000950D 09 07 45 80        			r3 = r1 + T_SACM_MS01_DrumTable;	// Drum # r1:i/p
0000950F C3 94              	        r2 = [r3];
00009510 0A 07 01 00        	        r3 = r2 + 0x01;
00009512 C2 94              	        r2 = [r2];
00009513 1A D5 BA 00        	        [R_AdpcmAddrCh1] = r2					// Got Address
00009515 C3 96              	        r3 = [r3];
00009516 5B 97              	        r3 = r3 lsl 4;
00009517 5B 97              	        r3 = r3 lsl 4;
00009518 4B 97              	        r3 = r3 lsl 2;
00009519 1B D7 B9 00        	        [R_AdpcmBankCh1] = r3					// Got Bank
0000951B 98 90              	        pop		r1,r3 from [sp]
                            	    //-----------------------
                            		// end of user define area
                            	    //-----------------------
0000951C 90 9A              	    	retf
                            	
                            	///////////////////////////////////////////////////////////////////////////////
                            	// Function: F_USER_MS01_GetAdpcmData_Ch0
                            	// Input: None
                            	// Output: R3
                            	// Note: 1. User protect r1,r2,r5 if used.
                            	//       2. This function fetchs data from user storage and returns to 
                            	//          MS01 library for ADPCM Ch0 playback. The returned data is carried 
                            	//          by R3.
                            	//       3. User needs to implement the function body based on the external 
                            	//          storage type.
                            	///////////////////////////////////////////////////////////////////////////////
                            	
                            	F_USER_MS01_GetAdpcmData_Ch0:
                            	    //-----------------------
                            	    // defined by user
                            	    //-----------------------	
0000951D 90 D4              		push	r1,r2 to [sp]
0000951E 12 95 B8 00        		r2 = [R_AdpcmAddrCh0]
00009520 13 97 B7 00        		r3 = [R_AdpcmBankCh0]
                            		
00009522 7F BC              	    sr &= 0x03f 					// Change Page
00009523 06 A7              	    r3 |=sr 						//
00009524 03 9D              	    sr = r3 						//
00009525 E2 92              	 	r1 = D:[r2] 					// Got data
                            			  
                            		//... Adpcm address +1 ...........
00009526 12 95 B8 00        	    r2 = [R_AdpcmAddrCh0]; 			// 6
00009528 41 04              	    r2+= 1;                 		// 3
00009529 06 4E              	    jnz  ?L_NotCrossBankAdpcm;
0000952A 13 97 B7 00        	    r3 = [R_AdpcmBankCh0]      		// 9
0000952C 0B 0D 00 04        	    sr = r3 + 0x400;
0000952E 1E DD B7 00        	    [R_AdpcmBankCh0] = sr     	 		// 9
                            	    
                            	    ?L_NotCrossBankAdpcm:
00009530 1A D5 B8 00        	    [R_AdpcmAddrCh0] = r2;   		// 6 -> 36
00009532 01 97              		r3 = r1								//r3 = ADPCM Data from user	
00009533 90 90              		pop 	r1,r2 from [sp]
                            	    //-----------------------
                            		// end of user define area
                            	    //-----------------------		
00009534 90 9A              		retf
                            		
                            	///////////////////////////////////////////////////////////////////////////////
                            	// Function: F_USER_MS01_GetAdpcmData_Ch1
                            	// Input: None
                            	// Output: R3
                            	// Note: 1. User protect r1,r2,r5 if used.
                            	//       2. This function fetchs data from user storage and returns to 
                            	//          MS01 library for ADPCM Ch1 playback. The returned data is carried 
                            	//          by R3.
                            	//       3. User needs to implement the function body based on the external 
                            	//          storage type.
                            	///////////////////////////////////////////////////////////////////////////////
                            	F_USER_MS01_GetAdpcmData_Ch1:
                            	    //-----------------------
                            	    // defined by user
                            	    //-----------------------
00009535 90 D4              		push	r1,r2 to [sp]
                            	
00009536 12 95 BA 00        		r2 = [R_AdpcmAddrCh1]
00009538 13 97 B9 00        		r3 = [R_AdpcmBankCh1]
                            		
0000953A 7F BC              		sr &= 0x03f 					// Change Page
0000953B 06 A7              	    r3 |=sr 						//
0000953C 03 9D              	    sr = r3 						//
0000953D E2 92              		r1 = D:[r2] 					// Got data
                            		  
                            	 	//... Adpcm address +1 ...........
0000953E 12 95 BA 00        	    r2 = [R_AdpcmAddrCh1]; 			// 6
00009540 41 04              	    r2+= 1;                 		// 3
00009541 06 4E              	    jnz ?L_NotCrossBankAdpcm
00009542 13 97 B9 00        	    r3 = [R_AdpcmBankCh1]      		// 9
00009544 0B 0D 00 04        	    sr = r3 + 0x400;
00009546 1E DD B9 00        	    [R_AdpcmBankCh1] = sr     	 		// 9
                            	    
                            	    ?L_NotCrossBankAdpcm:
00009548 1A D5 BA 00        	    [R_AdpcmAddrCh1] = r2;   		// 6 -> 36
0000954A 01 97              		r3 = r1								//r3 = ADPCM Data from user
0000954B 90 90              		pop 	r1,r2 from [sp]
                            	    //-----------------------
                            		// end of user define area
                            	    //-----------------------
0000954C 90 9A              		retf		
0 error(s), 0 warning(s).


⌨️ 快捷键说明

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