📄 sacmv32.lst
字号:
00008A7C E1 92 r1 = D:[r1] // Get data
00008A7D 90 9A retf
//////////////////////////////////////////////////////////////////
// Function: Delay
// void SP_Delay()
//////////////////////////////////////////////////////////////////
_SP_Delay: .PROC
F_SP_Delay:
// User define
00008A7E 90 9A retf
.ENDP
//////////////////////////////////////////////////////
// SACM initial functions
//////////////////////////////////////////////////////
.public F_SP_SACM_A1600_Init_
.PUBLIC F_SP_SACM_A2000_Init_
.PUBLIC F_SP_SACM_S530_Init_
.PUBLIC F_SP_SACM_S480_Init_
.PUBLIC F_SP_SACM_S240_Init_
.public F_SP_SACM_S200_Init_
.PUBLIC F_SP_SACM_MS01_Init_
.PUBLIC F_SP_PlayMode0_
.PUBLIC F_SP_PlayMode1_
.PUBLIC F_SP_PlayMode2_
.PUBLIC F_SP_PlayMode3_
.PUBLIC F_SP_SACM_DVR_Init_
.PUBLIC F_SP_SACM_DVR_Rec_Init_
.PUBLIC F_SP_SACM_DVR_Play_Init_
//----------------------------------------------------
// A1600
//----------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
// Function: The partial code of hardware setting of SACM_A1600_Initial()
// or F_SACM_A1600_Initial:
// Note: The following functions are the partial code of original
// initial subroutine. (H/W setting part)
//
// Ex: F_SACM_A1600_Initial:
// ...
// call F_SP_SACM_A1600_Init_ : S480/S240/MS01 is same
// ...
// retf
////////////////////////////////////////////////////////////////////////////////
F_SP_SACM_A1600_Init_:
00008A7F 09 93 80 00 R1 = C_SystemClock; // 24MHz, Fcpu=Fosc
00008A81 19 D3 13 70 [P_SystemClock]=R1 // Frequency 20MHz
00008A83 70 92 R1 = 0x0030 // TimerA CKA=Fosc/2 CKB=1 Tout:off
00008A84 19 D3 0B 70 [P_TimerA_Ctrl] = R1 // Initial Timer A
00008A86 09 93 FF F9 R1 = C_A1600_Timer_Setting // 16K
00008A88 19 D3 0A 70 [P_TimerA_Data] = R1
00008A8A 09 93 A8 00 R1 = 0x00A8 // Set the DAC Ctrl
00008A8C 19 D3 2A 70 [P_DAC_Ctrl] = R1
00008A8E 09 93 FF FF R1 = 0xffff
00008A90 19 D3 11 70 [P_INT_Clear] = R1 // Clear interrupt occuiped events
00008A92 40 92 R1 =0x0000 //
.if BODY_TYPE == SPCE061A
00008A93 11 93 2D 70 R1 = [P_INT_Mask] //
.endif
.if BODY_TYPE == SPCE500A
R1 = [R_InterruptStatus] //
.endif
00008A95 09 A3 00 20 R1 |= C_FIQ_TMA // Enable Timer A FIQ
//R1 |= C_IRQ4_1KHz
00008A97 19 D3 CB 00 [R_InterruptStatus] = R1 //
00008A99 19 D3 10 70 [P_INT_Ctrl] = R1 //
00008A9B 90 9A RETF
//----------------------------------------------------
// A2000
//----------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
// Function: The partial code of hardware setting of SACM_A2000_Initial()
// or F_SACM_A2000_Initial:
// Note: The following functions are the partial code of original
// initial subroutine. (H/W setting part)
//
// Ex: F_SACM_A2000_Initial:
// ...
// call F_SP_SACM_A2000_Init_ : S480/S240/MS01 is same
// ...
// retf
////////////////////////////////////////////////////////////////////////////////
F_SP_SACM_A2000_Init_:
00008A9C 09 93 80 00 R1=C_SystemClock; // 24MHz, Fcpu=Fosc
00008A9E 19 D3 13 70 [P_SystemClock]=R1 // Frequency 20MHz
00008AA0 70 92 R1 = 0x0030 // TimerA CKA=Fosc/2 CKB=1 Tout:off
00008AA1 19 D3 0B 70 [P_TimerA_Ctrl] = R1 // Initial Timer A
00008AA3 09 93 FF F9 R1 = C_A2000_Timer_Setting // 16K
00008AA5 19 D3 0A 70 [P_TimerA_Data] = R1
00008AA7 09 93 A8 00 R1 = 0x00A8 // Set the DAC Ctrl
00008AA9 19 D3 2A 70 [P_DAC_Ctrl] = R1
00008AAB 09 93 FF FF R1 = 0xffff
00008AAD 19 D3 11 70 [P_INT_Clear] = R1 // Clear interrupt occuiped events
.if BODY_TYPE == SPCE061A
00008AAF 11 93 2D 70 R1 = [P_INT_Mask] //
.endif
.if BODY_TYPE == SPCE500A
R1 = [R_InterruptStatus] //
.endif
00008AB1 09 A3 00 20 R1 |= C_FIQ_TMA // Enable Timer A FIQ
00008AB3 19 D3 CB 00 [R_InterruptStatus] = R1 //
00008AB5 19 D3 10 70 [P_INT_Ctrl] = R1 //
00008AB7 90 9A RETF
//----------------------------------------------------
// A3200 1ch
//----------------------------------------------------
.public F_SP_SACM_A3200_Init_
.public F_SACM_A3200_SetTimerSrc
.public F_SACM_A3200_SetIntSrc
.public F_SACM_A3200_SendDecodedData
//////////////////////////////////////////////////////////////////
// Function: The partial code of hardware setting of
// SACM_A3200_Initial() or F_SACM_A3200_Initial:
// Single Channel A3200
//////////////////////////////////////////////////////////////////
F_SP_SACM_A3200_Init_: .proc
// R1 = 0x0020; // 20MHz
// R1 = 0x0000; // 24MHz
// R1 = 0x0040; // 32MHz
// R1 = 0x0060; // 40MHz
// R1 = 0x0080; // 49MHz
00008AB8 09 93 80 00 R1 = C_SystemClock
00008ABA 19 D3 13 70 [P_SystemClock] = R1;
00008ABC 09 93 A4 00 R1 = 0x00A4; // Latch DAR1 data to DAC1 by TimerA
00008ABE 19 D3 2A 70 [P_DAC_Ctrl] = R1; // Latch DAR2 data to DAC2 by TimerA
00008AC0 90 9A RETF;
.endp
//--------------------------------------------------------------------
//-- Function: F_SACM_A3200_SetTimerSrc
//-- Parameter: R1 : TimerData
//-- Return: NONE
//-- Description: This function called by A3200 library to set timer A
//--------------------------------------------------------------------
F_SACM_A3200_SetTimerSrc: .proc
00008AC1 88 D4 push R2 to [sp];
00008AC2 70 94 R2 = 0x0030;
00008AC3 1A D5 0B 70 [P_TimerA_Ctrl] = R2; // select Fosc/2 as Timer A clock source
00008AC5 19 D3 0A 70 [P_TimerA_Data] = R1;
00008AC7 88 92 pop R2 from [sp];
00008AC8 90 9A retf;
.endp
//--------------------------------------------------------------------
//-- Function: F_SACM_A3200_SetIntSrc
//-- Parameter: NONE
//-- Return: NONE
//-- Description: This function called by A3200 library to set
// interrupt
//--------------------------------------------------------------------
F_SACM_A3200_SetIntSrc: .proc
00008AC9 88 D2 push R1 to [SP];
.if BODY_TYPE == SPCE061A
00008ACA 11 93 2D 70 R1 = [P_INT_Mask] //
.endif
.if BODY_TYPE == SPCE500A
R1 = [R_InterruptStatus] //
.endif
00008ACC 09 A3 00 10 R1 |= C_IRQ1_TMA;
00008ACE 19 D3 CB 00 [R_InterruptStatus] = R1;
00008AD0 19 D3 10 70 [P_INT_Ctrl] = R1;
00008AD2 88 90 pop R1 from [SP];
00008AD3 90 9A RETF;
.endp
//--------------------------------------------------------------------
//-- Function: F_SACM_A3200_SendDecodedData
//-- Parameter: R1 : decoded sample
//-- Return: NONE
//-- Description: This function called by A3200 library to send
// decoded data to DACs
//--------------------------------------------------------------------
F_SACM_A3200_SendDecodedData: .proc
00008AD4 19 D3 17 70 [P_DAC1] = R1;
00008AD6 19 D3 16 70 [P_DAC2] = R1;
00008AD8 90 9A RETF;
.endp
//----------------------------------------------------
// A3200 2ch
//----------------------------------------------------
.public F_SP_SACM_2Ch_A3200_Init_
.public F_SACM_A3200_Ch1_SetTimerSrc
.public F_SACM_A3200_Ch1_SetIntSrc
.public F_SACM_A3200_Ch1_SendDecodedData
.public F_SACM_A3200_Ch2_SetTimerSrc
.public
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -