亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fatfunction.c

?? 單片機讀寫U盤源碼 基于51單片機和國產USB芯片CH374
?? C
?? 第 1 頁 / 共 3 頁
字號:
     //  調試語句
     #ifdef  DEBUG_CREAT       
     printf( " 記錄找到的起始簇的簇號:%d \n" , Cluster ) ;
     #endif                
     TotalSectors = FAT.SecPerClus ;
     
     while ( 1 )
     {
          //計算該簇號對應的FAT表偏移
          //讀取FAT表,查詢要寫的簇
          FAT.FirstSectofClu = ( ( Cluster - 2 ) * FAT.SecPerClus ) + FAT.FirstDataSector ;
          NextCluster = x16List( Cluster , 0, ModeZ2 ) ;
          ProcessSector = FAT.FirstSectofClu ;
          TransNum = 0 ;
          //調試語句
          #ifdef  DEBUF_CREAT
          printf( " 本文件/目錄下一個簇號:NextCluster = %d\n ", NextCluster ) ;
          #endif
          
          while( TotalSectors )
          {
               //更新讀取扇區參數
               ProcessSector += TransNum ;
               TransNum = TotalSectors >= DiskNums ? DiskNums : TotalSectors ;
               
               //讀取根目錄N個扇區( N <= SecNum_of_BUF )到DISK_BUF中
               s = mReadSector( ProcessSector ,TransNum ,DISKBUF );
		             if ( s != USB_INT_SUCCESS )
		                  return( ERR_Check ) ;
		                  
		             //在DISK_BUF中查找文件
		             TransBytes = TransNum << FAT.shift ;
               for ( POINT2 = DISKBUF ; POINT2 < DISKBUF + TransBytes ; POINT2 += 32 )     
               {
                    if ( ! ( *POINT2 ) || ( *POINT2 == 0xE5 ) || ( *POINT2 == 0x05 ) )    //若是空文件項,則退出
                    {    
                         FindFlag = 1 ;
                         wr -> find.TransNum = TransNum ;
                         wr -> find.Sector = ProcessSector ;
                         wr -> find.Offset = POINT2 ;
                         //調試語句
                         #ifdef  DEBUG_CREAT
                         printf( " 找到目錄/文件 !\n " ) ;
                         printf( " 文件地址信息記錄:\n " ) ;
                         printf( " 本次傳輸的扇區數:%d\n ", ( UINT16 )wr -> find.TransNum ) ;
                         printf( " 本次傳輸的起始扇區號:%ld\n ", wr -> find.Sector ) ;
                         printf( " 本次傳輸的扇區內偏移:%p \n ", wr -> find.Offset ) ;
                         #endif
                         break ;
                    }
               }
               if ( FindFlag )
               break ;
               TotalSectors -= TransNum ;
          }
          if ( FindFlag || NextCluster == 0xFFFF )
               break ;
          Cluster = NextCluster ;              
     }
     
     if ( ! FindFlag && NextCluster == 0xFFFF )
     {
          NextCluster = x16CheckClus( ) ;
          if ( NextCluster == 0x00 )
               return( ERR_FullDisk ) ;
          else  if ( NextCluster == ERR_CheckClus )
               return( ERR_CheckClus ) ;
          
          wr -> find.TransNum = 1 ;
          wr -> find.Sector = ( ( NextCluster - 2 ) * FAT.SecPerClus ) + FAT.FirstDataSector ; ;
          wr -> find.Offset = DISKBUF ;
          
          //更新根目錄中起始簇信息
          //調試語句
          #ifdef  DEBUG_CREAT
          printf( " 更新根目錄中簇信息: " ) ;
          #endif
          s = x16List( Cluster, NextCluster, ModeZ1 ) ;
          if( s != ListSuccess )
               return( s ) ;
      
          s = x16List( NextCluster, 0xFFFF, ModeZ1 ) ;
          if( s != ListSuccess )
               return( s ) ;
     }
     
     //讀取目錄可寫域信息
     ProcessSector = wr -> find.Sector ;
     POINT0 = wr -> find.Offset ;
     TransNum = wr -> find.TransNum ;
     
     s = mReadSector( ProcessSector, TransNum, DISKBUF );
		   if ( s != USB_INT_SUCCESS )
		        return( ERR_Read ) ;      
     
     s = xProcessDirectory( wr, Attribute ) ;
     if ( s != DirectorySuccess )
          return( s ) ;
     
     return( CreatSuccess ) ;
}       

