📄 system.lst
字号:
< .EXTERNAL F_SP_Read_INT_Status; // for further use
< .EXTERNAL F_SP_Write_INT_Status; // for further use
< .EXTERNAL F_SP_Set_INT_Vector; // for further use
< .EXTERNAL F_SP_Clear_INT_Vector; // for further use
<
< .EXTERNAL F_SP_Send_Out; //
< .EXTERNAL F_SP_Send_DAC1; //
< .EXTERNAL F_SP_Send_DAC2; //
< .EXTERNAL F_SP_Send_Two_DAC; //
< .EXTERNAL F_SP_Init_HW; //
<
< .EXTERNAL R_InterruptStatus;
<
<
< .EXTERNAL F_SP_RampUpDAC1;
< .EXTERNAL F_SP_RampDnDAC1;
< .EXTERNAL F_SP_RampUpDAC2;
< .EXTERNAL F_SP_RampDnDAC2;
<
< .EXTERNAL F_SP_InitQueue;
< .EXTERNAL F_SP_ReadQueue;
< .EXTERNAL F_SP_WriteQueue;
< .EXTERNAL F_SP_TestQueue;
<
<
<
< .EXTERNAL F_SP_Get_ADC
<
< .EXTERNAL F_SP_Set_P_TimerA_Ctrl
< .EXTERNAL F_SP_Set_P_TimerA_Data
< .EXTERNAL F_SP_Set_P_TimerB_Ctrl
< .EXTERNAL F_SP_Set_P_TimerB_Data
< .EXTERNAL F_SP_Set_P_INT_Ctrl
< .EXTERNAL F_SP_Set_P_INT_Clear
< .EXTERNAL F_SP_Set_P_SystemClock
< .EXTERNAL F_SP_Set_P_DAC_Ctrl
< .EXTERNAL F_SP_Set_P_ADC_Ctrl
<
<
<
< //--------------------------------------------
< SACM_MACRO1: .MACRO
<
< .ENDM
<
< SACM_MACRO2: .MACRO
<
< .ENDM
<
<
<
<
< //.define PC_Play_Enable_A2000 1 // Enable the PC-Play function for SACM-A2000 module
< //.define PC_Play_Enable_S480 1 // Enable the PC-Play function for SACM-S480 module
< //.define PC_Play_Enable_S240 1 // Enable the PC-Play function for SACM-S240 module
< //.define PC_Play_Enable_MS01 1 // Enable the PC-Play function for SACM-MS01 module
<
<
<
< //========================================================================================
< // End of hardware.inc
< //========================================================================================
00008224 .CODE
_System_Initial: .PROC
//系统时钟设定
00008224 09 93 98 00 r1 = 0x0098;
00008226 19 D3 13 70 [P_SystemClock] = r1;
//IO设定
//IOA0~IOA2为带下拉电阻输入,IOA6为悬浮输入
00008228 40 92 r1=0x0;
00008229 19 D3 02 70 [P_IOA_Dir]=r1;
0000822B 09 93 F0 FF r1=0xfff0;
0000822D 19 D3 03 70 [P_IOA_Attrib]=r1;
0000822F 19 D3 00 70 [P_IOA_Data]=r1;
00008231 09 93 FF FF r1=0xffff;
00008233 19 D3 07 70 [P_IOB_Dir] = r1;
00008235 19 D3 08 70 [P_IOB_Attrib] = r1;
00008237 43 92 r1=0x3;
00008238 19 D3 05 70 [P_IOB_Data] = r1;
0000823A 09 93 C3 00 r1 = 0x00C3; //采用24位地址
0000823C 19 D3 1E 70 [P_SIO_Ctrl] = r1;
//TimerA设定
0000823E 70 92 r1 = 0x0030; //clckA选择Fosc/2;屏蔽ClockB
0000823F 19 D3 0B 70 [P_TimerA_Ctrl] = r1;
00008241 09 93 FF F3 r1 = FOR_RECORD_8KHZ;
00008243 19 D3 0A 70 [P_TimerA_Data] = r1; //8kHz中断频率
//DA设定
00008245 40 92 r1 = 0;
00008246 19 D3 2A 70 [P_DAC_Ctrl] = r1; //直接将DAR锁存到DAC,通过读P_ADC触发ADC转换
//AD设定
00008248 41 92 r1 = 0x1;
00008249 19 D3 15 70 [P_ADC_Ctrl] = r1; //允许数模转换
0000824B 47 92 r1 = 0x7;
0000824C 19 D3 2B 70 [P_ADC_MUX_Ctrl] = r1; //选择Line_IN7(IOA6)输入
//中断设置
0000824E 09 93 00 20 r1 = 0x2000;
00008250 19 D3 10 70 [P_INT_Ctrl] = r1; //允许timeA的FIQ中断
00008252 90 9A retf
.ENDP
////////////////////////////////////////////
_Fir: .PROC
00008253 09 93 00 00 r1 = x0; //数据指针复位
00008255 0A 95 82 82 r2 = h0; //系数指针复位
00008257 13 97 2C 70 r3 = [P_ADC_MUX_Data]; //取AD采样数据
00008259 1B D7 17 70 [P_DAC1]=r3;
0000825B 0B B7 C0 FF r3 = r3 & 0xffc0
0000825D 63 97 r3 = r3 lsr 1;
0000825E C1 D6 [r1] = r3; //更新
0000825F 82 F3 mr = [r1]*[r2],ss,16 //FIR滤波运算
00008260 0C 09 FF 7F r4 += 0x7fff; //电压偏移
00008262 04 93 r1=r4;
00008263 90 9A retf
.ENDP
00008282 .DATA
00008282 30 00 h0: .dw 48;
00008283 2C FD h1: .dw -724;
00008284 89 FF h2: .dw -119;
00008285 25 F5 h3: .dw -2779;
00008286 E7 F4 h4: .dw -2841;
00008287 E0 F7 h5: .dw -2080;
00008288 F7 C3 h6: .dw -15369;
00008289 00 80 h7: .dw 32768;
0000828A 00 80 h8: .dw 32768;
0000828B F7 C3 h9: .dw -15369;
0000828C E0 F7 h10: .dw -2080;
0000828D E7 F4 h11: .dw -2841;
0000828E 25 F5 h12: .dw -2779;
0000828F 89 FF h13: .dw -119;
00008290 2C FD h14: .dw -724;
00008291 30 00 h15: .dw 48;
00000000 .ISRAM
00000000 01 00 x0: .dw 1;
00000001 01 00 x1: .dw 1;
00000002 01 00 x2: .dw 1;
00000003 01 00 x3: .dw 1;
00000004 01 00 x4: .dw 1;
00000005 01 00 x5: .dw 1;
00000006 01 00 x6: .dw 1;
00000007 01 00 x7: .dw 1;
00000008 01 00 x8: .dw 1;
00000009 01 00 x9: .dw 1;
0000000A 01 00 x10: .dw 1;
0000000B 01 00 x11: .dw 1;
0000000C 01 00 x12: .dw 1;
0000000D 01 00 x13: .dw 1;
0000000E 01 00 x14: .dw 1;
0000000F 01 00 x15: .dw 1;
.PUBLIC _Timer_for_Record
_Timer_for_Record:
00000010 40 F1 int off;
00000011 09 93 FF F3 r1 = FOR_RECORD_8KHZ // 采样率为 8kHz
00000013 19 D3 0A 70 [P_TimerA_Data] = r1; //
00000015 41 F1 int irq;
00000016 90 9A retf;
.PUBLIC _Timer_for_Play
_Timer_for_Play:
00000017 40 F1 int off;
00000018 09 93 FF E7 r1 = FOR_PLAY_xKHZ;
0000001A 19 D3 0A 70 [P_TimerA_Data] = r1; //
0000001C 41 F1 int irq;
0000001D 90 9A retf;
0 error(s), 0 warning(s).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -