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

📄 znfat.lst

📁 f340的MP3程序,通过SD卡读入解码器
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.09   ZNFAT                                                                 05/19/2011 23:29:42 PAGE 1   


C51 COMPILER V8.09, COMPILATION OF MODULE ZNFAT
OBJECT MODULE PLACED IN znFAT.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE znFAT.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1           #include "znfat.h"
   2          #include "sd.h"        //存储设备的扇区读写驱动,这里是SD卡
   3          //#include "ch375.h"       //存储设备的扇区读写驱动,这里是U盘
   4          //#include "cf.h"
   5          #include "string.h"
   6          
   7          /*******************************************************
   8          
   9                  +-----------------------------------------+
  10                  |振南电子 原创程序模块 znFAT文件系统 5.18 |
  11                  +-----------------------------------------+
  12          
  13            此源码版权属 振南 全权享有,如欲引用,敬请署名并告知
  14                  严禁随意用于商业目的,违者必究,后果自负
  15                   振南电子 
  16                       ->产品网站 http://www.znmcu.cn/
  17                       ->产品网店 http://shop.znmcu.cn/
  18                       ->产品咨询 QQ:987582714 
  19                                              MSN:yzn07@126.com
  20                                      WW:yzn07
  21          说明:znFAT经多方测试,确保其正确性与稳定性,请放心使用,
  22                如有bug敬请告知,谢谢!!                           
  23          ********************************************************/
  24          
  25          //全局变量定义
  26          struct direntry temp_rec;
  27          INT8 temp_dir_name[13]; 
  28          UINT32 temp_dir_cluster;
  29          UINT32 temp_last_cluster;
  30          
  31          UINT8 xdata znFAT_Buffer[512]; //扇区数据读写缓冲区,由外部提供
  32          
  33          /******************************************************************
  34           - 功能描述:znFAT的存储设备初始化函数
  35           - 隶属模块:znFAT文件系统模块
  36           - 函数属性:外部(用于对存储设备进行初始化)
  37           - 参数说明:无
  38           - 返回说明:无
  39           - 注:在调znFAT其它函数之前,必须先对存储设备进行成功的初始化。
  40           ******************************************************************/
  41          
  42          void znFAT_Device_Init()
  43          {
  44   1       SD_Reset();
  45   1       SD_Init(); 
  46   1      }
  47          
  48          /******************************************************************
  49           - 功能描述:znFAT的存储设备底层驱动接口,读取存储设备的addr扇区的
  50                       512个字节的数据放入buf数据缓冲区中
  51           - 隶属模块:znFAT文件系统模块
  52           - 函数属性:内部(用于与存储设备的底层驱动对接)
  53           - 参数说明:addr:扇区地址
  54                       buf:指向数据缓冲区的指针
  55           - 返回说明:0表示读取扇区成功,否则失败
C51 COMPILER V8.09   ZNFAT                                                                 05/19/2011 23:29:42 PAGE 2   

  56           - 注:这里加入了天狼星精华板上的三种存储设备,即SD卡(有效)、U盘、
  57                 CF卡通过在程序中动态的切换不同的设备驱动,从而实现多设备(即同
  58                     时对多种存储设备进行操作,比如从SD卡拷贝文件到U盘等等),不同
  59                     驱动的切换,只需要在程序中改变Dev_No这个全局变量的值即可
  60           ******************************************************************/
  61          
  62          UINT8 znFAT_ReadSector(UINT32 addr,UINT8 *buf) 
  63          {
  64   1       switch(Dev_No) //由Dev_No来决定所使用的存储设备驱动
  65   1       {
  66   2        case SDCARD:
  67   2               return SD_Read_Sector(addr,buf);
  68   2               break;
  69   2        case UDISK:
  70   2               //return CH375_Read_Sector(addr,buf);
  71   2               break;
  72   2        case CFCARD:
  73   2               //return CF_Read_Sector(addr,buf);
  74   2               break;
  75   2        case OTHER:
  76   2               //return XXX_Read_Sector(addr,buf);
  77   2               break;
  78   2       }
  79   1      }
  80          
  81          /******************************************************************
  82           - 功能描述:znFAT的存储设备底层驱动接口,将buf数据缓冲区中的512个
  83                       字节的数据写入到存储设备的addr扇区中
  84           - 隶属模块:znFAT文件系统模块
  85           - 函数属性:内部(用于与存储设备的底层驱动对接)
  86           - 参数说明:addr:扇区地址
  87                       buf:指向数据缓冲区
  88           - 返回说明:0表示读取扇区成功,否则失败
  89           - 注:略
  90           ******************************************************************/
  91          
  92          UINT8 znFAT_WriteSector(UINT32 addr,UINT8 *buf)
  93          {
  94   1       switch(Dev_No) //由Dev_No来决定所使用的存储设备驱动
  95   1       {
  96   2        case SDCARD:
  97   2               return SD_Write_Sector(addr,buf);
  98   2               break;
  99   2        case UDISK:
 100   2               //return CH375_Write_Sector(addr,buf);
 101   2               break;
 102   2        case CFCARD:
 103   2               //return CF_WriteSector(addr,buf);
 104   2               break;
 105   2        case OTHER:
 106   2               //return XXX_Write_Sector(addr,buf);
 107   2               break;
 108   2       }
 109   1      }
 110          
 111          /******************************************************************
 112           - 功能描述:小端转大端,即LittleEndian车BigEndian
 113           - 隶属模块:znFAT文件系统模块
 114           - 函数属性:内部
 115           - 参数说明:dat:指向要转为大端的字节序列
 116                       len:要转为大端的字节序列长度
 117           - 返回说明:转为大端模式后,字节序列所表达的数据
C51 COMPILER V8.09   ZNFAT                                                                 05/19/2011 23:29:42 PAGE 3   

 118           - 注:比如:小端模式的       0x33 0x22 0x11 0x00  (低字节在前)
 119                       转为大端模式后为 0x00 0x11 0x22 0x33  (高字节在前)
 120                       所表达的数值为   0x00112233
 121                       (CISC的CPU通常是小端的,所以znFAT也设计为小端,而单片机
 122                        这种RISC的CPU,通常来说都是大端的,所以需要这个函数将字
 123                        节的存放次序进行调整,才能得到正确的数值)
 124           ******************************************************************/
 125          
 126          UINT32 LE2BE(UINT8 *dat,UINT8 len) 
 127          {
 128   1       UINT32 temp=0;
 129   1       UINT32 fact=1;
 130   1       UINT8  i=0;
 131   1       for(i=0;i<len;i++)
 132   1       {
 133   2        temp+=dat[i]*fact; //将各字节乘以相应的权值后累加
 134   2        fact*=256; //更新权值
 135   2       }
 136   1       return temp;
 137   1      }
 138          
 139          //-----------------------------------
 140          
 141          /**************************************************************************
 142           - 功能描述:清空某个簇的所有扇区,填充0
 143           - 隶属模块:znFAT文件系统模块

⌨️ 快捷键说明

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