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

📄 hpi.lst

📁 51单片机读写U盘
💻 LST
📖 第 1 页 / 共 4 页
字号:
 116   1      }
 117          unsigned char DetectDevice(void)
 118          {
 119   1      #define RspBlockDetectDevice UartRspBlock.RspBlock.Rsp_DetectDevice
 120   1              return bXXGFlags.bits.SLAVE_IS_ATTACHED;
 121   1              
 122   1      #undef RspBlockDetectDevice
 123   1      }
 124          
 125          unsigned char List(void)
 126          {
 127   1      #define RspBlockList UartRspBlock.RspBlock.Rsp_List
C51 COMPILER V7.20   HPI                                                                   12/13/2005 15:28:00 PAGE 5   

 128   1              unsigned int item,i;
 129   1              unsigned char j,k,bstop,sector;
 130   1              //RspBlockList.errcode=ERC_NODEVICE;
 131   1              if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
 132   1              {
 133   2              UartRspBlock.errcode=ERC_NODEVICE;
 134   2              return FALSE;           
 135   2              }
 136   1              ///////////////////////////////////////////////////////////
 137   1              item=0;
 138   1              bstop=0;
 139   1              //RspBlockList.result=0x1;
 140   1              for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
 141   1                  {   
 142   2                      //////////////////////////////////////////////////
 143   2                      if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
 144   2                              {
 145   3                              //item=0;
 146   3                              UartRspBlock.errcode=ERC_DEVICEERR;
 147   3                              return FALSE;                   
 148   3                              }
 149   2                      ///////////////////////////////////////////////////
 150   2                      for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
 151   2                              {
 152   3                              if(DBUF[i]==0x00)
 153   3                                      {bstop=1;
 154   4                                      break;}
 155   3                              else if(DBUF[i]==0xE5)
 156   3                                      continue;
 157   3                              else if((DBUF[i]&0x40==0x40)&&(DBUF[i+11]==0xff))
 158   3                                      {
 159   4                                      j=DBUF[i]&0x0F;
 160   4                                      j=j+1;
 161   4                                      for(k=0;k<j*32;k++)
 162   4                                              UARTBUF[item*32+k]=DBUF[i+k];
 163   4                                      i=i+(j-1)*32;
 164   4                                      item=item+j;
 165   4                                      }
 166   3                              else
 167   3                                      {
 168   4                                      for(k=0;k<32;k++)
 169   4                                              UARTBUF[item*32+k]=DBUF[i+k];
 170   4                                      item=item+1;
 171   4                                      }
 172   3                              }
 173   2                      ///////////////////////////////////////////////////////
 174   2                      if(bstop==1)break;
 175   2                      
 176   2                  }
 177   1                      
 178   1              //pBuf=(PREAD_CAPACITY_RSP)DBUF;
 179   1              ///////////////////////////////////////////
 180   1              RspBlockList.len=SwapINT16(item*32);
 181   1              UartRspBlock.len=item*32;
 182   1              return TRUE;
 183   1              
 184   1      #undef RspBlockList
 185   1      
 186   1      }
 187          unsigned char OpenFile(unsigned char *pBuffer)
 188          {
 189   1      #define RspBlockOpenFile UartRspBlock.RspBlock.Rsp_OpenFile
C51 COMPILER V7.20   HPI                                                                   12/13/2005 15:28:00 PAGE 6   

 190   1              unsigned int i;
 191   1              unsigned char j,bstop,sector;
 192   1              PDIR_INFO pDirInfo;
 193   1              
 194   1              if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
 195   1              {
 196   2              UartRspBlock.errcode=ERC_NODEVICE;
 197   2              return FALSE;           
 198   2              }
 199   1              ///////////////////////////////////////////////////////////
 200   1              
 201   1              ThisFile.bFileOpen=0;
 202   1              //RspBlockOpenFile.result=0x0;
 203   1              //RspBlockOpenFile.errcode=ERC_OK;
 204   1              for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
 205   1                  {   
 206   2                      //////////////////////////////////////////////////
 207   2                      if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
 208   2                              {
 209   3                              UartRspBlock.errcode=ERC_DEVICEERR;
 210   3                              return FALSE;   
 211   3                              
 212   3                              }
 213   2                      ///////////////////////////////////////////////////
 214   2                      for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
 215   2                              {
 216   3                              if(DBUF[i]==0x00)
 217   3                                      {
 218   4                                      UartRspBlock.errcode=ERC_FILENOTFOUND;
 219   4                                      //UartRspBlock.errcode=ERC_DEVICEERR;
 220   4                                      return FALSE;   
 221   4                                      }
 222   3                              ///////////////////////////////////////////
 223   3                              j=0;
 224   3                              while(DBUF[i+j]==*(pBuffer+j))
 225   3                                      {
 226   4                                       j=j+1;
 227   4                                       if(j>10)
 228   4                                              break;
 229   4                                      }
 230   3                              
 231   3                              if(j>10)
 232   3                                  {
 233   4                                  for(j=0;j<32;j++)
 234   4                                      RspBlockOpenFile.item[j]=DBUF[i+j];
 235   4                                  //RspBlockOpenFile.result=0x1;
 236   4                                  ThisFile.bFileOpen=1;
 237   4                                  bstop=1;
 238   4                                   break;}
 239   3                              
 240   3                              }
 241   2                      ///////////////////////////////////////////////////////
 242   2                      if(bstop==1)break;
 243   2                      ///////////////////////////////////////////////////////
 244   2                      //if(DeviceInfo.BPB_RootEntCnt)
 245   2                      
 246   2                  }
 247   1                  
 248   1                  if(sector>=DeviceInfo.BPB_RootEntCnt)
 249   1                      {
 250   2                      UartRspBlock.errcode=ERC_FILENOTFOUND;
 251   2                      //UartRspBlock.errcode=ERC_DEVICEERR;
C51 COMPILER V7.20   HPI                                                                   12/13/2005 15:28:00 PAGE 7   

 252   2                      return FALSE;           
 253   2                      }
 254   1              ////////////////////////////////////////////
 255   1              pDirInfo=(PDIR_INFO)RspBlockOpenFile.item;
 256   1              ThisFile.StartCluster=SwapINT16(pDirInfo->startCluster);
 257   1              ThisFile.LengthInByte=SwapINT32(pDirInfo->length);
 258   1              ThisFile.ClusterPointer=ThisFile.StartCluster;
 259   1              ThisFile.SectorPointer=FirstSectorofCluster(ThisFile.StartCluster);
 260   1              ThisFile.OffsetofSector=0;
 261   1              ThisFile.SectorofCluster=0;
 262   1              //=ThisFatSecNum(clusterNum);
 263   1              //xxgFatEntOffset=ThisFatEntOffset(clusterNum);
 264   1              ThisFile.FatSectorPointer=0;
 265   1              //ThisFile.bFileOpen=1;
 266   1              ThisFile.pointer=0;
 267   1              ///////////////////////////////////////////
 268   1              return TRUE;
 269   1      #undef RspBlockOpenFile
 270   1      }
 271          
 272          unsigned char ReadFile(unsigned int readLength,unsigned char *pBuffer)
 273          {
 274   1      #define RspBlockReadFile UartRspBlock.RspBlock.Rsp_ReadFile
 275   1              unsigned int idata len,i;
 276   1              unsigned char bSuccess;
 277   1              //unsigned char sector;
 278   1              //unsigned long lba;
 279   1              
 280   1              if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
 281   1              {
 282   2              UartRspBlock.errcode=ERC_NODEVICE;
 283   2              return FALSE;           
 284   2              }
 285   1              if(!ThisFile.bFileOpen)
 286   1              {
 287   2              UartRspBlock.errcode=ERC_FILENOTOPENED;
 288   2              return FALSE;           
 289   2              }
 290   1              ///////////////////////////////////////////////////////////
 291   1              ThisFile.bFileOpen=0;
 292   1              bSuccess=1;
 293   1              UartRspBlock.len=0;
 294   1              //lba=GetSecNumFromPointer();
 295   1              //cluster=GetClusterNumFromSectorNum(lba);
 296   1              //cluster=ThisFile.StartCluster;
 297   1              //lba=FirstSectorofCluster(ThisFile.StartCluster);
 298   1              //readLength=SwapINT16(UartCmdBlock.CmdBlock.Cmd_ReadFile.readLength);
 299   1              if(readLength>MAX_READ_LENGTH)
 300   1                      {
 301   2                      UartRspBlock.errcode=ERC_LENGTHEXCEED;
 302   2                      return FALSE;   
 303   2                      }
 304   1              if(readLength+ThisFile.pointer>ThisFile.LengthInByte)
 305   1                      {
 306   2                      UartRspBlock.errcode=ERC_LENGTHEXCEED;
 307   2                      return FALSE;   
 308   2                      }
 309   1              ////////////////////////////////////////////
 310   1                      
 311   1                      ///////////////////////////////////////////////////
 312   1                      while(readLength>0)
 313   1                      {
C51 COMPILER V7.20   HPI                                                                   12/13/2005 15:28:00 PAGE 8   

 314   2                         if(readLength+ThisFile.OffsetofSector>DeviceInfo.BPB_BytesPerSec)
 315   2                              len=DeviceInfo.BPB_BytesPerSec;
 316   2                         else
 317   2                              len=readLength+ThisFile.OffsetofSector;
 318   2                         
 319   2                         //////////////////////////////////////////////////////
 320   2                         if(ThisFile.OffsetofSector>0)
 321   2                              {
 322   3                              if(RBC_Read(ThisFile.SectorPointer,1,DBUF))
 323   3                                      {
 324   4                                      //ThisFile.OffsetofSector=len;
 325   4                                      len=len-ThisFile.OffsetofSector;
 326   4                                      for(i=0;i<len;i++)
 327   4                                              //UARTBUF[i]=DBUF[ThisFile.OffsetofSector+i];
 328   4                                              *(pBuffer+i)=DBUF[ThisFile.OffsetofSector+i];
 329   4                                      ThisFile.OffsetofSector=ThisFile.OffsetofSector+len;
 330   4                                      }
 331   3                              else
 332   3                                      {
 333   4                                      UartRspBlock.errcode=ERC_DEVICEERR;
 334   4                                      return FALSE;   
 335   4                                      }
 336   3                              }
 337   2                         else
 338   2                              {
 339   3                                      if(!RBC_Read(ThisFile.SectorPointer,1,pBuffer+UartRspBlock.len))
 340   3                                      {
 341   4                                      UartRspBlock.errcode=ERC_DEVICEERR;
 342   4                                      return FALSE;   
 343   4                                      }
 344   3                                      ThisFile.OffsetofSector=len;
 345   3                              }
 346   2                         ////////////////////////////////////////////////////////////
 347   2                        // if(ThisFile.OffsetofSector>DeviceInfo.BPB_BytesPerSec-1)
 348   2                        //    ThisFile.OffsetofSector-=DeviceInfo.BPB_BytesPerSec;
 349   2                         readLength-=len;
 350   2                         UartRspBlock.len+=len;
 351   2                        // ThisFile.OffsetofSector=;

⌨️ 快捷键说明

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