📄 sacmv32.lst
字号:
.PUBLIC _SP_GetResource
.PUBLIC F_RampUpDAC1
.PUBLIC F_RampDnDAC1
.PUBLIC F_RampUpDAC2
.PUBLIC F_RampDnDAC2
.PUBLIC _STD_RampUpDAC1
.PUBLIC _STD_RampDnDAC1
.PUBLIC _STD_RampUpDAC2
.PUBLIC _STD_RampDnDAC2
/////////////////////////////////////////////////////////////////
// Note: This register map to the P_INT_Ctrl(0x7010)
// User's interrupt setting have to combine with this register
// while co-work with SACM library.
//
// See. following function for example:
// F_SP_SACM_A2000_Init_:
// F_SP_SACM_S480_Init_:
// F_SP_SACM_S240_Init_:
// F_SP_SACM_MS01_Init_:
// F_SP_SACM_DVR_Init_:
//////////////////////////////////////////////////
.external R_InterruptStatus // declared in spce.asm
//////////////////////////////////////////////////
.define C_QueueSize 50
00000091 .RAM
00000091 00 00 .VAR R_Queue
00000092 00 00 00 00 .DW C_QueueSize-1 DUP(0)
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 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00
000000C3 00 00 .VAR R_ReadIndex
000000C4 00 00 .VAR R_WriteIndex
000089A7 .CODE
//////////////////////////////////////////////////////
// Ramp Functions
//////////////////////////////////////////////////////
////////////////////////////////////////////////////////
// Function: _SP_RampUpDAC1
// Description: Ramp Up before using DAC to avoid "bow" sound
// from speaker
// Syntax : SP_RampUpDAC1()
// Destory: R1,R2
////////////////////////////////////////////////////////
_SP_RampUpDAC1: .PROC
F_SP_RampUpDAC1:
000089A7 90 D4 push r1,r2 to [sp]
000089A8 11 93 17 70 r1=[P_DAC1]
000089AA 09 B3 C0 FF r1 &= ~0x003f
000089AC 09 43 00 80 cmp r1,0x8000
000089AE 0E 0E jb L_RU_NormalUp
000089AF 19 5E je L_RU_End
L_RU_DownLoop:
000089B0 40 F0 13 8A call F_Delay
000089B2 41 94 r2 = 0x0001
000089B3 1A D5 12 70 [P_Watchdog_Clear] = r2
000089B5 09 23 40 00 r1 -= 0x40
000089B7 19 D3 17 70 [P_DAC1] = r1
000089B9 09 43 00 80 cmp r1,0x8000
000089BB 4C 4E jne L_RU_DownLoop
L_RD_DownEnd:
000089BC 0C EE jmp L_RU_End
L_RU_NormalUp:
L_RU_Loop:
000089BD 40 F0 13 8A call F_Delay
000089BF 41 94 r2 = 0x0001
000089C0 1A D5 12 70 [P_Watchdog_Clear] = r2
000089C2 09 03 40 00 r1 += 0x40
000089C4 19 D3 17 70 [P_DAC1] = r1
000089C6 09 43 00 80 cmp r1, 0x8000
000089C8 4C 4E jne L_RU_Loop
L_RU_End:
000089C9 90 90 pop r1,r2 from [sp]
000089CA 90 9A retf
.ENDP
////////////////////////////////////////////////////////
// Function: _SP_RampDnDAC1
// Description: Ramp down after using DAC to avoid "bow" sound
// from speaker
// Syntax : SP_RampDnDAC1()
// Destory: R1,R2
////////////////////////////////////////////////////////
_SP_RampDnDAC1: .PROC
F_SP_RampDnDAC1:
000089CB 90 D4 push r1,r2 to [sp]
//int off
000089CC 11 93 17 70 r1 = [P_DAC1]
000089CE 09 B3 C0 FF r1 &= ~0x003F
000089D0 0A 5E jz L_RD_End
L_RD_Loop:
000089D1 40 F0 13 8A call F_Delay
000089D3 41 94 r2 = 0x0001
000089D4 1A D5 12 70 [P_Watchdog_Clear] = r2
000089D6 09 23 40 00 r1 -= 0x40
000089D8 19 D3 17 70 [P_DAC1] = r1
000089DA 4A 4E jnz L_RD_Loop
L_RD_End:
000089DB 90 90 pop r1,r2 from [sp]
000089DC 90 9A retf
.ENDP
////////////////////////////////////////////////////////
// Function: _SP_RampUpDAC2
// Description: Ramp Up before using DAC to avoid "bow" sound
// from speaker
// Syntax : SP_RampUpDAC2()
// Destory: R1,R2
////////////////////////////////////////////////////////
_SP_RampUpDAC2: .PROC
F_SP_RampUpDAC2:
000089DD 90 D4 push r1,r2 to [sp]
000089DE 11 93 16 70 r1=[P_DAC2]
000089E0 09 B3 C0 FF r1 &= ~0x003f
000089E2 09 43 00 80 cmp r1,0x8000
000089E4 0E 0E jb L_RU_NormalUp_
000089E5 5D 5E je L_RU_End
L_RU_DownLoop_:
000089E6 40 F0 13 8A call F_Delay
000089E8 41 94 r2 = 0x0001
000089E9 1A D5 12 70 [P_Watchdog_Clear] = r2
000089EB 09 23 40 00 r1 -= 0x40
000089ED 19 D3 16 70 [P_DAC2] = r1
000089EF 09 43 00 80 cmp r1,0x8000
000089F1 4C 4E jne L_RU_DownLoop_
L_RD_DownEnd_:
000089F2 0C EE jmp L_RU_End_
L_RU_NormalUp_:
L_RU_Loop_:
000089F3 40 F0 13 8A call F_Delay
000089F5 41 94 r2 = 0x0001
000089F6 1A D5 12 70 [P_Watchdog_Clear] = r2
000089F8 09 03 40 00 r1 += 0x40
000089FA 19 D3 16 70 [P_DAC2] = r1
000089FC 09 43 00 80 cmp r1, 0x8000
000089FE 4C 4E jne L_RU_Loop_
L_RU_End_:
000089FF 90 90 pop r1,r2 from [sp]
00008A00 90 9A retf
.ENDP
////////////////////////////////////////////////////////
// Function: _SP_RampDnDAC2
// Description: Ramp down after using DAC to avoid "bow" sound
// from speaker
// Syntax : SP_RampDnDAC2()
// Destory: R1,R2
////////////////////////////////////////////////////////
_SP_RampDnDAC2: .PROC
F_SP_RampDnDAC2:
//int off
00008A01 90 D4 push r1,r2 to [sp]
00008A02 11 93 16 70 r1 = [P_DAC2]
00008A04 09 B3 C0 FF r1 &= ~0x003F
00008A06 0A 5E jz L_RD_End_
L_RD_Loop_:
00008A07 40 F0 13 8A call F_Delay
00008A09 41 94 r2 = 0x0001
00008A0A 1A D5 12 70 [P_Watchdog_Clear] = r2
00008A0C 09 23 40 00 r1 -= 0x40
00008A0E 19 D3 16 70 [P_DAC2] = r1
00008A10 4A 4E jnz L_RD_Loop_
L_RD_End_:
00008A11 90 90 pop r1,r2 from [sp]
00008A12 90 9A retf
.ENDP
//-------------------------------------------------------
// Function: F_Delay
// Description: Provide delay for Ramp up/down
// The delay time is adjustable by adjusting C_RampDelay
// Destory: R1
//-------------------------------------------------------
F_Delay:
00008A13 88 D2 push r1 to [sp]
00008A14 09 93 50 00 r1 = C_RampDelay; // Ramp Up/Dn delay per step
L_D_Loop:
00008A16 41 22 r1 -= 1
00008A17 42 4E jnz L_D_Loop
00008A18 88 90 pop r1 from [sp]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -