📄 download.lst
字号:
175 1 dspptr = dsp_program;
176 1
177 1 while (1)
178 1 {
C51 COMPILER V8.08 DOWNLOAD 08/07/2008 00:07:23 PAGE 4
179 2 len = *dspptr++; // 第一个字节表示数据长度(字节数),第二、三字节表示起始地址,高位字节在前
180 2
181 2 if (len == 0)
182 2 {
183 3 if(stage_data) // 如果已经是在写数据空间,说明已经结束,跳出循环
184 3 {
185 4 break;
186 4 }
187 3 else
188 3 {
189 4 stage_data = 1; // 程序空间写完了,开始写数据空间
190 4
191 4 #ifdef DATA
dspptr = dsp_data;
#endif
194 4
195 4 #ifndef DATA
196 4 break;
197 4 #endif
198 4 }
199 3 }
200 2
201 2 else
202 2 {
203 3 addr = ((*dspptr++) * 256); //将两个字节的数据组合成一个16位地址
204 3 addr += *dspptr++;
205 3 addr--; // HCNTL0 = 0,HCNTL0 = 1,每写1次,HPIA事先增1
206 3
207 3 temp = dspptr;
208 3
209 3 again:
210 3 WR_HPIL_A = addr / 256; // BOB = 0,第1字节为高字节,地址高8位
211 3 WR_HPIH_A = addr % 256; // 地址低8位
212 3
213 3 for (i=0; i < len/2; i++)
214 3 {
215 4 WR_HPIL0_D = *dspptr++; // 第一字节,16位数据高8位
216 4 WR_HPIH0_D = *dspptr++; // 第二字节,16位数据低8位
217 4 }
218 3
219 3 dspptr = temp; // 指针回到刚刚写完的len长度数据的首字节,以便读出进行校验
220 3
221 3 addr++; // HCNTL0 = 0,HCNTL0 = 1,每读1次,HPIA事后增1
222 3 WR_HPIL_A = addr / 256;
223 3 WR_HPIH_A = addr % 256;
224 3
225 3 for (i=0; i < len/2; i++)
226 3 {
227 4 if (RD_HPIL0_D != *dspptr++)
228 4 {
229 5 dspptr = temp; // 将dspptr指回到该len长度的首字节,以便重新写该len长度的数据
230 5 addr--;
231 5 goto again; // 不相等,再写
232 5 }
233 4
234 4 if (RD_HPIH0_D != *dspptr++)
235 4 {
236 5 dspptr = temp; // 将dspptr指回到该len长度的首字节,以便重新写该len长度的数据
237 5 addr--;
238 5 goto again;
239 5 }
240 4 }
C51 COMPILER V8.08 DOWNLOAD 08/07/2008 00:07:23 PAGE 5
241 3 }
242 2 }
243 1
244 1 WR_HPIL_A = 0x00; // 向地址0x007f写入pc指针加载地址
245 1 WR_HPIH_A = 0x7f;
246 1 WR_HPIL1_D = 0x00; // THE START ADDRESS OF RUN
247 1 WR_HPIH1_D = 0x80;
248 1
249 1 }
250
251 Timer0() interrupt 1
252 {
253 1 ok = 1;
254 1 ms++;
255 1 }
256
257 void init_51(void)
258 {
259 1 TMOD = 0x21;
260 1 SCON = 0x40;
261 1 REN = 1;
262 1 TH1 = 0xfd;
263 1 TL1 = 0xfd;
264 1 ET1 = 0;
265 1 ES = 0;
266 1 IT0 = 1;
267 1 EX0 = 0;
268 1 ET0 = 1;
269 1 EA = 1;
270 1 TR1 = 1;
271 1 TR0 = 1;
272 1 }
273 /***************************************************************/
274
275 /*
276 unsigned char getDSP()
277 {
278 WR_HPIL_A = 0;
279 WR_HPIH_A = 0x7d;
280 return(RD_HPIH0_D);
281 }
282 */
283 void init_AIC23(void)
284 {
285 1 write_AIC23(RESET, 0);
286 1 write_AIC23(D_INTERFACE_ACT, 0x001);
287 1 write_AIC23(POWER_CON, 0);
288 1 //write_AIC23(SAMPLE_RATE, 0x022); //44.1k
289 1 //write_AIC23(SAMPLE_RATE, 0x062); //22.05k
290 1 write_AIC23(SAMPLE_RATE, 0x02e); //8.021k
291 1
292 1 write_AIC23(L_LINE_VOLUME, 0x0117);
293 1 write_AIC23(R_LINE_VOLUME, 0x0117);
294 1
295 1 volume = 100;
296 1 write_AIC23(L_HEADPHONE_VOLUME, 0x0180+volume); //0x1e4
297 1 write_AIC23(R_HEADPHONE_VOLUME, 0x0180+volume);
298 1
299 1 //write_AIC23(A_AUDIO_PATH, 0x009); //bypass DAC OFF
300 1 //write_AIC23(A_AUDIO_PATH, 0x014); //MIC ADC DAC ON 0DB
301 1 //write_AIC23(A_AUDIO_PATH, 0x1fc); //bypass MIC ADC DAC ON 0DB sidetone
302 1 //write_AIC23(A_AUDIO_PATH, 0x07d); //bypass MIC ADC DAC ON 20DB sidetone(-6db)
C51 COMPILER V8.08 DOWNLOAD 08/07/2008 00:07:23 PAGE 6
303 1 //write_AIC23(A_AUDIO_PATH, 0x011); //LINE ADC DAC ON
304 1 write_AIC23(A_AUDIO_PATH, 0x055);
305 1
306 1 write_AIC23(D_AUDIO_PATH, 0x04);
307 1
308 1 write_AIC23(D_AUDIO_INTERFACE, 0x043); //master dsp mode
309 1 }
310
311 void write_AIC23(uchar addr, uint dat)
312 {
313 1 uchar i;
314 1 dat |= addr << 9; // A[15..9]控制地址,A[8..0]控制数据
315 1 CS=0;
316 1 for (i = 0; i < 16; i++) // 模拟SPI时序发送
317 1 {
318 2 SCLK = 0;
319 2 if ((dat << i) & 0x8000)
320 2 SDIN = 1;
321 2 else
322 2 SDIN = 0;
323 2 SCLK = 1;
324 2 }
325 1 SCLK = 0;
326 1 CS = 1;
327 1 }
328 /*
329 unsigned char getkey()
330 {
331 uchar key;
332 if(RI)
333 {
334 RI = 0;
335 key = SBUF;
336 return(key);
337 }
338 return(255);
339 }
340 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 630 ----
CONSTANT SIZE = 1625 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 8
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -