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

📄 main.lst

📁 一款硬盘MP3的源代码
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  11/27/2005 23:13:38 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 BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /************************************************************************************
   2            本程序仅供广大电子爱好者制作MP3学习和参考使用,不得用于其它用途,否则后果自负
   3            
   4            AT89C51SND1C 解码芯片做的硬盘MP3,软件还在完善中,现在只支持一块硬盘,一个分区,
   5            至少可支持15层目录。只支持FAT32文件系统。支持USB1.1下载文件,速度300KB/S左右。
   6            7.5*2个汉字液晶显示。可显示歌曲名,当前曲号等。可进行前后选曲。部分MP3文件不能解码。
   7            本人联系方法:QQ: 156872359  E_mail: Computer-lov@163.com   愿与大家共同学习。
   8          *************************************************************************************/
   9          
  10          
  11          /* MAIN.C File
  12             The MP3 main file
  13             Created by Computer-lov. Date: 2005.3.19
  14             Last edited date: 2005.5.31
  15             Copyright (c) 2005 Computer-lov
  16             version 1.1
  17          */
  18          
  19          #include "AT89C51SND1C.H"
  20          #include "ide.h"
  21          #include "hardware.h"
  22          #include "file_system.h"
  23          #include "Initial.h"
  24          #include "keyboard.h"
  25          #include "MP3.H"
  26          #include "LCD.H"
  27          
  28          void usb(void);
  29          
  30          ////////////////////////////////////////////  主函数  ///////////////////////////////
  31          void main(void)
  32          {
  33   1      unsigned char i;
  34   1      unsigned char key_press_time;
  35   1      unsigned char hard_disk_sleep=0;
  36   1      
  37   1      system_initial();  //初始化
  38   1      status=START;
  39   1      driver_number=0;   //选择第一个分区
  40   1      key=0;
  41   1      function=FUN_SEL;  //歌曲选择状态
  42   1      while(1)
  43   1        {
  44   2         switch (status)
  45   2          {
  46   3           case START:              //开机
  47   3                     {
  48   4                      vol=10;
  49   4                      bas=10;
  50   4                      med=2;
  51   4                      tre=10;
  52   4                      set_vol(vol);
  53   4                      set_vor(vol);
  54   4                      set_bas(bas);
  55   4                      set_med(med);
C51 COMPILER V7.50   MAIN                                                                  11/27/2005 23:13:38 PAGE 2   

  56   4                      set_tre(tre);       //音量等初始化
  57   4                      LCD_go_home();
  58   4                      for(i=0;i<14;i++)write_LCD_data(((unsigned char *)dir_name)[i]);
  59   4                      LCD_line_feed();
  60   4                      prints("停止          ");
  61   4                      item_count=0;
  62   4                      while(!key);
  63   4                      if(key==KEY_FUN){status=USB;break;}
  64   4                      status=STOP;
  65   4                      break;
  66   4      
  67   4                     }
  68   3           case STOP:{              //停止
  69   4                      LCD_go_home();
  70   4                      for(i=0;i<14;i++)write_LCD_data(((unsigned char *)dir_name)[i]);
  71   4                      while(!key);
  72   4                      switch (key)
  73   4                       {
  74   5                        case KEY_OK:
  75   5                         {
  76   6                          key_press_time=0;
  77   6                          while(!(P1_3))
  78   6                           {
  79   7                            delayXms(10);
  80   7                            key_press_time++;
  81   7                            if(key_press_time==130)break;
  82   7                           }
  83   6                          if(key_press_time==130)
  84   6                           {
  85   7                            write_IDE_command(IDE_Sleep);
  86   7                            LCD_line_feed();
  87   7                            prints("现在可以关机了");
  88   7                            hard_disk_sleep=0xFF;
  89   7                            break;
  90   7                           }
  91   6                          if(hard_disk_sleep)
  92   6                           {
  93   7                            reset_IDE();
  94   7                            hard_disk_sleep=0;
  95   7                            LCD_line_feed();
  96   7                            prints("               ");
  97   7                           }
  98   6                          if(file_or_folder==IS_MP3FILE)
  99   6                           {
 100   7                            get_nst_file();
 101   7                            status=PLAY;
 102   7                           }
 103   6                          if(file_or_folder==IS_FOLDER)
 104   6                            {
 105   7                             enter_dir();
 106   7                             get_next_item();
 107   7                             LCD_line_feed();
 108   7                             for(i=0;i<14;i++)write_LCD_data(((unsigned char *)item_name)[i]);
 109   7                            }
 110   6                          break;
 111   6                         }
 112   5                        case KEY_UP:
 113   5                         {
 114   6                          get_pre_item();
 115   6                          LCD_line_feed();
 116   6                          for(i=0;i<14;i++)write_LCD_data(((unsigned char *)item_name)[i]);
 117   6                          break;
C51 COMPILER V7.50   MAIN                                                                  11/27/2005 23:13:38 PAGE 3   

 118   6                         }
 119   5                        case KEY_DOWN:
 120   5                         {
 121   6                          get_next_item();
 122   6                          LCD_line_feed();
 123   6                          for(i=0;i<14;i++)write_LCD_data(((unsigned char *)item_name)[i]);
 124   6                          break;
 125   6                         }
 126   5                        case KEY_FUN:
 127   5                         {
 128   6                          exit_dir();
 129   6                          get_next_item();
 130   6                          LCD_line_feed();
 131   6                          for(i=0;i<14;i++)write_LCD_data(((unsigned char *)item_name)[i]);
 132   6                          break;
 133   6                         }
 134   5                       }key=0;break;
 135   4                      }
 136   3      
 137   3           case PLAY:{play();break;}         //播放
 138   3           case USB: {usb();break;}          //USB下载
 139   3           key=0;
 140   3          }
 141   2        }
 142   1      }
 143          /////////////////////////////////////////////////////////////////////////////////////////
 144          
 145          
 146          
 147          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    455    ----
   CONSTANT SIZE    =     46    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       3
   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 + -