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

📄 hpi.lst

📁 单片机读写u盘的完整程序,代码全部用c语言编写。非常有价值的程序。这是本人花2500元购买的开发板源吗
💻 LST
📖 第 1 页 / 共 4 页
字号:
 652   1              */
 653   1              UartRspBlock.len=0;
 654   1              ThisFile.bFileOpen=1;
 655   1              //////////////////////////////////////////////
 656   1              return TRUE;
 657   1      #undef RspBlockWriteFile
 658   1      }
 659          
 660          unsigned char RemoveFile(unsigned char *pBuffer)
 661          {
 662   1      #define RspBlockRemoveFile UartRspBlock.RspBlock.Rsp_RemoveFile
 663   1              unsigned int sector,i;
 664   1              unsigned char bStop,j;
 665   1              PDIR_INFO pDirInfo;
 666   1              
 667   1              if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
 668   1              {
 669   2              UartRspBlock.errcode=ERC_NODEVICE;
 670   2              return FALSE;           
 671   2              }
 672   1              ///////////////////////////////////////////////////////////
 673   1              //RspBlockRemoveFile.result=0x1;
 674   1              ////////////// 清除目录/////////////////////////////////////
C51 COMPILER V6.21  HPI                                                                    06/13/2005 16:14:56 PAGE 12  

 675   1              for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
 676   1                      {   
 677   2                      //////////////////////////////////////////////////
 678   2                      if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
 679   2                              {
 680   3                              UartRspBlock.errcode=ERC_DEVICEERR;
 681   3                              return FALSE;   
 682   3                              }
 683   2                      ///////////////////////////////////////////////////
 684   2                      for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
 685   2                              {
 686   3                              if(DBUF[i]==0x00)
 687   3                                      {
 688   4                                      UartRspBlock.errcode=ERC_FILENOTFOUND;
 689   4                                      return FALSE;   
 690   4                                      }
 691   3                              ///////////////////////////////////////////
 692   3                              j=0;
 693   3                              while(DBUF[i+j]==*(pBuffer+j))
 694   3                                      {
 695   4                                       j=j+1;
 696   4                                       if(j>10) break;
 697   4                                       }//end while
 698   3                              
 699   3                              if(j>10)
 700   3                                      {       
 701   4                                      DBUF[i]=0xE5;
 702   4                                      pDirInfo=(PDIR_INFO)(DBUF+i);
 703   4                                      ThisFile.StartCluster=SwapINT16(pDirInfo->startCluster);
 704   4                                      //DelayMs(15);
 705   4                                      if(!RBC_Write(DeviceInfo.RootStartSector+sector,1,DBUF))
 706   4                                              {
 707   5                                              UartRspBlock.errcode=ERC_DEVICEERR;
 708   5                                              return FALSE;   
 709   5                                              }
 710   4                                      //////////////////// 清除FAT中的纪录////////////////////////
 711   4                                      //DelayMs(10);
 712   4                                      if(!DeleteClusterLink(ThisFile.StartCluster))
 713   4                                                      {
 714   5                                                      UartRspBlock.errcode=ERC_DEVICEERR;
 715   5                                                      return FALSE;   
 716   5                                                      }
 717   4                                      bStop=1;
 718   4                                      break;
 719   4                                      }
 720   3                              
 721   3                              }//end for
 722   2                      if(bStop==1)
 723   2                              break;
 724   2                      
 725   2                     }//end search
 726   1              if(sector>=DeviceInfo.BPB_RootEntCnt)
 727   1                      {
 728   2                      UartRspBlock.errcode=ERC_FILENOTFOUND;
 729   2                              return FALSE;   
 730   2                      }
 731   1              //////////////////////////////////////////////
 732   1              return TRUE;
 733   1      #undef RspBlockRemoveFile
 734   1      }
 735          
 736          unsigned char GetCapacity(void)
