📄 sacm_dvr1600.lst
字号:
< .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 + -