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

📄 tpbulk.lst

📁 单片机读写u盘的完整程序,代码全部用c语言编写。非常有价值的程序。这是本人花2500元购买的开发板源吗
💻 LST
📖 第 1 页 / 共 2 页
字号:
 176   1      #define cdbRequestSenseSPC RBC_CDB.SpcCdb_RequestSense  
 177   1              //unsigned char retStatus=FALSE;
 178   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 179   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
C51 COMPILER V6.21  TPBULK                                                                 06/13/2005 16:14:56 PAGE 4   

 180   1              TPBulk_CBW.dCBW_DataXferLen=0x0e000000;
 181   1              TPBulk_CBW.bCBW_Flag=0x80;
 182   1              TPBulk_CBW.bCBW_LUN=0;
 183   1              TPBulk_CBW.bCBW_CDBLen=sizeof(REQUEST_SENSE_SPC);
 184   1                      
 185   1              /////////////////////////////////////
 186   1              cdbRequestSenseSPC.OperationCode=SPC_CMD_REQUESTSENSE;
 187   1              cdbRequestSenseSPC.AllocationLen=0x0e;
 188   1              //////////////////////////////////////
 189   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 190   1                      return FALSE;
 191   1              
 192   1              if(!epBulkRcv(DBUF,18))
 193   1                      return FALSE;
 194   1              
 195   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 196   1                      return FALSE;
 197   1      /////////////////////////////
 198   1              return TRUE;
 199   1              
 200   1      #undef cdbRequestSenseSPC
 201   1      }
 202          unsigned char SPC_TestUnit(void)
 203          {
 204   1      #define cdbTestUnit RBC_CDB.SpcCdb_TestUnit     
 205   1              //unsigned char retStatus=FALSE;
 206   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 207   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 208   1              TPBulk_CBW.dCBW_DataXferLen=0x00000000;
 209   1              TPBulk_CBW.bCBW_Flag=0x00;
 210   1              TPBulk_CBW.bCBW_LUN=0;
 211   1              TPBulk_CBW.bCBW_CDBLen=sizeof(TEST_UNIT_SPC);
 212   1              /////////////////////////////////////
 213   1              cdbTestUnit.OperationCode=SPC_CMD_TESTUNITREADY;
 214   1              //////////////////////////////////////
 215   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 216   1                      return FALSE;
 217   1              
 218   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 219   1                      return FALSE;
 220   1      #undef cdbTestUnit
 221   1      ////////////////////////////
 222   1              return TRUE;
 223   1      }
 224          unsigned char SPC_LockMedia(void)
 225          {
 226   1      #define cdbLockSPC RBC_CDB.SpcCdb_Remove        
 227   1              //unsigned char retStatus=FALSE;
 228   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 229   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 230   1              TPBulk_CBW.dCBW_DataXferLen=0x00000000;
 231   1              TPBulk_CBW.bCBW_Flag=0x00;
 232   1              TPBulk_CBW.bCBW_LUN=0;
 233   1              TPBulk_CBW.bCBW_CDBLen=sizeof(MEDIA_REMOVAL_SPC);
 234   1              ///////////////////////////////////////////
 235   1              cdbLockSPC.OperationCode=SPC_CMD_PRVENTALLOWMEDIUMREMOVAL;
 236   1              cdbLockSPC.Prevent=1;
 237   1              ///////////////////////////////////////////
 238   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 239   1                      return FALSE;
 240   1                      
 241   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
C51 COMPILER V6.21  TPBULK                                                                 06/13/2005 16:14:56 PAGE 5   

 242   1                      return FALSE;
 243   1      #undef cdbLockSPC
 244   1      /////////////////////////////
 245   1              return TRUE;
 246   1      }
 247          unsigned char RBC_ReadCapacity(void)
 248          {
 249   1      #define cdbReadCap RBC_CDB.RbcCdb_ReadCapacity  
 250   1              //unsigned char retStatus=FALSE;
 251   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 252   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 253   1              TPBulk_CBW.bCBW_LUN=0;
 254   1              TPBulk_CBW.dCBW_DataXferLen=0x08000000;
 255   1              TPBulk_CBW.bCBW_Flag=0x80;
 256   1              
 257   1              TPBulk_CBW.bCBW_CDBLen=sizeof(READ_CAPACITY_RBC);
 258   1              /////////////////////////////////////
 259   1              cdbReadCap.OperationCode=RBC_CMD_READCAPACITY;
 260   1              /////////////////////////////////////
 261   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 262   1                      return FALSE;
 263   1              
 264   1              if(!epBulkRcv(DBUF,8))
 265   1                      return FALSE;
 266   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 267   1                      return FALSE;
 268   1      #undef cdbReadCap
 269   1      /////////////////////////////
 270   1              return TRUE;
 271   1      }
 272          unsigned char RBC_Read(unsigned long lba,unsigned char len,unsigned char *pBuffer)
 273          {
 274   1      #define cdbRead RBC_CDB.RbcCdb_Read     
 275   1              //unsigned char retStatus=FALSE;
 276   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 277   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 278   1              TPBulk_CBW.dCBW_DataXferLen=SwapINT32(len*DeviceInfo.BPB_BytesPerSec);
 279   1              TPBulk_CBW.bCBW_Flag=0x80;
 280   1              TPBulk_CBW.bCBW_LUN=0;
 281   1              TPBulk_CBW.bCBW_CDBLen=sizeof(READ_RBC);
 282   1              /////////////////////////////////////
 283   1              cdbRead.OperationCode=RBC_CMD_READ10;
 284   1              cdbRead.VendorSpecific=0;
 285   1              cdbRead.LBA.LBA_W32=lba;
 286   1              cdbRead.XferLength=len;
 287   1              //cdbRead.Reserved1[0]=0;
 288   1              //cdbRead.Reserved1[1]=0;
 289   1              //cdbRead.Reserved1[2]=0x40;
 290   1              //////////////////////////////////////
 291   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 292   1                      return FALSE;
 293   1              
 294   1              if(!epBulkRcv(pBuffer,len*DeviceInfo.BPB_BytesPerSec))
 295   1                      return FALSE;
 296   1              //DelayMs(1);
 297   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 298   1                      return FALSE;
 299   1      #undef cdbRead
 300   1      /////////////////////////////
 301   1              return TRUE;
 302   1      }
 303          
