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

📄 mp3.lst

📁 这个是一个完整的MP3项目
💻 LST
📖 第 1 页 / 共 4 页
字号:
 613          void KeyBoardInit()//<<<<<------------------------change by kent-------------------------------------
 614          {
 615   1              P1 = 0x0f;      //将端口1的低四位,即键盘对应的4位置1
 616   1              KBCON = 0x00;//设置键盘有效模式为低电平有效,并使能中断Low Level,Enable Interrupt
 617   1              IEN1 = IEN1 | EKB;      //使能键盘中断Enable KeyBoard Interrupt
 618   1      
 619   1      }
 620          
 621          void Func()
 622          {
 623   1                      if (CurrentFun < 3)
 624   1                      {
 625   2                              CurrentFun++;//在选曲/音量调节/音效调节三者间切换
 626   2                      }
 627   1                      else if (CurrentFun == 3)
 628   1                      {
 629   2                              CurrentFun = 1;
 630   2                      }
 631   1      }
 632          
 633          void Next()//按下"下一首/音量减小"键时的处理
 634          {
 635   1      
 636   1              switch (CurrentFun)
 637   1              {//如果当前处于音量调节功能
 638   2                      case VOLUME     :
 639   2                              {
 640   3                                      if (MP3VOR > 0x00)//当前音量没有达到最小时
 641   3                                      {
 642   4                                              MP3VOR -= 0x01;//右声道音量增大一档
 643   4                                              MP3VOL -= 0x01;//左声道音量增大一档
 644   4                                      }
 645   3      
 646   3                                      break;
 647   3                              }
 648   2                      case EFFECTION ://如果处于音效调节功能
 649   2                              {
 650   3                                      if (MP3BAS > 7)
 651   3                                      {//降低重音效果
 652   4                                              MP3BAS -= 7;
 653   4                                              MP3MED = 0x0f;  
 654   4                                              MP3TRE += 7;
 655   4                                      }
 656   3                                      break;
 657   3                              }
 658   2                      case SELECTSONG ://如果处理MP3选取功能
 659   2                              {
 660   3                                      if (NowPlaying == (NumofSong - 1))
 661   3                                      { 
 662   4                                              NowPlaying = 0;//如果已经处于最后一首了,则指向第一首
 663   4                                              MP3InitFlag = 1;
 664   4                                      }
 665   3                                      else 
 666   3                                      { 
 667   4                                              NowPlaying++;   //否则,指向下一首
 668   4                                              MP3InitFlag = 1;
 669   4                                      }
 670   3                              ChangeSong = 1;         //置选曲标志位
 671   3                              /*if(MP3InitFlag){
C51 COMPILER V7.50   MP3                                                                   03/16/2006 09:11:14 PAGE 12  

 672   3                                                                      PlayInit(&SONG[11*NowPlaying]);
 673   3                                                                      MP3InitFlag=0;
 674   3                                                                      }*/
 675   3                                      break;
 676   3                              }
 677   2                      default : break;
 678   2              }
 679   1              
 680   1      }
 681          
 682          void Previous()//按下"上一首/音量增大"键时的处理
 683          {
 684   1              switch (CurrentFun)
 685   1              {
 686   2                      case VOLUME ://如果当前处于音量调节功能
 687   2                              {
 688   3                                      if (MP3VOR < 0x1f)//当前音量没有达到最大时
 689   3                                      {
 690   4                                              MP3VOR += 0x01;//右声道音量增大一档
 691   4                                              MP3VOL += 0x01;//左声道音量增大一档
 692   4                                      }
 693   3      
 694   3                                      break;
 695   3                              }
 696   2      
 697   2                      case EFFECTION ://如果处于音效调节功能
 698   2                              {
 699   3                                      if (MP3BAS < 0x1d)
 700   3                                      {//增加重音效果
 701   4                                              MP3BAS += 7;
 702   4                                              MP3MED = 0x0f;  
 703   4                                              MP3TRE -= 7;
 704   4                                      }
 705   3                                      break;
 706   3                              }
 707   2      
 708   2                      case SELECTSONG ://如果处理MP3选取功能
 709   2                              {
 710   3                                      if (NowPlaying > 0)
 711   3                                      {
 712   4                                              NowPlaying--;//如果当前播放歌曲不为第一首,则指向上一首
 713   4                                              MP3InitFlag = 1;
 714   4                                      }
 715   3                                      else 
 716   3                                      {
 717   4                                              NowPlaying = NumofSong - 1;//如果当前已经到达第一首,则指向最后一首
 718   4                                              MP3InitFlag = 1;
 719   4                                      }
 720   3                                      ChangeSong = 1;                         //置选曲标志位
 721   3                              /*if(MP3InitFlag){
 722   3                                                                      PlayInit(&SONG[11*NowPlaying]);
 723   3                                                                      MP3InitFlag=0;
 724   3                                                                      }*/
 725   3                                      break;
 726   3                              }
 727   2                      default:break;
 728   2              }
 729   1              
 730   1      }
 731          
 732          void PlayPause()
 733          {
C51 COMPILER V7.50   MP3                                                                   03/16/2006 09:11:14 PAGE 13  

 734   1              PlayState = !PlayState; //按一下播放键时,改变播放状态
 735   1      
 736   1      }
 737          
 738          void key_interrupt() interrupt 11
 739          {
 740   1                      unsigned char i = 100;
 741   1                      EA = 0;                 //关中断
 742   1                      IEN1 &= (~EKB); //Enable KeyBoard Interrupt
 743   1      
 744   1                      while (i)
 745   1                      {
 746   2                              i--;
 747   2                      }
 748   1      
 749   1                      i = KBSTA;              //取键盘中断位
 750   1                      switch (i)
 751   1                      {               //依次处理四个键中的某个键被按下时的情况
 752   2                              case 1 : Func(); break;
 753   2                              case 2 : Next(); break;
 754   2                              case 4 : Previous(); break;
 755   2                              case 8 : PlayPause(); break;
 756   2                              default : break;
 757   2                      }
 758   1                      IEN1 |= EKB;    //Enable KeyBoard Interrupt
 759   1                      
 760   1                      EA = 1;         //开中断
 761   1                      return;
 762   1      }
 763          //<<<<------------------------change by kent---------------------------------------------------
 764          void main()
 765          {
 766   1      
 767   1      //      int i,j;
 768   1      //      printu("UP-TECH MP3 Player Test!\n");
 769   1      //      P3_5 = 0x01;//USBLED off
 770   1      //      P3_3 = 0;       //P3_3=0 LCD Power off,P3_3=1 LCD Power on
 771   1              
 772   1              printu("Entering MP3...\n");
 773   1              Flash_Reset();//Flash复位
 774   1              Init();//MP3初始化
 775   1              //AUDCLK|=0x0B;printuf("%x\n",AUDCLK);
 776   1              KeyBoardInit();//键盘初始化
 777   1              MP3InitFlag = 1;
 778   1              EA = 1;//开中断,键盘可以开始工作
 779   1              NumofSong = GetMP3List();//得到U盘中的MP3歌曲列表
 780   1              printuf("Song : %x\n", NumofSong);//输出歌曲总数信息
 781   1              if (NumofSong == 0) 
 782   1              {
 783   2                      printu("There is no MP3 file in USB Disk!\n");
 784   2              }
 785   1              //P3_5=0;//打开USB灯亮
 786   1              
 787   1              while (1)
 788   1              {
 789   2                      if (NumofSong != 0)
 790   2                      {
 791   3                              if (MP3InitFlag)
 792   3                              {
 793   4                                              PlayInit(&SONG[11 * NowPlaying]);
 794   4                                              MP3InitFlag = 0;
 795   4                              }
C51 COMPILER V7.50   MP3                                                                   03/16/2006 09:11:14 PAGE 14  

 796   3                              PlayMP3(&SONG[11 * NowPlaying]);//如果处于播放状态,则播放当前歌曲
 797   3                      }
 798   2                      if (NowPlaying == NumofSong) PlayState = STOP;                  //全部歌曲播放完了,播放器停止
 799   2              }
 800   1      
 801   1      }               
 802          
 803          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2079    ----
   CONSTANT SIZE    =    277    ----
   XDATA SIZE       =    313      63
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -