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

📄 main.lst

📁 基于at89c51snd1c的硬盘MP3播放器
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  08/03/2008 09:58:42 PAGE 1   


C51 COMPILER V8.02, 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            本人联系方法: 
   8                           E_mail: Computer-lov@tom.com  
   9                             Blog: http://computer00.21ic.org
  10                                                                 愿与大家共同学习。
  11          *************************************************************************************/
  12          
  13          
  14          /* MAIN.C File
  15             The MP3 main file
  16             Created by Computer-lov. Date: 2005.3.19
  17             Last edited date: 2005.5.31
  18             version 1.1
  19             Copyright (c) 2005 Computer-lov
  20             All rigths reserved
  21          */
  22          
  23          #include "AT89C51SND1C.H"
  24          #include "ide.h"
  25          #include "hardware.h"
  26          #include "file_system.h"
  27          #include "Initial.h"
  28          #include "keyboard.h"
  29          #include "MP3.H"
  30          #include "LCD.H"
  31          
  32          void usb(void);
  33          
  34          ////////////////////////////////////////////  主函数  ///////////////////////////////
  35          void main(void)
  36          {
  37   1       unsigned char i;
  38   1       unsigned char key_press_time;
  39   1       unsigned char hard_disk_sleep=0;
  40   1      
  41   1       system_initial();  //初始化
  42   1       status=START;
  43   1       driver_number=0;   //选择第一个分区
  44   1       key=0;
  45   1       function=FUN_SEL;  //歌曲选择状态
  46   1       while(1)
  47   1        {
  48   2         switch (status)
  49   2          {
  50   3           case START:              //开机
  51   3                     {
  52   4                      vol=10;
  53   4                      bas=10;
  54   4                      med=2;
  55   4                      tre=10;
C51 COMPILER V8.02   MAIN                                                                  08/03/2008 09:58:42 PAGE 2   

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

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