/*********************************************************************************************************
** 函數名稱: CheckFile
** 功能描述: 在一定范圍內查找文件/目錄
**
** 輸 入: wr : 指向文件信息結構FILE的指針
**         TotalSectors: 為該范圍總扇區數
**         ProcessSector: 為該范圍首地址
** 輸 出: 在該范圍內查找文件,返回FindFlag標識,以便外部程序調用
**         找到的文件/目錄在簇內的地址信息記錄在FIND結構中
**           A.返回ERR_Check報告異常傳輸錯誤
**           B.返回FindFlag為0x00表示未找到文件
**           C.返回FindFlag為0x01表示找到文件
**         
** 全局變量: wr -> find.Offset, wr -> find.TransNum, wr -> find.Sector, DiskNums
** 調用模塊: mReadSector
** 調試碼:   DEBUG_CF
**
**
** 作 者: 徐亦朱
** 日 期: 2007年9月21日
**-------------------------------------------------------------------------------------------------------
** 修改人: 徐亦朱
** 日 期: 2007.9.27
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
UINT8  CheckFile( FILE * wr, UINT16 TotalSectors, UINT32 ProcessSector ) 
{
     UINT8  i ;
     UINT8  s ;
     UINT8  *POINT1 ;
     UINT8  *POINT2 ;
     UINT8  FindFlag ;
	    UINT8  TransNum ;
     UINT16 TransBytes ;
  
     //初始化變量
     FindFlag = 0 ;
     TransNum = 0 ;
     //在范圍內( 1簇或根目錄內 )查找文件
     while ( TotalSectors )      
     {
          //更新讀取扇區參數
          ProcessSector += TransNum ;
          TransNum = TotalSectors >= DiskNums ? DiskNums : TotalSectors ;
          
          //讀取根目錄N個扇區( N <= DiskNums )到DISK_BUF中
          s = mReadSector( ProcessSector ,TransNum ,DISKBUF );
		        if ( s != USB_INT_SUCCESS )
		             return( ERR_Check ) ;
		        
		        //在DISK_BUF中查找文件
		        TransBytes = TransNum << FAT.shift ;
          for ( POINT1 = DISKBUF ; POINT1 < DISKBUF + TransBytes ; POINT1 += 32 )     
          {
               if ( ! ( *POINT1 ) )               //若是空文件項,則退出
               {    
                    FindFlag = 0 ;
                    return( FindFlag ) ;
               }
               else                               //判斷文件名是否相同
               {
                    POINT2 = wr -> Name ;
                    for ( i = 0; i < 11; i ++ )
                    {
                         if ( *( POINT1 + i ) == *( POINT2 + i ) )
                         {
                              FindFlag = 1 ;
                              continue ;
                         }
                         FindFlag = 0 ;
                         break ;
                    }
                    if ( FindFlag )
                    {
                         wr -> find.TransNum = TransNum ;
                         wr -> find.Sector = ProcessSector ;
                         wr -> find.Offset = POINT1 ;
                         //調試語句
                         #ifdef  DEBUG_CF
                         printf( " 找到目錄/文件 !\n " ) ;
                         printf( " 文件地址信息記錄:\n " ) ;
                         printf( " 本次傳輸的扇區數:%d\n ", ( UINT16 )wr -> find.TransNum ) ;
                         printf( " 本次傳輸的起始扇區號:%ld\n ", wr -> find.Sector ) ;
                         printf( " 本次傳輸的扇區內偏移:%p \n ", wr -> find.Offset ) ;
                         #endif
                         return( FindFlag ) ;
                    }
               }
          }
          TotalSectors -= TransNum ;
     }
     return( FindFlag ) ;
}

/*********************************************************************************************************
** 函數名稱: CheckFirst16
** 功能描述: 在FAT16根目錄內查找文件 /目錄
**
** 輸 入: wr : 指向文件信息結構FILE的指針
** 輸 出: 在該范圍內查找文件,返回FindFlag標識,以便外部程序調用
**         找到的文件/目錄在簇內的地址信息記錄在FIND結構中
**           A.返回ERR_Check報告異常傳輸錯誤
**           B.返回FindFlag為0x00表示未找到文件
**           C.返回FindFlag為0x01表示找到文件
**         
** 全局變量: FAT.RootDirSectors, FAT.FirstRootSector
** 調用模塊: CheckFile
** 調試碼:   無
**
**
** 作 者: 徐亦朱
** 日 期: 2007年9月21日
**-------------------------------------------------------------------------------------------------------
** 修改人: 徐亦朱 
** 日 期: 2007.9.27
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
UINT8  CheckFirst16( FILE * wr )
{
     UINT8  s ;
     UINT8  FindFlag ;
     
     //初始化標記位
     FindFlag = 0 ;

     s = CheckFile( wr, FAT.RootDirSectors, FAT.FirstRootSector ) ;
     if ( s == ERR_Check )
          return( s ) ;
     FindFlag = s ? 0x01 : 0x00 ;
     return( FindFlag ) ;
}

/*********************************************************************************************************
** 函數名稱: x16CheckFile
** 功能描述: 在FAT16目錄內查找文件
**
** 輸 入: wr : 指向文件信息結構FILE的指針
** 輸 出: 在該范圍內查找文件,返回FindFlag標識,以便外部程序調用
**         找到的文件/目錄在簇內的地址信息記錄在FIND結構中
**           A.返回ERR_Check報告異常傳輸錯誤
**           B.返回FindFlag為0x00表示未找到文件
**           C.返回FindFlag為0x01表示找到文件
**         
** 全局變量: wr -> find.Offset, FAT.SecPerClus, FAT.FirstSectofClu
** 調用模塊: x16List, CheckFile
** 調試碼:   DEBUG_XCF
**
**
** 作 者: 徐亦朱
** 日 期: 2007年9月21日
**-------------------------------------------------------------------------------------------------------
** 修改人: 徐亦朱
** 日 期: 2007.9.27
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
UINT8  x16CheckFile( FILE * wr )
{
     UINT8  s ;
     UINT8  *POINT0 ;
     UINT8  FindFlag ;
     UINT16 Cluster ;
     UINT16 NextCluster ;
     
     //初始化變量
     FindFlag = 0 ;
     POINT0 = wr -> find.Offset ;
     Cluster = ( UINT16 )( *( POINT0 + 26 ) ) | ( UINT16 )( *( POINT0 + 27 ) ) << 8 ;
     
     //調試語句
     #ifdef  DEBUG_XCF
     printf( " 本文件/目錄起始簇號:Cluster = %d\n ", Cluster ) ;
     #endif
     
     while ( 1 )
     {
          //計算FAT表信息
          FAT.FirstSectofClu = ( ( Cluster - 2 ) * FAT.SecPerClus ) + FAT.FirstDataSector ;
          NextCluster = x16List( Cluster , 0, ModeZ2 ) ;
          
          s = CheckFile( wr, FAT.SecPerClus, FAT.FirstSectofClu ) ;
          if ( s == ERR_Check )
               return( s ) ;
          else  if ( s == 0x01 )
          {
               FindFlag = 0x01 ;
               return( FindFlag ) ;
          }
          if ( NextCluster == 0xFFFF )
               return( FindFlag ) ; 
          Cluster = NextCluster ;
     }
}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本欧美在线看| 亚洲美女视频在线观看| 色老汉一区二区三区| 国产麻豆视频一区二区| 日韩精品色哟哟| 婷婷久久综合九色综合绿巨人 | 毛片av一区二区三区| 亚洲成人中文在线| 三级欧美在线一区| 天天综合日日夜夜精品| 日韩成人伦理电影在线观看| 亚洲成在线观看| 日韩av一级片| 精品一二三四区| 国产成人精品免费一区二区| 国产成人精品亚洲777人妖| 高清视频一区二区| av高清不卡在线| 色综合中文字幕| 欧美日韩精品一区二区三区蜜桃 | 亚洲一区二区综合| 午夜精品影院在线观看| 奇米精品一区二区三区在线观看一| 日韩精品欧美精品| 国产酒店精品激情| 99re成人精品视频| 欧美丰满一区二区免费视频| 日韩精品一区二区在线| 国产精品理论在线观看| 一级做a爱片久久| 久久超级碰视频| 丁香五精品蜜臀久久久久99网站 | 亚洲国产精品久久不卡毛片 | 日韩欧美亚洲一区二区| 国产精品视频免费| 性久久久久久久久久久久| 国产一区二区三区不卡在线观看| 99久久久无码国产精品| 欧美日本一道本| 国产欧美日韩在线看| 亚洲综合精品久久| 国产精品资源网站| 欧美日韩国产bt| 国产精品久久久久aaaa樱花 | 国产精品萝li| 日韩在线a电影| 91在线视频在线| 精品国产sm最大网站免费看| 伊人色综合久久天天| 狠狠色综合色综合网络| 欧美亚洲一区二区在线观看| 国产午夜亚洲精品理论片色戒| 亚洲一区二区精品视频| 国产成人精品影视| 日韩一区二区不卡| 亚洲一区免费观看| 成人av网站在线| 欧美精品一区二区不卡| 亚洲 欧美综合在线网络| 99久久99久久综合| 精品第一国产综合精品aⅴ| 亚欧色一区w666天堂| 91免费版在线| 久久网这里都是精品| 日韩精品久久久久久| 在线观看免费成人| ●精品国产综合乱码久久久久 | 国产精品久久毛片a| 国产一区二区伦理| 欧美一级二级在线观看| 亚洲国产精品嫩草影院| 91视视频在线观看入口直接观看www | 国产激情一区二区三区| 日韩一区二区三区视频在线观看| 亚洲成人av电影在线| 欧美亚洲丝袜传媒另类| 亚洲人成人一区二区在线观看| 国产不卡一区视频| 中文字幕免费观看一区| 成人亚洲精品久久久久软件| 久久久久成人黄色影片| 国产激情一区二区三区| 国产片一区二区三区| 国产精品一卡二卡在线观看| 久久久www成人免费无遮挡大片| 青娱乐精品在线视频| 日韩欧美第一区| 国产乱码精品一区二区三| 久久综合狠狠综合| 国产成人av福利| 国产精品电影一区二区| 色偷偷一区二区三区| 亚洲国产视频网站| 欧美一卡在线观看| 精品一区二区免费在线观看| 国产偷国产偷精品高清尤物| 成人免费视频网站在线观看| **网站欧美大片在线观看| 在线国产亚洲欧美| 日韩电影在线一区| 精品国产成人在线影院| 成人黄色电影在线| 亚洲一区二区三区四区不卡| 91精品久久久久久久99蜜桃| 国产美女一区二区三区| 亚洲欧美怡红院| 666欧美在线视频| 国产一区二区女| 夜夜嗨av一区二区三区网页| 欧美高清视频在线高清观看mv色露露十八 | 91久久一区二区| 全国精品久久少妇| 中文字幕一区二区三区色视频 | 国产精品一区二区在线观看不卡 | 亚洲国产色一区| 2020国产精品自拍| 91国偷自产一区二区使用方法| 免费观看91视频大全| 国产精品毛片久久久久久| 欧美群妇大交群的观看方式| 国产一区视频导航| 亚洲高清中文字幕| 欧美高清在线精品一区| 欧美精品一二三区| 99视频热这里只有精品免费| 免费观看成人av| 一区二区三区免费看视频| 2019国产精品| 欧美电影一区二区三区| 99久久精品免费看| 久久国产精品99久久人人澡| 一区二区三区 在线观看视频| 欧美国产成人在线| 欧美大尺度电影在线| 欧美年轻男男videosbes| 91亚洲大成网污www| 国产成人午夜精品5599| 久久99国产精品久久99果冻传媒| 亚洲综合自拍偷拍| 国产精品久久久久aaaa樱花| 国产三级欧美三级| 欧美xxxxx牲另类人与| 91精品免费观看| 欧美丰满少妇xxxbbb| 欧美在线|欧美| 91九色02白丝porn| 色综合久久66| 日本乱人伦aⅴ精品| 色婷婷香蕉在线一区二区| 成人爱爱电影网址| 懂色av噜噜一区二区三区av| 国产成人欧美日韩在线电影| 国产精品一品视频| 国产精品系列在线观看| 国产在线精品一区二区不卡了| 午夜精品久久久久久不卡8050| 综合久久国产九一剧情麻豆| 国产精品国产三级国产普通话三级| 精品国产乱子伦一区| 欧美美女一区二区在线观看| 国产成人免费视频一区| 成人一区二区三区中文字幕| 精品午夜久久福利影院| 琪琪久久久久日韩精品| 夜夜爽夜夜爽精品视频| 亚洲视频小说图片| 国产精品午夜免费| 久久久久久久久久久久电影| 国产亚洲欧美在线| 26uuu国产在线精品一区二区| 日韩一级免费观看| 91精品在线一区二区| 精品免费视频.| 精品久久久影院| 精品国产sm最大网站免费看| 日韩精品一区在线观看| 国产精品久久三| 亚洲欧美日韩电影| 中文字幕亚洲成人| 中文字幕一区二区三区四区不卡 | 国产成人日日夜夜| 国产精品91一区二区| 国产精品亚洲专一区二区三区| 国内不卡的二区三区中文字幕| 成人国产精品免费观看| 成人动漫av在线| 91国偷自产一区二区三区观看 | 欧美日韩一级视频| 欧美日韩国产精选| 国产亚洲一区字幕| 国产精品不卡视频| 亚洲线精品一区二区三区 | 日韩一区二区三区免费看| 日韩一区二区在线看片| 26uuu亚洲| 亚洲美女淫视频| 国产传媒欧美日韩成人| 色综合色狠狠天天综合色| 欧美日韩在线播放| 国产精品美女视频|