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

📄 file_system.lst

📁 USB下载文件,汉字LCD显示,FAT32文件系统
💻 LST
字号:
C51 COMPILER V7.06   FILE_SYSTEM                                                           03/02/2006 23:11:50 PAGE 1   


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

stmt level    source

   1          /************************************************************************************
   2            本程序仅供广大电子爱好者制作MP3学习和参考使用,不得用于其它用途,否则后果自负
   3            
   4            file_system.c file
   5            Created by Computer-lov. Date: 2005.3.19
   6            Last edited date: 2005.5.31
   7            version 1.1
   8            Copyright (c) 2005 Computer-lov
   9            All rigths reserved
  10          *************************************************************************************/
  11          
  12          #include "file_system.h"
  13          #include "IDE.H"
  14          #include "hardware.h"
  15          #include "lcd.h"
  16          #include "mp3.h"
  17          #include "keyboard.h"
  18          
  19          
  20          FILE xdata file;
  21          unsigned int dir_length;     //文件名长度
  22          unsigned int folder_length;  //文件夹名长度
  23          
  24          ////////////////////////////////////  判断是否为一个 MP3 文件   ///////////////////////////////
  25          unsigned char is_a_mp3_file(void)
  26          {
  27   1       if((file.name[0]==0x00)||(file.name[0]==0xE5)||(file.name[0]=='.'))return 0;
  28   1       if(file.attribute==0x0F)return 0;  //此项目为长文件名项目
  29   1       if(file.attribute & 0x04)return 0;  //此文件为系统文件
  30   1       if(file.attribute & 0x08)return 0;  //此项目为系统标卷
  31   1       if(file.attribute & 0x10)return 0;  //此项目为子目录
  32   1       if((file.name[8]=='M')&&(file.name[9]=='P')&&(file.name[10]=='3'))return 1;
  33   1       else return 0;
  34   1      }
  35          ///////////////////////////////////////////////////////////////////////////////////////////////
  36          
  37          unsigned long int LAST_FAT_LBA; 
  38          //最后一次读取FAT时的逻辑块地址,用来判断本次读取是否需要重新从硬盘中读取,以加快速度
  39          unsigned int disp_count=0;
  40          unsigned char disp_time;
  41          
  42          ////////////////////////////////////////////////////////////////////////////////////////////////
  43          unsigned long int get_next_sector(void)  //根据当前簇号,获取下一个扇区地址
  44          {
  45   1       unsigned long int LBA;
  46   1       unsigned  int i;
  47   1       LBA=(file.next_cluster_number)/((dbr[driver_number].bytes_per_sectors)/4);  //计算扇区地址
  48   1       i=(file.next_cluster_number)*4-LBA*dbr[driver_number].bytes_per_sectors; //计算偏移地址
  49   1       if(LAST_FAT_LBA!=LBA)                  //如果数据不在FAT_buffer[]中,则需要重新读取
  50   1        {
  51   2         LAST_FAT_LBA=LBA;
  52   2         LBA=LBA+FAT_start_sector[driver_number];
  53   2         read_IDE_FAT_sector(LBA);
  54   2        }
  55   1       ((unsigned char *)&(file.next_cluster_number))[3]=FAT_buffer[i];
C51 COMPILER V7.06   FILE_SYSTEM                                                           03/02/2006 23:11:50 PAGE 2   

  56   1       i++;
  57   1       ((unsigned char *)&(file.next_cluster_number))[2]=FAT_buffer[i];
  58   1       i++;
  59   1       ((unsigned char *)&(file.next_cluster_number))[1]=FAT_buffer[i];
  60   1       i++;
  61   1       ((unsigned char *)&(file.next_cluster_number))[0]=FAT_buffer[i];  //获取下一簇号
  62   1       LBA=file.next_cluster_number-(dbr[driver_number].root_cluster_num);                                   //

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -