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

📄 sacm_dvr1600.lst

📁 用凌阳的十六位单片机SPCE061A做得语音开发板,可以录播WMA格式的音乐,外挂ST39VF040存储,可以存几十首歌,有音频编解码代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
                     <      		.DEFINE		C_4Hz					0x0020		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_2Hz					0x0028		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_B1					0x0030		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_Ext2					0x0038		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      	
                     <      		.DEFINE		C_Off					0x0000		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D1					0x0040		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D2					0x0080		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D3					0x00C0		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D4					0x0100		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D5					0x0140		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D6					0x0180		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D7					0x01C0		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D8					0x0200		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D9					0x0240		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D10					0x0280		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D11					0x02C0		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D12					0x0300		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D13					0x0340		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_D14					0x0380		// P_TimerA_Ctrl, P_TimerB_Ctrl
                     <      		.DEFINE		C_TA_Div_2				0x03C0		// P_TimerA_Ctrl
                     <      		.DEFINE		C_TB_Div_2				0x03C0		// P_TimerB_Ctrl
                     <      	
                     <      	//========================================================================================
                     <      	// End of SPCE061A.inc
                     <      	//========================================================================================
                            	
                            	//=========================================================================
                            	//	常量和助记符定义
                            	//=========================================================================
                            	.DEFINE C_20M						20480000
                            	.DEFINE C_24M						24576000
                            	.DEFINE C_32M						32768000
                            	.DEFINE C_40M						40960000
                            	.DEFINE C_49M						49152000
                            	
                            	//***** 请自行修改C_SYSTEMCLOCK和C_CLOCK_SET ******************************
                            	.DEFINE C_SYSTEM_CLOCK				C_49M
                            	.DEFINE	C_CLOCK_SET					C_Fosc_49M	// value of [P_SystemClock], defined in spce061a.inc
                            	//*************************************************************************
                            	
                            	.DEFINE C_Timer_Setting_8K			65536 - (C_SYSTEM_CLOCK/2)/8000
                            	.DEFINE C_Timer_Setting_16K			65536 - (C_SYSTEM_CLOCK/2)/16000
                            	.DEFINE C_Timer_Setting_32K			65536 - (C_SYSTEM_CLOCK/2)/32000
                            	
                            	.DEFINE C_DVR1600_Timer_Setting_X1	C_Timer_Setting_8K
                            	.DEFINE C_DVR1600_Timer_Setting_X2	C_Timer_Setting_16K
                            	.DEFINE C_DVR1600_Timer_Setting_X4	C_Timer_Setting_32K
                            	
                            	//=========================================================================
                            	//	全局函数声明
                            	//=========================================================================
                            	.PUBLIC F_SACM_DVR1600_Init
                            	.PUBLIC F_SACM_DVR1600_DAC_Timer_X1
                            	.PUBLIC F_SACM_DVR1600_DAC_Timer_X2
                            	.PUBLIC F_SACM_DVR1600_ADC_Timer_X1
                            	.PUBLIC F_SACM_DVR1600_ADC_Timer_X2
                            	.PUBLIC F_SACM_DVR1600_ADC_Timer_X4
                            	.PUBLIC F_SACM_DVR1600_SendDAC1
                            	.PUBLIC F_SACM_DVR1600_SendDAC2
                            	.PUBLIC F_SACM_DVR1600_GetADC
                            	.PUBLIC F_SACM_DVR1600_EndPlay
                            	.PUBLIC F_SACM_DVR1600_EndRecord
                            	.PUBLIC F_SACM_DVR1600_RampUpDAC1
                            	.PUBLIC F_SACM_DVR1600_RampUpDAC2
                            	.PUBLIC F_SACM_DVR1600_RampDnDAC1
                            	.PUBLIC F_SACM_DVR1600_RampDnDAC2
                            	
0000961E                    	.CODE
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_Init
                            	// C调用:		无
                            	// 汇编调用:	F_SACM_DVR1600_Init
                            	// 实现功能:   (仅被库函数调用)DVR1600初始化过程
                            	// 入口参数:	无
                            	// 出口参数:	无
                            	// 破坏寄存器:	r1
                            	//======================================================
                            	F_SACM_DVR1600_Init:
0000961E 45 F1              		fir_mov off
0000961F 09 93 80 00        		r1 = C_CLOCK_SET				// Setup system clock
00009621 19 D3 13 70        		[P_SystemClock] = r1
                            		
00009623 09 93 A0 00        		r1 = 0x00A0						// Latch DAC1 by TimerA; Latch DAC2 by TimerA
00009625 19 D3 2A 70        		[P_DAC_Ctrl] = r1
                            		
00009627 45 92              		r1 = 0x0005
00009628 19 D3 15 70        		[P_ADC_Ctrl] = r1
                            	
0000962A 11 93 2D 70        		r1 = [P_INT_Mask]
0000962C 09 A3 00 20        		r1 |= C_FIQ_TMA					// Enable Timer A FIQ
0000962E 19 D3 2D 70        		[P_INT_Mask] = r1
00009630 4E F1              		fiq on
00009631 90 9A              		retf
                            	
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_DAC_Timer_X1
                            	// C调用:		无
                            	// 汇编调用:	F_SACM_DVR1600_DAC_Timer_X1
                            	// 实现功能:   (仅被库函数调用)当DAC_FIRType选择0时执行的Timer初始化过程(初始化为8000Hz)
                            	// 入口参数:	无
                            	// 出口参数:	无
                            	// 破坏寄存器:	无
                            	//======================================================
                            	F_SACM_DVR1600_DAC_Timer_X1:
00009632 88 D2              		push r1 to [sp]
00009633 70 92              		r1 = 0x0030						// TimerA CKA=Fosc/2 CKB=1 Tout:off
00009634 19 D3 0B 70        		[P_TimerA_Ctrl] = r1
00009636 09 93 00 F4        		r1= C_DVR1600_Timer_Setting_X1	// TimerA setting
00009638 19 D3 0A 70        		[P_TimerA_Data] = r1
0000963A 88 90              		pop r1 from [sp]
0000963B 90 9A              		retf
                            	
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_DAC_Timer_X2
                            	// C调用:		无
                            	// 汇编调用:	F_SACM_DVR1600_DAC_Timer_X2
                            	// 实现功能:   (仅被库函数调用)当DAC_FIRType选择1~3时执行的Timer初始化过程(初始化为16000Hz)
                            	// 入口参数:	无
                            	// 出口参数:	无
                            	// 破坏寄存器:	无
                            	//======================================================
                            	F_SACM_DVR1600_DAC_Timer_X2:
0000963C 88 D2              		push r1 to [sp]
0000963D 70 92              		r1 = 0x0030						// TimerA CKA=Fosc/2 CKB=1 Tout:off
0000963E 19 D3 0B 70        		[P_TimerA_Ctrl] = r1
00009640 09 93 00 FA        		r1= C_DVR1600_Timer_Setting_X2	// TimerA setting
00009642 19 D3 0A 70        		[P_TimerA_Data] = r1
00009644 88 90              		pop r1 from [sp]
00009645 90 9A              		retf
                            	
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_ADC_Timer_X1
                            	// C调用:		无
                            	// 汇编调用:	F_SACM_DVR1600_ADC_Timer_X1
                            	// 实现功能:   (仅被库函数调用)当ADC_FIRType选择0时执行的Timer初始化过程(初始化为8000Hz)
                            	// 入口参数:	无
                            	// 出口参数:	无
                            	// 破坏寄存器:	无
                            	//======================================================
                            	F_SACM_DVR1600_ADC_Timer_X1:
00009646 88 D2              		push r1 to [sp]
00009647 70 92              		r1 = 0x0030						// TimerA CKA=Fosc/2 CKB=1 Tout:off
00009648 19 D3 0B 70        		[P_TimerA_Ctrl] = r1
0000964A 09 93 00 F4        		r1= C_DVR1600_Timer_Setting_X1	// TimerA setting
0000964C 19 D3 0A 70        		[P_TimerA_Data] = r1
0000964E 88 90              		pop r1 from [sp]
0000964F 90 9A              		retf
                            	
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_ADC_Timer_X2
                            	// C调用:		无
                            	// 汇编调用:	F_SACM_DVR1600_ADC_Timer_X2
                            	// 实现功能:   (仅被库函数调用)当ADC_FIRType选择1时执行的Timer初始化过程(初始化为16000Hz)
                            	// 入口参数:	无
                            	// 出口参数:	无
                            	// 破坏寄存器:	无
                            	//======================================================
                            	F_SACM_DVR1600_ADC_Timer_X2:
00009650 88 D2              		push r1 to [sp]
00009651 70 92              		r1 = 0x0030						// TimerA CKA=Fosc/2 CKB=1 Tout:off
00009652 19 D3 0B 70        		[P_TimerA_Ctrl] = r1
00009654 09 93 00 FA        		r1= C_DVR1600_Timer_Setting_X2	// TimerA setting
00009656 19 D3 0A 70        		[P_TimerA_Data] = r1
00009658 88 90              		pop r1 from [sp]
00009659 90 9A              		retf
                            	
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_ADC_Timer_X4
                            	// C调用:		无
                            	// 汇编调用:	F_SACM_DVR1600_ADC_Timer_X4
                            	// 实现功能:   (仅被库函数调用)当ADC_FIRType选择2时执行的Timer初始化过程(初始化为32000Hz)
                            	// 入口参数:	无
                            	// 出口参数:	无
                            	// 破坏寄存器:	无
                            	//======================================================
                            	F_SACM_DVR1600_ADC_Timer_X4:
0000965A 88 D2              		push r1 to [sp]
0000965B 70 92              		r1 = 0x0030						// TimerA CKA=Fosc/2 CKB=1 Tout:off
0000965C 19 D3 0B 70        		[P_TimerA_Ctrl] = r1
0000965E 09 93 00 FD        		r1= C_DVR1600_Timer_Setting_X4	// TimerA setting
00009660 19 D3 0A 70        		[P_TimerA_Data] = r1
00009662 88 90              		pop r1 from [sp]
00009663 90 9A              		retf
                            	
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_SendDAC1
                            	// C调用:		无
                            	// 汇编调用:	F_SACM_DVR1600_SendDAC1
                            	// 实现功能:   (仅被库函数调用)解码后的数字量由DAC1输出过程
                            	// 入口参数:	r1 - 即将输出的数字量
                            	// 出口参数:	无
                            	// 破坏寄存器:	无
                            	//======================================================
                            	F_SACM_DVR1600_SendDAC1:
00009664 88 D2              		push r1 to [sp]
00009665 19 D3 17 70        		[P_DAC1] = r1
00009667 88 90              		pop r1 from [sp]
00009668 90 9A              		retf
                            	
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_SendDAC2
                            	// C调用:		无
                            	// 汇编调用:	F_SACM_DVR1600_SendDAC2
                            	// 实现功能:   (仅被库函数调用)解码后的数字量由DAC2输出过程
                            	// 入口参数:	r1 - 即将输出的数字量
                            	// 出口参数:	无
                            	// 破坏寄存器:	无
                            	//======================================================
                            	F_SACM_DVR1600_SendDAC2:
00009669 88 D2              		push r1 to [sp]
0000966A 19 D3 16 70        		[P_DAC2] = r1
0000966C 88 90              		pop r1 from [sp]
0000966D 90 9A              		retf
                            	
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_GetADC
                            	// C调用:		无
                            	// 汇编调用:	F_SACM_DVR1600_GetADC
                            	// 实现功能:   (仅被库函数调用)执行A/D转换
                            	// 入口参数:	无
                            	// 出口参数:	r1 - 转换得到的数字量
                            	// 破坏寄存器:	r1
                            	//======================================================
                            	F_SACM_DVR1600_GetADC:
