⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simboard.lst

📁 单片机与DSP通信源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -