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

📄 fatdisksize.lst

📁 C51实现的FAT32文件系统
💻 LST
📖 第 1 页 / 共 3 页
字号:
  43      =2  #endif
  44      =2  
  45      =2  #endif
   8      =1  #include "..\Inc\COMMON.h"
   1      =2  /********************************************************/
   2      =2  /*                                                      */
   3      =2  /*  库   名   称:通 用 函 数 库                        */
   4      =2  
   5      =2  /*  功 能  描 述:通用函数库。                          */
   6      =2  
   7      =2  /********************************************************/
   8      =2  
   9      =2  //设备类型
  10      =2  #define MEDIA_TYPE_HDD                                          0x01            //硬盘
  11      =2  #define MEDIA_TYPE_CDROM                                        0x02            //光驱
  12      =2  #define MEDIA_TYPE_FLASH                                        0x03            //FLASH
  13      =2  
  14      =2  #ifndef _COMMON_DEFINE
  15      =2   #define _COMMON_DEFINE
  16      =2  
  17      =2  #endif
  18      =2  
  19      =2  extern void COMMVersion(void);
  20      =2  extern WORD MEMSwap16(WORD value);
  21      =2  extern DWORD MEMSwap32(DWORD value);
  22      =2  extern void Uni2GB(char *s,CHAR len);
C51 COMPILER V6.23a  FATDISKSIZE                                                           12/24/2004 00:11:39 PAGE 5   

  23      =2  extern void WORD2CHAR(WORD in,CHAR *out,BYTE l);
  24      =2  extern void BYTE2CHAR(BYTE in,CHAR *out,BYTE l);
  25      =2  
   9      =1  #include "..\Inc\IDEIO.h"
   1      =2  /********************************************************/
   2      =2  /*                                                      */
   3      =2  /*  库   名   称:IDE基本I/O函数库                      */
   4      =2  /*  功 能  描 述:提供IDE接口设备基本读写、控制等功能。 */
   5      =2  /*                                                      */
   6      =2  /********************************************************/
   7      =2  
   8      =2  #ifndef _TYPE_DEFINE
           =2  #define _TYPE_DEFINE
           =2  typedef bit BOOL;
           =2  typedef unsigned char BYTE;
           =2  typedef unsigned char CHAR;
           =2  typedef unsigned int WORD;
           =2  typedef unsigned long DWORD;
           =2 #endif
  16      =2  
  17      =2  #ifndef _IDEIO_DEFINE
  18      =2   #define _IDEIO_DEFINE
  19      =2  
  20      =2  //IDE设备基地址
  21      =2  #define IDE_ADDR_BASE                                           0x8000
  22      =2  
  23      =2  //IDE设备寄存器组地址偏移量
  24      =2  #define IDE_ADDR_CTRL                                           0x1000
  25      =2  #define IDE_ADDR_CMD                                            0x0000
  26      =2  
  27      =2  //IDE设备寄存器偏移量
  28      =2  #define IDE_IO_DA0                                              0x01
  29      =2  #define IDE_IO_DA1                                              0x02
  30      =2  #define IDE_IO_DA2                                              0x04
  31      =2  
  32      =2  //IDE设备控制I/O线
  33      =2  #define IDE_IO_RESET                                            P5_0
  34      =2  
  35      =2  //IDE设备数据端口
  36      =2  #define IDE_PORT_DATLSB                                         ACC
  37      =2  #define IDE_PORT_DATMSB                                         DAT16H
  38      =2  
  39      =2  //IDE 函数返回值
  40      =2  #define IDE_SUCCESSFUL                                          0x00
  41      =2  #define IDE_ERROR_RESET                                         0x01
  42      =2  #define IDE_ERROR_DIAGNOSTIC                                    0x01
  43      =2  #define IDE_ERROR_BSY                                           0x10
  44      =2  #define IDE_ERROR_DRQ                                           0x11
  45      =2  #define IDE_ERROR_DRDY                                          0x12
  46      =2  #define IDE_ERROR_NODATA                                        0x13
  47      =2  
  48      =2  //电源管理
  49      =2  #define IDE_POWER_SLEEP                                         0x00
  50      =2  #define IDE_POWER_IDLE                                          0x01
  51      =2  #define IDE_POWER_STANDBY                                       0x02
  52      =2  
  53      =2  //设备编号
  54      =2  #define IDE_DEVICE0                                             0
  55      =2  #define IDE_DEVICE1                                             1
  56      =2  
  57      =2  #define IDE_RESET_HARDWARE                                      0
  58      =2  #define IDE_RESET_SOFTWARE                                      1
C51 COMPILER V6.23a  FATDISKSIZE                                                           12/24/2004 00:11:39 PAGE 6   

  59      =2  
  60      =2  #define IDE_DEVICE_MASTER                                       0x00
  61      =2  #define IDE_DEVICE_SLAVE                                        0x10
  62      =2  
  63      =2  //设备类型
  64      =2  #define DRIVER_TYPE_HDD                                         0x01            //硬盘
  65      =2  #define DRIVER_TYPE_CDROM                                       0x02            //光驱
  66      =2  #define DRIVER_TYPE_FLASH                                       0x03            //FLASH
  67      =2  
  68      =2  //IDE扇区读写
  69      =2  #define IDEReadSector(X)                                        IDE.CurrentSector=X; _IDEReadSector()
  70      =2  #define IDEWriteSector(X)                                       IDE.CurrentSector=X; _IDEWriteSector()
  71      =2  
  72      =2  //IDE接口参数表
  73      =2  struct IDEStr                                    
  74      =2  {
  75      =2          BYTE    TotalDevices;           //驱动器数量
  76      =2          BYTE    CurrentDevice;          //当前驱动器
  77      =2          DWORD   CurrentSector;          //当前扇区号
  78      =2          WORD    BytesPerSec;            //每扇区字节数
  79      =2  };
  80      =2  
  81      =2  //IDE设备参数表
  82      =2  struct IDEDeviceStr
  83      =2  {
  84      =2          BYTE    DriverType;             //驱动器类型
  85      =2          DWORD   TotalSectors;           //总扇区数
  86      =2  };
  87      =2  
  88      =2  //硬盘参数表
  89      =2  struct HDDStr                           //硬盘介质参数表
  90      =2  {
  91      =2          BYTE    TotalPartitions;        //分区数
  92      =2          BYTE    CurrentPartition;       //当前分区
  93      =2  };
  94      =2  #ifndef _LIBRARY_DEFINE
           =2  xdata BYTE DiskBuffer[512];
           =2 
           =2  xdata struct IDEStr IDE;
           =2  xdata struct IDEDeviceStr IDEDevice[2];
           =2  xdata struct HDDStr HDD;
           =2 #endif
 101      =2  #endif
 102      =2  
 103      =2  //磁盘缓冲区
 104      =2  extern xdata BYTE DiskBuffer[512];
 105      =2  
 106      =2  extern xdata struct IDEStr IDE;
 107      =2  extern xdata struct IDEDeviceStr IDEDevice[2];
 108      =2  extern xdata struct HDDStr HDD;
 109      =2  
 110      =2  extern void IDEInit(void);
 111      =2  extern BYTE IDEIdentifiedDevice(BYTE DeviceNum);
 112      =2  extern void IDESetCurrentDevice(BYTE DeviceNum);
 113      =2  extern BYTE IDEReset(BYTE bRestMode);
 114      =2  extern BOOL IDEStatus(BYTE flag,BYTE wait,BYTE logic,WORD timeout);
 115      =2  extern void IDEPowerManagement(BYTE cmd);
 116      =2  extern BYTE _IDEReadSector();                   //读一个扇区
 117      =2  extern BYTE _IDEWriteSector();                  //写一个扇区
  10      =1  #include "FAT.h"
   1      =2  /********************************************************/
   2      =2  /*                                                      */
C51 COMPILER V6.23a  FATDISKSIZE                                                           12/24/2004 00:11:39 PAGE 7   

   3      =2  /*  库   名   称:FAT文件系统函数库                   */
   4      =2  
   5      =2  /*  功 能  描 述:提供对FAT文件系统按文件名存取       */
   6      =2  /*                                                      */
   7      =2  /*                                                      */
   8      =2  /********************************************************/
   9      =2  
  10      =2  #ifndef _TYPE_DEFINE
           =2  #define _TYPE_DEFINE
           =2  typedef bit BOOL;
           =2  typedef unsigned char BYTE;
           =2  typedef unsigned char CHAR;
           =2  typedef unsigned int WORD;
           =2  typedef unsigned long DWORD;
           =2 #endif
  18      =2  
  19      =2  #ifndef _FAT_DEFINE
  20      =2   #define _FAT_DEFINE
  21      =2  
  22      =2  #define FAT_MAX_FCB                                             2
  23      =2  
  24      =2  //文件属性
  25      =2  #define FAT_ATTR_READ_ONLY                              0x01                    //文件属性:只读
  26      =2  #define FAT_ATTR_HIDDEN                                 0x02                    //文件属性:隐含
  27      =2  #define FAT_ATTR_SYSTEM                                 0x04                    //文件属性:系统
  28      =2  #define FAT_ATTR_VOLUME_ID                              0x08                    //文件属性:卷ID
  29      =2  #define FAT_ATTR_DIRECTORY                              0x10                    //文件属性:目录
  30      =2  #define FAT_ATTR_ARCHIVE                                0x20                    //文件属性:归档
  31      =2  #define FAT_ATTR_LONG_NAME                              FAT_ATTR_READ_ONLY+FAT_ATTR_HIDDEN+FAT_ATTR_SYSTEM+FAT_ATTR_VOLUME_ID   //文件
             -属性:长文件名
  32      =2  #define FAT_ATTR_LONG_NAME_MASK                 FAT_ATTR_READ_ONLY+FAT_ATTR_HIDDEN+FAT_ATTR_SYSTEM+FAT_ATTR_VOLUME_ID+FA
             -T_ATTR_DIRECTORY+FAT_ATTR_ARCHIVE     //文件属性:长文件名
  33      =2  #define FAT_LAST_LONG_ENTRY                             0x40                    //长文件名入口标记
  34      =2  
  35      =2  #define FAT_ERR_MBR_FLAG                                0x01                    //MBR扇区标志错误       FATMountPartition
  36      =2  #define FAT_ERR_PARTITION_NOT_FOUND             0x02                    //指定分区没找到        FATMountVolumeID
  37      =2  #define FAT_ERR_FILE_OPEN_ERROR                 FAT_MAX_FCB             //文件打开错误
  38      =2  #define FAT_ERR_DIR_NOT_FOUND                   0x01                    //指定的目录入口没有找到F       FATChangeDirectory
  39      =2  #define FAT_ERR_NOT_DIR                                 0x02                    //不是一个目录入口              FATChangeDirectory
  40      =2  
  41      =2  #define FAT_SEEK_BEGIN                                  0x01
  42      =2  #define FAT_SEEK_CURRENT                                0x02
  43      =2  #define FAT_SEEK_END                                    0x03
  44      =2  
  45      =2  #define FAT_TYPE_FAT12                                  0x01
  46      =2  #define FAT_TYPE_FAT16                                  0x02
  47      =2  #define FAT_TYPE_FAT32                                  0x03
  48      =2  
  49      =2  #define FAT_CLUSTER_END32                               0xffffffff              //簇链终点
  50      =2  #define FAT_CLUSTER_END16                               0xffff                  //簇链终点
  51      =2  #define FAT_CLUSTER_END12                               0xfff                   //簇链终点
  52      =2  #define FAT_CLUSTER_RESERVED32                  0xfffffff6              //保留簇
  53      =2  #define FAT_CLUSTER_RESERVED16                  0xfff6                  //保留簇
  54      =2  #define FAT_CLUSTER_RESERVED12                  0xff6                   //保留簇
  55      =2  #define FAT_CLUSTER_BAD32                               0xfffffff7              //坏簇
  56      =2  #define FAT_CLUSTER_BAD16                               0xfff7                  //坏簇
  57      =2  #define FAT_CLUSTER_BAD12                               0xff7                   //坏簇
  58      =2  
  59      =2  #define FAT_MASK_FAT32                                  0x0fffffff
  60      =2  #define FAT_MASK_FAT16                                  0x0000ffff
  61      =2  #define FAT_MASK_FAT12                                  0x00000fff
  62      =2  
C51 COMPILER V6.23a  FATDISKSIZE                                                           12/24/2004 00:11:39 PAGE 8   

  63      =2  #define FAT_MAX_PARTITIONS                              0x10
  64      =2  //#define IO_ERROR                                              0x00                            //遇到io错误
  65      =2  //#define NO_IO_ERROR                                   0x01                            //没有遇到io错误
  66      =2  
  67      =2  //计算指定簇的开始扇区号
  68      =2  #define ClusterToSector(X)                      FAT.ClusSec + (X - 2) * FAT.SecPerClus
  69      =2  
  70      =2  struct StorageMediaStr
  71      =2  {
  72      =2          WORD    BytesPerSec;                    //每扇区字节数

⌨️ 快捷键说明

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