📄 mp3.lst
字号:
C51 COMPILER V8.08 MP3 07/28/2007 11:42:16 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MP3
OBJECT MODULE PLACED IN mp3.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mp3.c OMF2 OPTIMIZE(6,SPEED) BROWSE VARBANKING DEBUG
line level source
1 #include "dp8051.h"
2 #include "config.h"
3 #include "absacc.h"
4 #include "constant.h"
5 #include "variable.h"
6 #include "function.h"
7 #include "sdhost.h"
8 #include "sssmp3_regs.h"
9 #include "fat.h"
10 #include "mp3_appl.h"
11 //***********************************************
12 //***********************************************
13 /*code void (*MusicMode_table[])() =
14 {
15 MP3EQU_Normal,
16 MP3EQU_Rock,
17 MP3EQU_Jazz,
18 MP3EQU_Classic,
19 MP3EQU_Pop
20 };*/
21 /************************************************
22 函 数 名: MP3EQU_Normal()
23 功 能:正常
24 说 明:
25 调 用:
26 全局变量:
27 入口参数:无
28 出口参数:无
29 返 回 值:无
30 ************************************************/
31 void MP3EQU_Normal(void)
32 {
33 1 MP3_EQBAND060 = 0x1F;
34 1 MP3_EQBAND170 = 0x1F;
35 1 MP3_EQBAND310 = 0x1F;
36 1 MP3_EQBAND600 = 0x1F;
37 1 MP3_EQBAND01K = 0x1F;
38 1 MP3_EQBAND03K = 0x1F;
39 1 MP3_EQBAND06K = 0x1F;
40 1 MP3_EQBAND12K = 0x1F;
41 1 MP3_EQBAND14K = 0x1F;
42 1 MP3_EQBAND16K = 0x1F;
43 1 }
44 /************************************************
45 函 数 名: MP3EQU_Rock()
46 功 能:摇滚
47 说 明:
48 调 用:
49 全局变量:
50 入口参数:无
51 出口参数:无
52 返 回 值:无
53 ************************************************/
54 void MP3EQU_Rock(void)
55 {
C51 COMPILER V8.08 MP3 07/28/2007 11:42:16 PAGE 2
56 1 MP3_EQBAND060 = 0x17;
57 1 MP3_EQBAND170 = 0x1A;
58 1 MP3_EQBAND310 = 0x25;
59 1 MP3_EQBAND600 = 0x28;
60 1 MP3_EQBAND01K = 0x23;
61 1 MP3_EQBAND03K = 0x1C;
62 1 MP3_EQBAND06K = 0x13;
63 1 MP3_EQBAND12K = 0x0F;
64 1 MP3_EQBAND14K = 0x0F;
65 1 MP3_EQBAND16K = 0x0F;
66 1 }
67 /************************************************
68 函 数 名: MP3EQU_Jazz()
69 功 能:爵士
70 说 明:
71 调 用:
72 全局变量:
73 入口参数:无
74 出口参数:无
75 返 回 值:无
76 ************************************************/
77 void MP3EQU_Jazz(void)
78 {
79 1 MP3_EQBAND060 = 0x1F;
80 1 MP3_EQBAND170 = 0x1F;
81 1 MP3_EQBAND310 = 0x1C;
82 1 MP3_EQBAND600 = 0x1C;
83 1 MP3_EQBAND01K = 0x1C;
84 1 MP3_EQBAND03K = 0x1E;
85 1 MP3_EQBAND06K = 0x1C;
86 1 MP3_EQBAND12K = 0x1A;
87 1 MP3_EQBAND14K = 0x19;
88 1 MP3_EQBAND16K = 0x17;
89 1 }
90 /************************************************
91 函 数 名: MP3EQU_Classic()
92 功 能:经典
93 说 明:
94 调 用:
95 全局变量:
96 入口参数:无
97 出口参数:无
98 返 回 值:无
99 ************************************************/
100 void MP3EQU_Classic(void)
101 {
102 1 MP3_EQBAND060 = 0x1F;
103 1 MP3_EQBAND170 = 0x1F;
104 1 MP3_EQBAND310 = 0x1F;
105 1 MP3_EQBAND600 = 0x1F;
106 1 MP3_EQBAND01K = 0x1F;
107 1 MP3_EQBAND03K = 0x1F;
108 1 MP3_EQBAND06K = 0x14;
109 1 MP3_EQBAND12K = 0x14;
110 1 MP3_EQBAND14K = 0x14;
111 1 MP3_EQBAND16K = 0x30;
112 1 }
113 /************************************************
114 函 数 名: MP3EQU_Pop()
115 功 能:流行
116 说 明:
117 调 用:
C51 COMPILER V8.08 MP3 07/28/2007 11:42:16 PAGE 3
118 全局变量:
119 入口参数:无
120 出口参数:无
121 返 回 值:无
122 ************************************************/
123 void MP3EQU_Pop(void)
124 {
125 1 MP3_EQBAND060 = 0x23;
126 1 MP3_EQBAND170 = 0x1C;
127 1 MP3_EQBAND310 = 0x17;
128 1 MP3_EQBAND600 = 0x15;
129 1 MP3_EQBAND01K = 0x17;
130 1 MP3_EQBAND03K = 0x23;
131 1 MP3_EQBAND06K = 0x25;
132 1 MP3_EQBAND12K = 0x25;
133 1 MP3_EQBAND14K = 0x25;
134 1 MP3_EQBAND16K = 0x25;
135 1 }
136 /************************************************
137 函 数 名: MP3_MusicPlayMode()
138 功 能:MP3
139 说 明:
140 调 用:
141 全局变量:
142 入口参数:无
143 出口参数:无
144 返 回 值:无
145 ************************************************/
146 void MP3_MusicPlayMode(void)
147 {
148 1 varAl.MusicMode++;
149 1 if(varAl.MusicMode == 0xFF)
150 1 varAl.MusicMode = 0;
151 1 //MusicMode_table[varAl.MusicMode % 5]();
152 1 switch(varAl.MusicMode % 5)
153 1 {
154 2 case 0x00:
155 2 MP3EQU_Normal();
156 2 break;
157 2 case 0x01:
158 2 MP3EQU_Rock();
159 2 break;
160 2 case 0x02:
161 2 MP3EQU_Jazz();
162 2 break;
163 2 case 0x03:
164 2 MP3EQU_Classic();
165 2 break;
166 2 case 0x04:
167 2 MP3EQU_Pop();
168 2 break;
169 2 }
170 1 }
171 /************************************************
172 函 数 名: MP3_PrevInit()
173 功 能:MP3
174 说 明:
175 调 用:
176 全局变量:
177 入口参数:无
178 出口参数:无
179 返 回 值:无
C51 COMPILER V8.08 MP3 07/28/2007 11:42:16 PAGE 4
180 ************************************************/
181 void MP3_PrevInit(void)
182 {
183 1 //MP3_ISR_Flag = 0;
184 1 CLASS_D_DAC_CTL = (SUSPEND | PAUSE);// suspend & Mute Class-D
185 1 EIE = 0x00;// Disable INT3
186 1 MP3_INT_CLR = 0x3F;
187 1 MP3_INT_EN = 0x00;//
188 1
189 1 MP3_SWReset();
190 1 MP3_ISR_Flag = 0;
191 1 }
192 /************************************************
193 函 数 名: MP3_SWReset()
194 功 能:MP3
195 说 明:
196 调 用:
197 全局变量:
198 入口参数:无
199 出口参数:无
200 返 回 值:无
201 ************************************************/
202 void MP3_SWReset(void)
203 {
204 1 MP3_CTL |= (MP3_CLR | MUTE);//软件复位MP3解码器
205 1 MP3_FIFOCTL = 0x00; // PCM_output FIFO Disable
206 1 MP3_I2S_CTL = 0x00;
207 1 MP3_DMACTL = DMA_CLR;// DMA is not ready
208 1 //MP3_VOLUME = 31; // 0 -> No volume gain, 31 -> Max value for volume gain
209 1 MP3_DMACTL = 0x00; // DMA is not ready
210 1 }
211 /************************************************
212 函 数 名: MP3_Init()
213 功 能:MP3
214 说 明:
215 调 用:
216 全局变量:
217 入口参数:无
218 出口参数:无
219 返 回 值:无
220 ************************************************/
221 void MP3_Init(void)
222 {
223 1 MP3_DMASTART0700_LEFT = 0x00; // in MP3 0x0 Byte
224 1 MP3_DMASTART1508_LEFT = 0x00;
225 1 MP3_DMALEN0700_LEFT = 0xFF; // in MP3
226 1 MP3_DMALEN1508_LEFT = 0x01; // -> 0x0 ~ 0x01FF= 512 Bytes
227 1 MP3_CTL = STEREO | L_ENDIAN; // Bit5->Stero mode, Bit4->Little Endian,MP3 mode
228 1 }
229 /************************************************
230 函 数 名: MP3_INT_Enable()
231 功 能:MP3
232 说 明:
233 调 用:
234 全局变量:
235 入口参数:无
236 出口参数:无
237 返 回 值:无
238 ************************************************/
239 void MP3_INT_Enable(void)
240 {
241 1 // set-up INT3
C51 COMPILER V8.08 MP3 07/28/2007 11:42:16 PAGE 5
242 1 MP3_INT_EN = 0x7F; // -> move to before _getkey()
243 1 MP3_INT_MASK = 0x3F;
244 1 MP3_DMACTL = DMA_READY_L; // set left DMA is ready
245 1 MP3_FIFOCTL = FIFO_EN; // PCM_output FIFO enable -> Must first enable it for playback WAVE file
246 1 MP3_I2S_RATE = 0x07;
247 1 MP3_I2S_DUTY = 0x04;
248 1 MP3_I2S_CTL = 0x00; // for Class-D in Parallel Mode
249 1 EIP = 0x02;
250 1 EIE = 0x02; // enable INT3
251 1 }
252 /************************************************
253 函 数 名: MP3_ActiveFAT()
254 功 能:MP3
255 说 明:
256 调 用:
257 全局变量:
258 入口参数:无
259 出口参数:无
260 返 回 值:无
261 ************************************************/
262 void MP3_ActiveFAT(void)
263 {
264 1 FileData.dwMovedDataToBuffSizeCNT = 0;
265 1 MP3_Init();
266 1
267 1 CLASS_D_DAC_CTL &= 0xF0;
268 1 MP3_ISR_Flag = 0;
269 1 tmpINT3 = 0;
270 1 varAl.SystemFlag &= ~(END_FILEADDR_FLAG);
271 1 MP3_INT_Enable();
272 1 }
273 /************************************************
274 函 数 名: MP3_Play_Task()
275 功 能:MP3
276 说 明:
277 调 用:
278 全局变量:
279 入口参数:无
280 出口参数:无
281 返 回 值:无
282 ************************************************/
283 void MP3_Play_Task(void)
284 {
285 1 switch(mp3_play_status)
286 1 {
287 2 case MP3_IDEL:
288 2 if(allow_mp3_play)
289 2 {
290 3 mp3_play_status = MP3_INIT;
291 3 }
292 2 break;
293 2 case MP3_INIT:
294 2 FileData.dwCurSecLba = 0;
295 2 MP3_PrevInit();
296 2 ReadSector(FileData.dwCurSecLba++,0x05);
297 2 ReadSector(FileData.dwCurSecLba++,0x06);
298 2 MP3_ActiveFAT();
299 2 FileData.dwMovedDataToBuffSizeCNT += CFatData.wBytesPerSec;
300 2 mp3_play_status = MP3_PLAY;
301 2 break;
302 2 case MP3_PLAY:
303 2 if(varAl.SystemFlag & END_FILEADDR_FLAG)
C51 COMPILER V8.08 MP3 07/28/2007 11:42:16 PAGE 6
304 2 {
305 3 mp3_play_status = MP3_NEXT;
306 3 }
307 2 break;
308 2 case MP3_PREVIOUS:
309 2 MP3_PrevInit();
310 2 if(!Backward())
311 2 {
312 3 FileData.wCurFDBNo = 0;
313 3 mp3_play_status = MP3_NEXT;
314 3 }
315 2 mp3_play_status = MP3_IDEL;
316 2 break;
317 2 case MP3_NEXT:
318 2 MP3_PrevInit();
319 2 if(CFatData.fFAT32)
320 2 {
321 3 if(++FileData.wCurFDBNo >= (U16)CFatData.bSectorsPerClu * CFatData.wBytesPerSec / DIREntrySize)
322 3 {
323 4 FileData.wCurFDBNo = 0;
324 4 if(++FileData.dwCurCluNo >= FileData.RootDirNum)
325 4 FileData.dwCurCluNo = 0;
326 4 }
327 3 }
328 2 else
329 2 {
330 3 if(++FileData.wCurFDBNo >= (U16)FileData.RootDirNum)
331 3 FileData.wCurFDBNo = 0;
332 3 }
333 2 if(Forward())
334 2 mp3_play_status = MP3_IDEL;
335 2 break;
336 2 }
337 1 }
338
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 684 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -