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

📄 main.lst

📁 MP3播放器和U盘功能的源代码。采用集成了MP3解码芯片和USB接口芯片的AT89C51SND1C单片机
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  02/08/2007 11:18:08 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          #include "REGSND1.H"
   3          #include "UART.H"
   4          /** 宏定义USB端点中断的标志位 **/
   5          #define         EP2             (0x1<<2)                      
   6          #define         EP1             (0x1<<1)
   7          #define         EP0             (0x1<<0)
   8          
   9          #define     EKB             (0x10)
  10          /** 宏定义MP3播放功能的标志位 **/
  11          #define SELECTSONG      3
  12          #define PLAY            1
  13          #define STOP            0
  14          /** 声明外部函数 **/
  15          extern void AtmelUSBInit();
  16          extern void EpEnable();
  17          extern void Ep0();
  18          extern void main_txdone();
  19          extern void main_rxdone();
  20          extern void Flash_Reset(void);
  21          
  22          extern void MP3_Init();
  23          extern void PlayInit(unsigned char *SongName);
  24          extern unsigned char GetMP3List(void);
  25          
  26          extern void Func();
  27          extern void Next();
  28          extern void Previous();
  29          extern void PlayPause();
  30          extern void PlayMP3(unsigned char *SongName);
  31          extern void KeyBoardInit();
  32          extern void Format_Fat12Media(void);
  33          //extern void ReadPage(unsigned int block, unsigned int page, unsigned char *pPage)
  34          /** 定义MP3播放相关的变量 **/
  35          unsigned char SONG[88] = {'M', 'O', 'O', 'N', ' ', ' ', ' ', ' ', 'T', 'X', 'T'};
  36          unsigned char data CurrentFun = SELECTSONG;
  37          unsigned char data PlayState = STOP;
  38          unsigned char data NowPlaying = 0;
  39          unsigned char data NumofSong = 0;
  40          unsigned char data MP3InitFlag;
  41          
  42          
  43          void key_interrupt() interrupt 11
  44          {
  45   1                  
  46   1              unsigned char i = 200;
  47   1                      EA = 0;                                                              //关中断    
  48   1                      IEN1 &= (~EKB);                                              //Enable KeyBoard Interrupt                
  49   1                      while (i)
  50   1                      {
  51   2                              i--;
  52   2                      }
  53   1      
  54   1                      i = KBSTA;                                                           //取键盘中断位
  55   1                      switch (i)
C51 COMPILER V7.50   MAIN                                                                  02/08/2007 11:18:08 PAGE 2   

  56   1                      {                                                                    //依次处理四个键中的某个键
  57   2                              case 2 : {printu(">>>> FUNC <<<<\n");   Func(); break;  }                                                                //被按下时的情况
  58   2                              case 8 : { printu(">>>> NEXT <<<<\n");  Next(); break;}
  59   2                              case 4 : { printu(">>>> PREV <<<<\n");  Previous(); break;}
  60   2                              case 1 : { printu(">>>> PLAY <<<<\n");  PlayPause(); break;}
  61   2                              default : break;
  62   2                      }
  63   1                      IEN1 |= EKB;                                                  //Enable KeyBoard Interrupt
  64   1                      
  65   1                      EA = 1;                                                           //开中断
  66   1                      return;
  67   1      }
  68          
  69          void main()
  70          {
  71   1                      
  72   1         // unsigned char a=2;
  73   1          CKCON|=0x01;   //使能该单片机的X2模式
  74   1          printu(">>>> KT MP3 USB Disk V1.00 <<<<\n");
  75   1              
  76   1              
  77   1              //CKCON|=0x01;   //使能该单片机的X2模式
  78   1              Flash_Reset();                                                                                           //Flash 芯片复位
  79   1              //printu(">>>> FLASH RESET SUCCESS <<<<\n");
  80   1              //delay();
  81   1      
  82   1            if(P3_4)                                                                                           //此引脚为USB接入检测端
  83   1            //if(a==1)
  84   1                {                                                                                                                      //在此将设备做为U盘处理
  85   2                   printu(">>>>Entering USB Mode...<<<<\n");                           //输出进入U盘功能的信息
  86   2                   AtmelUSBInit();                                                                             //USB寄存器配置函数
  87   2                   EpEnable();                                                                                         //使能有关USB的配置
  88   2                   while(1)
  89   2                    {
  90   3                       if (UEPINT & EP0)   Ep0();
  91   3                       if (UEPINT & EP1)   main_txdone(); 
  92   3                       if (UEPINT & EP2)       main_rxdone();
  93   3                        
  94   3                               UEPINT=0;
  95   3                    }
  96   2                }
  97   1                else                                                                                                   //进入MP3播放模式
  98   1                {
  99   2                      printu("Entering MP3 Mode...\n"); 
 100   2                  MP3_Init();                                                  //MP3初始化
 101   2                      KeyBoardInit();                                              //键盘初始化
 102   2              //CKCON|=0x01;   //使能该单片机的X2模式
 103   2                      MP3InitFlag = 1;
 104   2                      EA = 1;                                                      //开中断,键盘可以开始工作
 105   2                      P3_5 = 0;                                                    //打开USB灯亮      
 106   2              PlayState=PLAY;
 107   2              
 108   2                      NumofSong = GetMP3List();                                    //得到U盘中的MP3歌曲列表
 109   2                      CKCON|=0x01;   //使能该单片机的X2模式
 110   2                      printuf("Song:%x\n", NumofSong);                             //输出歌曲总数信息
 111   2                      if(NumofSong == 0) 
 112   2                      {
 113   3                         printu("There is no MP3 file in USB Disk!\n");
 114   3                         P3_5 = 1;                                                 //关闭指示LED       
 115   3                      }
 116   2        
 117   2                      while(1) 
C51 COMPILER V7.50   MAIN                                                                  02/08/2007 11:18:08 PAGE 3   

 118   2                      {
 119   3                              if(NumofSong != 0)
 120   3                              {
 121   4                                      if(MP3InitFlag)
 122   4                                      {
 123   5                                              PlayInit(&SONG[11 * NowPlaying]);
 124   5                                              MP3InitFlag = 0;
 125   5                                      }
 126   4                     
 127   4                      //printu("playing...\n");
 128   4                                      PlayMP3(&SONG[11 * NowPlaying]);                     //如果处于播放状态,则播放当前歌曲
 129   4                      //printu("end of playing\n");
 130   4                              }
 131   3                              if(NowPlaying == NumofSong) 
 132   3                              {
 133   4                                  printu("end of playing\n");
 134   4                                      PlayState = STOP;                                                //全部歌曲播放完了,播放器停止
 135   4                                      NowPlaying = 0;                                      //循环播放  
 136   4                              }
 137   3                              P3_5 =~P3_5;                                             //指示LED闪烁
 138   3                      } 
 139   2                
 140   2                }
 141   1      
 142   1              // else ; // printu(">>>> KT MP3 USB Disk V5.55 <<<<\n");
 143   1      
 144   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    335    ----
   CONSTANT SIZE    =    209    ----
   XDATA SIZE       =     88    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   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 + -