C51 COMPILER V6.21  TPBULK                                                                 06/13/2005 16:14:56 PAGE 6   

 304          unsigned char RBC_Write(unsigned long lba,unsigned char len,unsigned char *pBuffer)
 305          {
 306   1      #define cdbWrite RBC_CDB.RbcCdb_Write   
 307   1              //len=2;
 308   1              //unsigned int idata temp;
 309   1              //unsigned char i;
 310   1              //len=1;
 311   1              //SPC_TestUnit();
 312   1              //unsigned char retStatus=FALSE;
 313   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 314   1              TPBulk_CBW.dCBW_Tag=0xb4D977c1;
 315   1              TPBulk_CBW.dCBW_DataXferLen=SwapINT32(len*DeviceInfo.BPB_BytesPerSec);
 316   1              TPBulk_CBW.bCBW_Flag=0x0;
 317   1              TPBulk_CBW.bCBW_LUN=0;
 318   1              TPBulk_CBW.bCBW_CDBLen=sizeof(WRITE_RBC);
 319   1              /////////////////////////////////////
 320   1              cdbWrite.OperationCode=RBC_CMD_WRITE10;
 321   1              cdbWrite.VendorSpecific=0;
 322   1              cdbWrite.LBA.LBA_W32=lba;
 323   1              cdbWrite.XferLength=len;
 324   1              cdbWrite.Reserved2=0;
 325   1              cdbWrite.Control=0;
 326   1              //////////////////////////////////////
 327   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 328   1                      return FALSE;
 329   1              DelayMs(35);
 330   1              
 331   1              if(!epBulkSend(pBuffer,len*DeviceInfo.BPB_BytesPerSec))
 332   1                      return FALSE;
 333   1              
 334   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 335   1                      return FALSE;
 336   1              
 337   1      #undef cdbWrite
 338   1      
 339   1      /////////////////////////////
 340   1              return TRUE;
 341   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1446    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      22
   IDATA SIZE       =     31    ----
   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 + -