📄 simboard.lst
字号:
280 2 WrDatP<<=1;
281 2 WrDatPTmp=WrDatP;
282 2 }
283 1 }
284 void EepromWrEn(void)
285 {
286 1 BootSyn=1;
287 1 BootSyn=0;
288 1 sWr1Byte(0x06);
289 1 BootSyn=1;
290 1 }
291 void EepromWrDi(void)
292 {
293 1 BootSyn=1;
294 1 BootSyn=0;
295 1 sWr1Byte(0x04);
296 1 BootSyn=1;
297 1 }
298 uchar EepromRdReg(void)
299 {
300 1 uchar RdTemp;
301 1 BootSyn=1;
302 1 BootSyn=0;
303 1 sWr1Byte(0x05);
C51 COMPILER V7.50 SIMBOARD 04/07/2006 23:20:55 PAGE 6
304 1 RdTemp=sRd1Byte();
305 1 BootSyn=1;
306 1 return(RdTemp);
307 1 }
308 void EepromWrReg(uchar RegP)
309 {
310 1 BootSyn=1;
311 1 BootSyn=0;
312 1 sWr1Byte(0x01);
313 1 sWr1Byte(RegP);
314 1 BootSyn=1;
315 1 }
316 void ChkWIP(void)
317 {
318 1 uchar BusyTemp;
319 1 BusyTemp=EepromRdReg();
320 1 while(BusyTemp==0x01)
321 1 {
322 2 BusyTemp=(BusyTemp&0x01);
323 2 }
324 1 }
325 void EepromWr(uint WrAddr)
326 {
327 1 uint Tmp;
328 1 uchar WrDatTmp;
329 1 uint i;
330 1 EepromWrEn();
331 1 BootSyn=1;
332 1 BootSyn=0;
333 1 sWr1Byte(0x02);
334 1 Tmp=WrAddr;
335 1 WrDatTmp=(Tmp>>8);
336 1 sWr1Byte(WrDatTmp);
337 1 Tmp=WrAddr;
338 1 WrDatTmp=(Tmp&0x00ff);
339 1 sWr1Byte(WrDatTmp);
340 1 for(i=0;i<64;i++)
341 1 {
342 2 WrDatTmp=SecBootTab[i];
343 2 sWr1Byte(WrDatTmp);
344 2 }
345 1 BootSyn=1;
346 1 ChkWIP();
347 1 }
348 uchar EepromRd(uint RdAddr)
349 {
350 1 uint Tmp;
351 1 uchar WrDatTmp;
352 1 uchar RdDatTmp;
353 1 BootSyn=1;
354 1 BootSyn=0;
355 1 sWr1Byte(0x03);
356 1 Tmp=RdAddr;
357 1 WrDatTmp=(Tmp>>8);
358 1 sWr1Byte(WrDatTmp);
359 1 Tmp=RdAddr;
360 1 WrDatTmp=(Tmp&0x00ff);
361 1 sWr1Byte(WrDatTmp);
362 1 RdDatTmp=sRd1Byte();
363 1 BootSyn=1;
364 1 return(RdDatTmp);
365 1 }
C51 COMPILER V7.50 SIMBOARD 04/07/2006 23:20:55 PAGE 7
366 void serialInit(void)
367 {
368 1 /*TMOD 00100001B M1M0=10 T1: MODE 2, 8 bit reload;M1M0=01 T0, MODE 1, 16 bit counter/Timer*/
369 1 SCON=0x50; /* 0101000B(SM0 SM1 SM2 REN TB8 RB8 TI RI): Mode 1, T&R */
370 1 PCON=0x80; /* SMOD=1 K=2, SMOD=0 K=1*/
371 1 TH1=0xfd; /* 0xFF;(22.118Mhz); Fref=(K*Fosc)/(32*12*(256-TH1))=38400 */
372 1 TL1=0xfd;
373 1 TR1=1; /* (TCON) timer 1 control 1=run, 0=stop*/
374 1 ES=1; /* 1=serial interrupt enable, 0=serial interrupt disable*/
375 1 }
376 void DataSend(void)
377 {
378 1 uint kk=0;
379 1 SendNum=0x00;
380 1 for(kk=0;kk<64;kk++)
381 1 {
382 2 RecBuf[kk]=EepromRd(BlockStart+kk);
383 2 }
384 1 TI=0;
385 1 SBUF=RecBuf[0x00];
386 1 }
387 void DisLcd(void)
388 {
389 1 uchar i;
390 1 unsigned long int ReadDatTmp;
391 1 if(LcdBlink==0)
392 1 {
393 2 LcdBlink=25;
394 2 SpiBusWr(0x0805);
395 2 tdelay(10);
396 2 ReadDatTmp=SpiBusRd();
397 2 while((ReadDatTmp!=0xfff0fff0)&&(StartLoad==0))
398 2 {
399 3 tdelay(5);
400 3 ReadDatTmp=SpiBusRd();
401 3 }
402 2
403 2 SpiBusWr(0x0806);
404 2 tdelay(2);
405 2 for(i=0;i<64;)
406 2 {
407 3 ReadDatTmp=SpiBusRd();
408 3 RecBufDis[i]=(ReadDatTmp>>16);
409 3 RecBufDis[i+1]=(ReadDatTmp&0x0000ffff);
410 3 i=i+2;
411 3 }
412 2 for(i=0;i<64;i++)
413 2 {
414 3 if(RecBufDis[i]<8)
415 3 {;}
416 3 else if((RecBufDis[i]>=8)&&(RecBufDis[i]<24))
417 3 {
418 4 RecBufDis[i]=8+((RecBufDis[i]-8)>>1);
419 4 }
420 3 else if((RecBufDis[i]>=24)&&(RecBufDis[i]<56))
421 3 {
422 4 RecBufDis[i]=16+((RecBufDis[i]-24)>>2);
423 4 }
424 3 else if((RecBufDis[i]>=56)&&(RecBufDis[i]<120))
425 3 {
426 4 RecBufDis[i]=24+((RecBufDis[i]-56)>>3);
427 4 }
C51 COMPILER V7.50 SIMBOARD 04/07/2006 23:20:55 PAGE 8
428 3 else if((RecBufDis[i]>=120)&&(RecBufDis[i]<248))
429 3 {
430 4 RecBufDis[i]=32+((RecBufDis[i]-120)>>4);
431 4 }
432 3 else if((RecBufDis[i]>=248)&&(RecBufDis[i]<504))
433 3 {
434 4 RecBufDis[i]=40+((RecBufDis[i]-248)>>5);
435 4 }
436 3 else if((RecBufDis[i]>=504)&&(RecBufDis[i]<1016))
437 3 {
438 4 RecBufDis[i]=48+((RecBufDis[i]-504)>>6);
439 4 }
440 3 else if((RecBufDis[i]>=1016)&&(RecBufDis[i]<2040))
441 3 {
442 4 RecBufDis[i]=56+((RecBufDis[i]-1016)>>7);
443 4 }
444 3 if(RecBufDis[i]>63)
445 3 {RecBufDis[i]=63;}
446 3 PicBuf[i]=RecBufDis[i];
447 3 }
448 2 PicFft();/*
449 2 for(i=0;i<64;i++)
450 2 {
451 2 SendDatBuf[2*i]=(RecBufDis[i]>>8);
452 2 SendDatBuf[2*i+1]=(RecBufDis[i]&0x00ff);
453 2 }
454 2 SendNum=0;
455 2 TI=0;
456 2 SBUF=SendDatBuf[0];*/
457 2 }
458 1 }
459 void DisRmon(void)
460 {
461 1 if(LoopTime==0)
462 1 {
463 2 LoopTime=60;
464 2 StartDisLine++;
465 2 if(StartDisLine==64)
466 2 {StartDisLine=0;}
467 2 LcdCmdWr(1,StartDisLine|0xc0);
468 2 }
469 1 }
470 void WrBlockDatInRom(void)
471 {
472 1 BlockStart=BlockCnt*0x40;
473 1 BlockEnd =BlockStart+0x40;
474 1 EepromWr(BlockStart);
475 1 tdelay(40);
476 1 }
477 main(void)
478 {
479 1 /*LampEn=0;*/
480 1 BootSyn=1;
481 1 BootClk=0;
482 1 BootTx=0;
483 1 BootRx=0;
484 1 tdelay(255);
485 1 tdelay(255);
486 1 tdelay(255);
487 1 tdelay(255);
488 1 TMOD=0x21;
489 1 TH0=0x0c;
C51 COMPILER V7.50 SIMBOARD 04/07/2006 23:20:55 PAGE 9
490 1 TL0=0xdc;
491 1 ET0=1;
492 1 TR0=1;
493 1 serialInit();
494 1 EA=1;
495 1 LcdInit();
496 1 LcdClear();
497 1 DisEcho();DisEq();DisFFT();DisLMS();
498 1 Rst4221D();
499 1 iic4221wr(0x00,0x00);
500 1 iic4221wr(0x01,0x00);
501 1 iic4221wr(0x02,0x4a);
502 1 iic4221wr(0x03,0x00);
503 1 iic4221wr(0x04,0x00);
504 1 iic4221wr(0x05,0x65);
505 1 /*
506 1 EepromWrReg(0x00);
507 1 for(BlockNum=0;BlockNum<122;BlockNum++)
508 1 {
509 1 BlockStart=BlockNum*0x40;
510 1 BlockEnd =BlockStart+0x40;
511 1 for(CopyNum=BlockStart;CopyNum<BlockEnd;CopyNum++)
512 1 {
513 1 SecBootTab[CopyNum-BlockStart]=BootTab[CopyNum];
514 1 }
515 1 EepromWr(BlockStart);
516 1 tdelay(40);
517 1 }
518 1 EepromWrDi();
519 1 */
520 1 while(1)
521 1 {
522 2 DisLcd();
523 2 DisRmon();
524 2 if(OneBlockEnd==1)
525 2 {
526 3 OneBlockEnd=0;
527 3 if(BlockCnt==0)
528 3 {
529 4 EepromWrReg(0x00);
530 4 WrBlockDatInRom();
531 4 BlockCnt++;
532 4 }
533 3 else if(BlockCnt<filelenth)
534 3 {
535 4 WrBlockDatInRom();
536 4 BlockCnt++;
537 4 }
538 3 if(BlockCnt==filelenth)
539 3 {
540 4 EepromWrDi();
541 4 BlockCnt=0;
542 4 StartLoad=0;
543 4 }
544 3 TI=0;
545 3 SBUF=0xfa;
546 3 //DataSend();
547 3 }
548 2 }
549 1 }
C51 COMPILER V7.50 SIMBOARD 04/07/2006 23:20:55 PAGE 10
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1735 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 594 ----
PDATA SIZE = ---- ----
DATA SIZE = 2 8
IDATA SIZE = 13 ----
BIT SIZE = 1 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -