📄 halmp3dec.lst
字号:
C51 COMPILER V8.01 HALMP3DEC 04/17/2008 09:46:18 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE HALMP3DEC
OBJECT MODULE PLACED IN .\Debug\halmp3dec.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mp3ctrl\halmp3dec.c LARGE OPTIMIZE(9,SIZE) NOINTPROMOTE INCDIR(.\common;.\e
-2prom;.\file;.\fmtx;.\ir;.\keyboard;.\lcm;.\led;.\main;.\matrixkey;.\mp3ctrl;.\sd;.\usbhost;.\include;.\lib) DEBUG OBJEC
-TEXTEND PRINT(.\Debug\halmp3dec.lst) OBJECT(.\Debug\halmp3dec.obj)
line level source
1 /****************************************************************
2 * Viaon Technology (Suzhou) Co.,Ltd
3 *
4 * Copyright 2007, Viaon Technology (Suzhou) Co.,Ltd,Suzhou,China
5 * All rights reserved.
6 *
7 *
8 * Filename: halmp3dec.c
9 *
10 * Programmer: Greg
11 *
12 * Created: 1/2/2008
13 *
14 * Description: public functions
15 *
16 *
17 * Change History (most recent first): 2008.1.2
18 ****************************************************************/
19 #include "utiltypedef.h"
20 #include "va4010reg.h"
21 #include "va4010regsdk.h"
22 #include "common.h"
23 #include "timer.h"
24 #include "halmp3dec.h"
25 #include "libfatif.h"
26 #include "halvol.h"
27
28 static BYTE data bOneShot;
29 static BYTE data bReSync;
30
31 #if 0
#define MP3_MUTE_ENABLE() (Mp3Ctrl |= 0x04)
#define MP3_MUTE_DISABLE() (Mp3Ctrl &= (~0x04))
#define MP3_DEC_DISABLE() (Mp3Ctrl = 0X04)
#define MP3_PAUSE_ENABLE() (Playmode |= 0x20)
#define MP3_PAUSE_DISABLE() (Playmode &= (~0x20))
#endif
38
39 void MP3_MUTE_ENABLE()
40 {
41 1 Mp3Ctrl |= 0x04;
42 1 return;
43 1 }
44 void MP3_MUTE_DISABLE()
45 {
46 1 Mp3Ctrl &= (~0x04);
47 1 return;
48 1 }
49
50 void MP3_DEC_DISABLE()
51 {
52 1 Mp3Ctrl = 0X04; //disable and mute
53 1 return;
C51 COMPILER V8.01 HALMP3DEC 04/17/2008 09:46:18 PAGE 2
54 1 }
55
56 void MP3_PAUSE_ENABLE()
57 {
58 1 Playmode |= 0x20;
59 1 return;
60 1 }
61
62 void MP3_PAUSE_DISABLE()
63 {
64 1 Playmode &= (~0x20);
65 1 return;
66 1 }
67
68
69 void halMp3Play(void) //STREAM *fd)
70 {
71 1 UartOutText("halMp3Play(). \r\n");
72 1 Playmode = 0x10; //sw reset
73 1 bOneShot = 0;
74 1 Playmode = 0x00;
75 1
76 1 Volume = 0x0F; //silence
77 1
78 1 #if (DAC_I2S_FORMAT == DAC_I2S_RJUST)
79 1 IISFmt = 0x03;
80 1 #elif (DAC_I2S_FORMAT == DAC_I2S_LJUST)
IISFmt = 0x02;
#elif (DAC_I2S_FORMAT == DAC_I2S_I2S)
IISFmt = 0x01;
#endif
85 1
86 1
87 1 //Mp3Ctrl = 0x31;
88 1 Mp3Ctrl = 0x05; //mute enable
89 1 Volume = 0x0F; //silence
90 1
91 1 return;
92 1 }
93
94 BYTE halMp3Req(STREAM *fd)
95 {
96 1 WORD wRet;
97 1 BYTE data bTmp;
98 1 BYTE data bFlag = MP3_DATREQ_OK;
99 1
100 1 if((fd==NULL)||(mp3status != MP3STATUS_PLAY)){
101 2 SysTicks = 0;
102 2
103 2 return MP3_DATREQ_IDLE;
104 2 }
105 1
106 1 if((Alarm&MP3_REQ)){ //Data requst interrupt
107 2 wRet = FileReadMp3(fd);
108 2 Alarm = 0xff;
109 2
110 2 if(SysTicks > 0x10) SysTicks = 0; //The SysTicks will be reseted for each MP3_REQ, so normally SysTicks
-will not be very big.
111 2 #if 0
UartOutText("\r\n/*---------OV--------------*/\r\n");
UartOutText("FrmLow value is: "); UartOutValue(FrmLow, 2);
UartOutText("Mp3Info value is: "); UartOutValue(Mp3Inf, 2);
C51 COMPILER V8.01 HALMP3DEC 04/17/2008 09:46:18 PAGE 3
UartOutText("Mp3Stat value is: "); UartOutValue(Mp3Stat, 2);
UartOutText("Read count:"); UartOutValue(fd->dw512BCnt, 8);
#endif
118 2 if(wRet!=SECTOR_SIZE){
119 3 //if((wRet!=SECTOR_SIZE)||(Mp3Stat&0XF8)){
120 3 //if((wRet!=SECTOR_SIZE)||((Mp3Stat&0XF0)==0x10)){
121 3 bFlag = MP3_DATREQ_OVER;
122 3 }
123 2 }
124 1
125 1 if(bOneShot==0){
126 2 if(FrmLow > MP3_CHECK_FRMMAX){ //MP3_CHECK_FRMMAX
127 3 UartOutText("\r\n/*-----------------------*/\r\n");
128 3 UartOutText("FrmLow value is: "); UartOutValue(FrmLow, 2);
129 3 UartOutText("Mp3Info value is: "); UartOutValue(Mp3Inf, 2);
130 3 UartOutText("Read count:"); UartOutValue(fd->dw512BCnt, 8);
131 3
132 3 //fd->dwMp3Start = fd->dw512BCnt;
133 3 if((Mp3Inf & 0x0F) == 0x9){
134 4 NDiv = 0x2B;
135 4 MDiv = 0x08;
136 4 PllCtrl = 0x7;
137 4 }
138 3
139 3 switch(Mp3Inf){
140 4 case MPEG25_11KHZ_112KBPS:
141 4 case MPEG2_16KHZ_8KBPS:
142 4 case MPEG2_24KHZ_8KBPS:
143 4 case MPEG2_22KHZ_8KBPS:
144 4 bFlag = MP3_DATREQ_OVER;
145 4 break;
146 4 default:
147 4 break;
148 4 }
149 3 //UartOutText("----DISMUTE_HW----\r\n");
150 3 //DISMUTE_HW();
151 3
152 3 halVolSmthSet(0, SMOOTH_CAUSE_VOLUP, 0);//volume smooth up
153 3
154 3 bOneShot = 1;
155 3 }
156 2 //else if(fd->dw512BCnt > MP3_CHECK_SECMAX){ //It seems this is not a valid mp3 file
157 2 // bFlag = MP3_DATREQ_OVER;
158 2 //}
159 2 }
160 1
161 1 bTmp = Mp3Stat;
162 1 if(bTmp&0XF8){ //crc error, huffman error
163 2 UartOutText("Mp3Stat = "); UartOutValue(Mp3Stat,2);
164 2
165 2 Mp3Stat = bTmp; //Clear the register
166 2 Mp3Ctrl |= 0x04; //mute
167 2 //Playmode |= 0x01; //Skip 256 frame
168 2 Playmode |= 0x02; //Skip frame
169 2 UartOutText("-I-: Skip Frame \r\n");
170 2
171 2 bReSync ++;
172 2 if(bReSync > MP3_RESYNC_MAX) // Too many errors, so just OVER.
173 2 bFlag = MP3_DATREQ_OVER;
174 2
175 2 //Use to count the frame_skip interval
176 2 SysTicks = 0;
C51 COMPILER V8.01 HALMP3DEC 04/17/2008 09:46:18 PAGE 4
177 2 }
178 1
179 1 if((Playmode&0x02)&&(SysTicks > 5)){ //frame_skip interval: 0.8Second
180 2 Mp3Ctrl &= ~0x04; //disable mute
181 2 Playmode &= ~0x02; //clear skip frame bit
182 2 }
183 1
184 1 if(SysTicks > 0x30)//If paused, this ticks will still go on.
185 1 bFlag = MP3_DATREQ_OVER; //No MP3_REQ for a long time, so just over
186 1
187 1
188 1 return bFlag;
189 1 }
190
191
192 #ifdef ENABLE_EQ_KEY
193 #ifdef UART_DEBUG_DISABLE
194 BYTE EQString[EQ_VALUE_MAX+1][6]={
195 {"POPS "},
196 {"JAZZ "},
197 {"ROCK "},
198 {"CLASS"},
199 // {"RANDB "},
200 };
201 #endif
202
203 static BYTE data g_byEqValue;
204 BYTE EQConfig[EQ_VALUE_MAX+1][3]={
205 // {0x00, 0x00, 0x00}, //EQ_OFF
206 {0x12, 0x22, 0x10}, //EQ_POPS
207 {0x55, 0x01, 0x22}, //EQ_JAZZ
208 {0x76, 0x02, 0x20}, //EQ_ROCK
209 {0x11, 0x22, 0x27}, //EQ_CLASSIC
210 // {0x50, 0x11, 0x12}, //EQ_RANDB
211 // {0x10, 0x00, 0x00}, //EQ_BASSBOOST
212 };
213
214 void halEQUp(void)
215 {
216 1 BYTE bTmp = g_byEqValue;
217 1
218 1 bTmp++;
219 1 bTmp = bTmp%(EQ_VALUE_MAX+1);
220 1
221 1 halEQSet(bTmp);
222 1
223 1 return;
224 1 }
225
226 void halEQSet(BYTE bEQIdx)
227 {
228 1 g_byEqValue = bEQIdx;
229 1
230 1 EqLow = EQConfig[g_byEqValue][0];
231 1 EqMid = EQConfig[g_byEqValue][1];
232 1 EqHi = EQConfig[g_byEqValue][2];
233 1
234 1 UartOutText("-I-: EQ Setting 0x");UartOutValue(g_byEqValue, 2);
235 1 UartOutText(EQString[g_byEqValue]);
236 1
237 1 return;
238 1 }
C51 COMPILER V8.01 HALMP3DEC 04/17/2008 09:46:18 PAGE 5
239
240 BYTE halEQGet(void)
241 {
242 1 return g_byEqValue;
243 1 }
244
245 #endif
246
247
248
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 351 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 36 ----
PDATA SIZE = ---- ----
DATA SIZE = 3 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -