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

📄 main.lst

📁 51单片机硬盘MP3播放器 的原理图及源代码 增加了USB下载文件功能; 汉字LCD显示功能;子文件夹功能等。并对软件做了一些修改。并将硬件电路图画出来了。由于做得仓促
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  03/02/2006 23:11:50 PAGE 1   


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

stmt 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             version 1.1
  16             Copyright (c) 2005 Computer-lov
  17             All rigths reserved
  18          */
  19          
  20          #include "AT89C51SND1C.H"
  21          #include "ide.h"
  22          #include "hardware.h"
  23          #include "file_system.h"
  24          #include "Initial.h"
  25          #include "keyboard.h"
  26          #include "MP3.H"
  27          #include "LCD.H"
  28          
  29          void usb(void);
  30          
  31          ////////////////////////////////////////////  主函数  ///////////////////////////////
  32          void main(void)
  33          {
  34   1       unsigned char i;
  35   1       unsigned char key_press_time;
  36   1       unsigned char hard_disk_sleep=0;
  37   1      
  38   1       system_initial();  //初始化
  39   1       status=START;
  40   1       driver_number=0;   //选择第一个分区
  41   1       key=0;
  42   1       function=FUN_SEL;  //歌曲选择状态
  43   1       while(1)
  44   1        {
  45   2         switch (status)
  46   2          {
  47   3           case START:              //开机
  48   3                     {
  49   4                      vol=10;
  50   4                      bas=10;
  51   4                      med=2;
  52   4                      tre=10;
  53   4                      set_vol(vol);
  54   4                      set_vor(vol);
  55   4                      set_bas(bas);
C51 COMPILER V7.06   MAIN                                                                  03/02/2006 23:11:50 PAGE 2   

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

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


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 + -