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

📄 text1.asm

📁 凌阳单片机对语音的处理和调用
💻 ASM
📖 第 1 页 / 共 2 页
字号:
//  62  			//---减小音量
//  63  			case 1:
//  64  				if(VolumeValue>0)

LM19:
	     .stabn 68,0,64,LM19-_PlaySpeech
	     SR = SR & 63             	// [0:64]  
	     SR = SR | high6 _VolumeValue	// [2:64]  VolumeValue
	     R4 = offset _VolumeValue 	// [6:64]  VolumeValue
	     R4 = DS:[R4]             	// [10:64]  
	     cmp R4, 0                	// [16:64]  
	     je L_1_20                	// [18:64]  
BB16_PU1:	// 0x9b
// BB:16 cycle count: 34
// 	.loc	0	65	0
//  65  					VolumeValue-=1;

LM20:
	     .stabn 68,0,65,LM20-_PlaySpeech
	     SR = SR & 63             	// [0:65]  
	     SR = SR | high6 _VolumeValue	// [2:65]  VolumeValue
	     R4 = offset _VolumeValue 	// [6:65]  VolumeValue
	     R4 = DS:[R4]             	// [10:65]  
	     R4 = R4 - 1              	// [16:65]  
	     SR = SR & 63             	// [18:65]  
	     SR = SR | high6 _VolumeValue	// [20:65]  VolumeValue
	     R3 = offset _VolumeValue 	// [24:65]  VolumeValue
	     DS:[R3] = R4             	// [28:65]  
L_1_20:	// 0xa8
// BB:17 cycle count: 37
// 	.loc	0	66	0
//  66  				T_SACM_DVR1600_Volume(VolumeValue);

LM21:
	     .stabn 68,0,66,LM21-_PlaySpeech
	     SP = SP - 1              	// [0:66]  
	     SR = SR & 63             	// [2:66]  
	     SR = SR | high6 _VolumeValue	// [4:66]  VolumeValue
	     R4 = offset _VolumeValue 	// [8:66]  VolumeValue
	     R3 = DS:[R4]             	// [12:66]  
	     R4 = SP + 1              	// [18:66]  
	     [R4] = R3                	// [22:66]  
	     call _T_SACM_DVR1600_Volume	// [28:66]  T_SACM_DVR1600_Volume
BB18_PU1:	// 0xb4
// BB:18 cycle count: 6
	     SP = SP + 1              	// [0:66]  
// 	.loc	0	67	0
//  67  			break;			

LM22:
	     .stabn 68,0,67,LM22-_PlaySpeech
	     jmp Lt_1_2               	// [2:67]  
Lt_1_4:	// 0xb6
// BB:19 cycle count: 9
// 	.loc	0	70	0
//  68  			//---暂停播放
//  69  			case 2:
//  70  				T_SACM_DVR1600_Pause();

LM23:
	     .stabn 68,0,70,LM23-_PlaySpeech
	     call _T_SACM_DVR1600_Pause	// [0:70]  T_SACM_DVR1600_Pause
BB20_PU1:	// 0xb8
// BB:20 cycle count: 4
// 	.loc	0	71	0
//  71  			break;			

LM24:
	     .stabn 68,0,71,LM24-_PlaySpeech
	     jmp Lt_1_2               	// [0:71]  
Lt_1_5:	// 0xb9
// BB:21 cycle count: 9
// 	.loc	0	74	0
//  72  			//---继续播放
//  73              case 3:
//  74              	T_SACM_DVR1600_Resume();

LM25:
	     .stabn 68,0,74,LM25-_PlaySpeech
	     call _T_SACM_DVR1600_Resume	// [0:74]  T_SACM_DVR1600_Resume
BB22_PU1:	// 0xbb
// BB:22 cycle count: 4
// 	.loc	0	75	0
//  75              break;            

LM26:
	     .stabn 68,0,75,LM26-_PlaySpeech
	     jmp Lt_1_2               	// [0:75]  
Lt_1_6:	// 0xbc
// BB:23 cycle count: 14
// 	.loc	0	78	0
//  76              //---有非音量键按下退出等待键盘处理
//  77  			case 4:
//  78  				bit_exit=0x55;

LM27:
	     .stabn 68,0,78,LM27-_PlaySpeech
	     R4 = 85                  	// [0:78]  
	     [BP + 0] = R4            	// [4:78]  bit_exit
// 	.loc	0	79	0
//  79  			break;			

LM28:
	     .stabn 68,0,79,LM28-_PlaySpeech
	     jmp Lt_1_2               	// [10:79]  
Lt_1_7:	// 0xc0
// BB:24 cycle count: 22
// 	.loc	0	81	0
//  80  			default:
//  81  				data2=0;

LM29:
	     .stabn 68,0,81,LM29-_PlaySpeech
	     R3 = 0                   	// [0:81]  
	     SR = SR & 63             	// [2:81]  
	     SR = SR | high6 _data2   	// [4:81]  data2
	     R4 = offset _data2       	// [8:81]  data2
	     DS:[R4] = R3             	// [12:81]  
// 	.loc	0	82	0
//  82  			break;

LM30:
	     .stabn 68,0,82,LM30-_PlaySpeech
	     jmp Lt_1_2               	// [18:82]  
Lt_1_2:	// 0xc8
// BB:25 cycle count: 14
// 	.loc	0	84	0
//  83  		}
//  84  		if (bit_exit==0x55)

LM31:
	     .stabn 68,0,84,LM31-_PlaySpeech
	     R4 = [BP + 0]            	// [0:84]  bit_exit
	     cmp R4, 85               	// [6:84]  
	     jne L_1_21               	// [10:84]  
BB26_PU1:	// 0xcc
// BB:26 cycle count: 4
// 	.loc	0	85	0
//  85  			break;

LM32:
	     .stabn 68,0,85,LM32-_PlaySpeech
	     jmp Lt_1_8               	// [0:85]  
L_1_21:	// 0xcd
// BB:27 cycle count: 9
// 	.loc	0	86	0
//  86  		T_SACM_DVR1600_ServiceLoop();        //---在汇编中调用解码库函数

LM33:
	     .stabn 68,0,86,LM33-_PlaySpeech
	     call _T_SACM_DVR1600_ServiceLoop	// [0:86]  T_SACM_DVR1600_ServiceLoop
BB28_PU1:	// 0xcf
// BB:28 cycle count: 9
// 	.loc	0	87	0
//  87  		FillRamBuf();                        //---手动模式下填写播放内容 入口:无  出口:无

LM34:
	     .stabn 68,0,87,LM34-_PlaySpeech
	     call _FillRamBuf         	// [0:87]  FillRamBuf
BB29_PU1:	// 0xd1
// BB:29 cycle count: 9
// 	.loc	0	88	0
//  88  		T_SACM_DVR1600_Status();  //---在汇编中调用播放状态库函数 返回播放状态

LM35:
	     .stabn 68,0,88,LM35-_PlaySpeech
	     call _T_SACM_DVR1600_Status	// [0:88]  T_SACM_DVR1600_Status
BB30_PU1:	// 0xd3
// BB:30 cycle count: 5
	     goto L_1_17              	// [0:88]  
L_1_18:	// 0xd5
Lt_1_8:	// 0xd5
// BB:31 cycle count: 9
// 	.loc	0	91	0
//  89  	}
//  90  	    //---播放结束后复位一些用到的寄存器	 
//  91  	T_Stop_Play();

LM36:
	     .stabn 68,0,91,LM36-_PlaySpeech
	     call _T_Stop_Play        	// [0:91]  T_Stop_Play
BB32_PU1:	// 0xd7
// BB:32 cycle count: 16
	     SP = SP + 2              	// [0:91]  
	     pop BP from [SP]         	// [2:91]  
	     retf                     	// [8:91]  
LBE2:
	.endp	
	     .stabs "Volume:p4",160,0,0,5
	     .stabs "SongIndex:p4",160,0,0,6
	     .stabn 192,0,0,LBB2-_PlaySpeech
	     .stabs "key_value:4",128,0,0,1
	     .stabs "bit_exit:4",128,0,0,0
	     .stabn 224,0,0,LBE2-_PlaySpeech
LME2:
	     .stabf LME2-_PlaySpeech
.code
	     .stabs "main:F1",36,0,0,_main

	// Program Unit: main
.public	_main
_main: .proc	
	     .stabn 0xa6,0,0,2
	// uiErr = 0
	// i = 1
	// old_frame_pointer = 2
	// return_address = 3
// 	.loc	0	96	0
//  92  }
//  93  
//  94  
//  95  main()
//  96  {

LM37:
	     .stabn 68,0,96,LM37-_main
BB1_PU2:	// 0xda
// BB:1 cycle count: 82
	     push BP to [SP]          	// [0:96]  
	     SP = SP - 2              	// [6:96]  
	     BP = SP + 1              	// [8:96]  
LBB3:
// 	.loc	0	97	0
//  97  	U16	uiErr=0,i;

LM38:
	     .stabn 68,0,97,LM38-_main
	     R4 = 0                   	// [12:97]  
	     [BP + 0] = R4            	// [14:97]  uiErr
// 	.loc	0	98	0
//  98  	VolumeValue=0;

LM39:
	     .stabn 68,0,98,LM39-_main
	     R3 = 0                   	// [20:98]  
	     SR = SR & 63             	// [22:98]  
	     SR = SR | high6 _VolumeValue	// [24:98]  VolumeValue
	     R4 = offset _VolumeValue 	// [28:98]  VolumeValue
	     DS:[R4] = R3             	// [32:98]  
// 	.loc	0	99	0
//  99  	data1=0;data2=0;

LM40:
	     .stabn 68,0,99,LM40-_main
	     R3 = 0                   	// [38:99]  
	     SR = SR & 63             	// [40:99]  
	     SR = SR | high6 _data1   	// [42:99]  data1
	     R4 = offset _data1       	// [46:99]  data1
	     DS:[R4] = R3             	// [50:99]  
	     R3 = 0                   	// [56:99]  
	     SR = SR & 63             	// [58:99]  
	     SR = SR | high6 _data2   	// [60:99]  data2
	     R4 = offset _data2       	// [64:99]  data2
	     DS:[R4] = R3             	// [68:99]  
// 	.loc	0	101	0
// 100  	
// 101  	for (i=0;i<57;i++)

LM41:
	     .stabn 68,0,101,LM41-_main
	     R4 = 0                   	// [74:101]  
	     [BP + 1] = R4            	// [76:101]  i
L_2_2:	// 0xf7
// BB:2 cycle count: 12
	     R4 = [BP + 1]            	// [0:101]  i
	     cmp R4, 56               	// [6:101]  
	     ja L_2_3                 	// [8:101]  
BB3_PU2:	// 0xfa
// BB:3 cycle count: 53
// 	.loc	0	103	0
// 102  	{
// 103  	    PlaySpeech(i,VolumeValue);

LM42:
	     .stabn 68,0,103,LM42-_main
	     SP = SP - 2              	// [0:103]  
	     R3 = [BP + 1]            	// [2:103]  i
	     R4 = SP + 1              	// [8:103]  
	     [R4] = R3                	// [12:103]  
	     SR = SR & 63             	// [18:103]  
	     SR = SR | high6 _VolumeValue	// [20:103]  VolumeValue
	     R4 = offset _VolumeValue 	// [24:103]  VolumeValue
	     R3 = DS:[R4]             	// [28:103]  
	     R4 = SP + 2              	// [34:103]  
	     [R4] = R3                	// [38:103]  
	     call _PlaySpeech         	// [44:103]  PlaySpeech
BB4_PU2:	// 0x10a
// BB:4 cycle count: 2
	     SP = SP + 2              	// [0:103]  
Lt_2_1:	// 0x10b
// BB:5 cycle count: 18
// 	.loc	0	101	0

LM43:
	     .stabn 68,0,101,LM43-_main
	     R4 = [BP + 1]            	// [0:101]  i
	     R4 = R4 + 1              	// [6:101]  
	     [BP + 1] = R4            	// [8:101]  i
	     jmp L_2_2                	// [14:101]  
L_2_3:	// 0x10f
// BB:6 cycle count: 35
// 	.loc	0	106	0
// 104  	}
// 105  	
// 106  	PlaySpeech(1,1);

LM44:
	     .stabn 68,0,106,LM44-_main
	     SP = SP - 2              	// [0:106]  
	     R3 = 1                   	// [2:106]  
	     R4 = SP + 1              	// [4:106]  
	     [R4] = R3                	// [8:106]  
	     R3 = 1                   	// [14:106]  
	     R4 = SP + 2              	// [16:106]  
	     [R4] = R3                	// [20:106]  
	     call _PlaySpeech         	// [26:106]  PlaySpeech
BB7_PU2:	// 0x11a
// BB:7 cycle count: 2
	     SP = SP + 2              	// [0:106]  
L_2_4:	// 0x11b
// BB:8 cycle count: 4
// 	.loc	0	107	0
// 107  	while(1) ;

LM45:
	     .stabn 68,0,107,LM45-_main
	     jmp L_2_4                	// [0:107]  
L_2_5:	// 0x11c
// BB:9 cycle count: 16
	     SP = SP + 2              	// [0:107]  
	     pop BP from [SP]         	// [2:107]  
	     retf                     	// [8:107]  
LBE3:
	.endp	
	     .stabn 192,0,0,LBB3-_main
	     .stabs "uiErr:4",128,0,0,0
	     .stabs "i:4",128,0,0,1
	     .stabn 224,0,0,LBE3-_main
LME3:
	     .stabf LME3-_main
.external _InilSpeech
.external _T_SACM_DVR1600_Status
.external _T_SACM_DVR1600_Volume
.external _T_SACM_DVR1600_Pause
.external _T_SACM_DVR1600_Resume
.external _T_SACM_DVR1600_ServiceLoop
.external _FillRamBuf
.external _T_Stop_Play

⌨️ 快捷键说明

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