C51 COMPILER V6.21  HPI                                                                    06/13/2005 16:14:56 PAGE 13  

 737          {
 738   1              unsigned int sectorNum,freesectorcnt,i;
 739   1              
 740   1      #define RspBlockGetCapacity UartRspBlock.RspBlock.Rsp_GetCapacity
 741   1              PREAD_CAPACITY_RSP pBuf;
 742   1              
 743   1              if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
 744   1              {
 745   2              UartRspBlock.errcode=ERC_NODEVICE;
 746   2              return FALSE;           
 747   2              }
 748   1              ///////////////////////////////////////////////////////////
 749   1              if(!RBC_ReadCapacity())
 750   1              {
 751   2              UartRspBlock.errcode=ERC_DEVICEERR;
 752   2              return FALSE;   
 753   2              }
 754   1              
 755   1              pBuf=(PREAD_CAPACITY_RSP)DBUF;
 756   1              RspBlockGetCapacity.disksize=SwapINT32((pBuf->LastLBA+1)*pBuf->BlockSize);
 757   1              ////////////////////////////////////////////////////////////////////////
 758   1              sectorNum=DeviceInfo.FatStartSector;
 759   1              freesectorcnt=0;
 760   1              while(sectorNum<DeviceInfo.BPB_FATSz16+DeviceInfo.FatStartSector)
 761   1              {
 762   2                      
 763   2                      if(RBC_Read(sectorNum,1,DBUF))
 764   2                      {
 765   3                        for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+2)
 766   3                              {
 767   4                               //clusterNum++;        
 768   4                               
 769   4                               if((DBUF[i]==0xff)&&(DBUF[i+1]==0xff))
 770   4                                      {       
 771   5                                      freesectorcnt++;
 772   5                                      }
 773   4                              // clusterNum++;
 774   4                              }       
 775   3                      }
 776   2                      else
 777   2                              {
 778   3                              UartRspBlock.errcode=ERC_DEVICEERR;
 779   3                              return FALSE;   
 780   3                              }
 781   2                      sectorNum++;
 782   2              }
 783   1              
 784   1              ////////////////////////////////////////////////////////////////////////
 785   1              RspBlockGetCapacity.freedisksize=DeviceInfo.BPB_BytesPerSec*DeviceInfo.BPB_SecPerClus;
 786   1              RspBlockGetCapacity.freedisksize=freesectorcnt*RspBlockGetCapacity.freedisksize;
 787   1              RspBlockGetCapacity.freedisksize=SwapINT32(RspBlockGetCapacity.disksize)-RspBlockGetCapacity.freedisksize
             -;
 788   1              RspBlockGetCapacity.freedisksize=SwapINT32(RspBlockGetCapacity.freedisksize);
 789   1                      
 790   1              return TRUE;
 791   1      #undef RspBlockGetCapacity
 792   1      }
 793          
 794          unsigned char GetFreeCapacity(void)
 795          {
 796   1      #define RspBlockGetCapacity UartRspBlock.RspBlock.Rsp_GetFreeCapacity
 797   1              if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
C51 COMPILER V6.21  HPI                                                                    06/13/2005 16:14:56 PAGE 14  

 798   1              {
 799   2              UartRspBlock.errcode=ERC_NODEVICE;
 800   2              return FALSE;           
 801   2              }
 802   1              //////////////////////////////////////////////
 803   1              
 804   1              
 805   1              return TRUE;
 806   1      #undef RspBlockGetFreeCapacity
 807   1      }
 808          
 809          unsigned char SetFilePointer(unsigned long pointer)
 810          {
 811   1      #define RspBlockSetFilePointer UartRspBlock.RspBlock.Rsp_SetFilePointer
 812   1              
 813   1              //ThisFile.FilePointer=UartCmdBlock.CmdBlock.Cmd_SetFilePointer.pointer;
 814   1              if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
 815   1              {
 816   2              UartRspBlock.errcode=ERC_NODEVICE;
 817   2              return FALSE;           
 818   2              }
 819   1              if(!ThisFile.bFileOpen)
 820   1              {
 821   2              UartRspBlock.errcode=ERC_FILENOTOPENED;
 822   2              return FALSE;           
 823   2              }
 824   1              ///////////////////////////////////////////////////////////
 825   1              ThisFile.pointer=pointer;
 826   1              if(ThisFile.pointer>ThisFile.LengthInByte)
 827   1              {
 828   2              UartRspBlock.errcode=ERC_LENGTHEXCEED;
 829   2              return FALSE;   
 830   2              }
 831   1              
 832   1              if(!GoToPointer(ThisFile.pointer))
 833   1              {
 834   2              ThisFile.bFileOpen=0;
 835   2              UartRspBlock.errcode=ERC_DEVICEERR;
 836   2              return FALSE;   
 837   2              }
 838   1              //////////////////////////////////////////////
 839   1              return TRUE;
 840   1      
 841   1      #undef RspBlockSetFilePointer
 842   1      }
 843          
 844          unsigned char GetFirmwareVersion(void)
 845          {
 846   1         #define RspBlockGetVersion UartRspBlock.RspBlock.Rsp_GetVersion
 847   1         ////////////////////////////////////////////////////////////
 848   1         RspBlockGetVersion.version=0x0102;
 849   1         return TRUE;
 850   1         #undef RspBlockGetVersion
 851   1      }
 852          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   4751    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =  28895    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V6.21  HPI                                                                    06/13/2005 16:14:56 PAGE 15  

   DATA SIZE        =   ----      82
   IDATA SIZE       =   ----       4
   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 + -