0000966E 11 93 14 70        		r1 = [P_ADC]
00009670 90 9A              		retf
                            	
                            	
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_EndPlay
                            	// C调用:		无
                            	// 汇编调用:	SACM_DVR1600_EndPlay
                            	// 实现功能:   (仅被库函数调用)当一段语音播放完毕时执行的过程
                            	// 入口参数:	无
                            	// 出口参数:	无
                            	// 破坏寄存器:	无
                            	//======================================================
                            	F_SACM_DVR1600_EndPlay:
00009671 00 EE              		nop
00009672 90 9A              		retf
                            	
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_EndRecord
                            	// C调用:		无
                            	// 汇编调用:	SACM_DVR1600_EndRecord
                            	// 实现功能:   (仅被库函数调用)当一段语音播放完毕时执行的过程
                            	// 入口参数:	无
                            	// 出口参数:	无
                            	// 破坏寄存器:	无
                            	//======================================================
                            	F_SACM_DVR1600_EndRecord:
00009673 00 EE              		nop
00009674 90 9A              		retf
                            	
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_RampUpDAC1
                            	// C调用:		无
                            	// 汇编调用:	F_SACM_DVR1600_RampUpDAC1
                            	// 实现功能:   (仅被库函数调用)在一段语音播放开始前执行的渐入过程(DAC1)
                            	// 入口参数:	无
                            	// 出口参数:	无
                            	// 破坏寄存器:	无
                            	//======================================================
                            	F_SACM_DVR1600_RampUpDAC1:
00009675 88 D2              		push r1 to [sp]
00009676 11 93 17 70        		r1 = [P_DAC1]
00009678 09 B3 C0 FF        		r1 &= 0xffc0
0000967A 09 43 00 80        		cmp r1, 0x8000
0000967C 0B 0E              		jb ?L_Loop2
0000967D 13 5E              		je ?L_Exit
                            	?L_Loop1:
0000967E 40 F0 CF 96        		call F_SACM_RampDelay
00009680 09 23 40 00        		r1 -= 0x0040
00009682 19 D3 17 70        		[P_DAC1] = r1
00009684 09 43 00 80        		cmp r1, 0x8000
00009686 49 4E              		jne ?L_Loop1
00009687 09 EE              		jmp ?L_Exit
                            	?L_Loop2:
00009688 40 F0 CF 96        		call F_SACM_RampDelay
0000968A 09 03 40 00        		r1 += 0x0040
0000968C 19 D3 17 70        		[P_DAC1] = r1
0000968E 09 43 00 80        		cmp r1, 0x8000
00009690 49 4E              		jne ?L_Loop2
                            	?L_Exit:
00009691 88 90              		pop r1 from [sp]
00009692 90 9A              		retf
                            	
                            	//======================================================
                            	// 函数名称:	SACM_DVR1600_RampUpDAC2
                            	// C调用:		无
                            	// 汇编调用:	F_SACM_DVR1600_RampUpDAC2
                            	// 实现功能:   (仅被库函数调用)在一段语音播放开始前执行的渐入过程(DAC2)
                            	// 入口参数:	无
                            	// 出口参数:	无
                            	// 破坏寄存器:	无
                            	//======================================================
                            	F_SACM_DVR1600_RampUpDAC2:
00009693 88 D2              		push r1 to [sp]
00009694 11 93 16 70        		r1 = [P_DAC2]
00009696 09 B3 C0 FF        		r1 &= 0xffc0
00009698 09 43 00 80        		cmp r1, 0x8000
0000969A 0B 0E              		jb ?L_Loop2
0000969B 13 5E              		je ?L_Exit

⌨️ 快捷键说明

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