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

📄 tpbulk.lst

📁 采用811芯片实现单片机读写U盘的源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 151   1              
 152   1      #undef cdbRequestSenseSPC
 153   1      }
 154          unsigned char SPC_TestUnit(void)
 155          {
 156   1      #define cdbTestUnit RBC_CDB.SpcCdb_TestUnit     
 157   1              //unsigned char retStatus=FALSE;
 158   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 159   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 160   1              TPBulk_CBW.dCBW_DataXferLen=0x00000000;
 161   1              TPBulk_CBW.bCBW_Flag=0x00;
 162   1              TPBulk_CBW.bCBW_LUN=0;
 163   1              TPBulk_CBW.bCBW_CDBLen=sizeof(TEST_UNIT_SPC);
 164   1              /////////////////////////////////////
 165   1              cdbTestUnit.OperationCode=SPC_CMD_TESTUNITREADY;
 166   1              //////////////////////////////////////
 167   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 168   1                      return FALSE;
 169   1              
 170   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 171   1                      return FALSE;
 172   1      #undef cdbTestUnit
 173   1      ////////////////////////////
 174   1              return TRUE;
 175   1      }
 176          unsigned char SPC_LockMedia(void)
 177          {
 178   1      #define cdbLockSPC RBC_CDB.SpcCdb_Remove        
 179   1              //unsigned char retStatus=FALSE;
C51 COMPILER V7.00  TPBULK                                                                 09/22/2005 17:15:30 PAGE 4   

 180   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 181   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 182   1              TPBulk_CBW.dCBW_DataXferLen=0x00000000;
 183   1              TPBulk_CBW.bCBW_Flag=0x00;
 184   1              TPBulk_CBW.bCBW_LUN=0;
 185   1              TPBulk_CBW.bCBW_CDBLen=sizeof(MEDIA_REMOVAL_SPC);
 186   1              ///////////////////////////////////////////
 187   1              cdbLockSPC.OperationCode=SPC_CMD_PRVENTALLOWMEDIUMREMOVAL;
 188   1              cdbLockSPC.Prevent=1;
 189   1              ///////////////////////////////////////////
 190   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 191   1                      return FALSE;
 192   1                      
 193   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 194   1                      return FALSE;
 195   1      #undef cdbLockSPC
 196   1      /////////////////////////////
 197   1              return TRUE;
 198   1      }
 199          unsigned char RBC_ReadCapacity(void)
 200          {
 201   1      #define cdbReadCap RBC_CDB.RbcCdb_ReadCapacity  
 202   1              //unsigned char retStatus=FALSE;
 203   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 204   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 205   1              TPBulk_CBW.bCBW_LUN=0;
 206   1              TPBulk_CBW.dCBW_DataXferLen=0x08000000;
 207   1              TPBulk_CBW.bCBW_Flag=0x80;
 208   1              
 209   1              TPBulk_CBW.bCBW_CDBLen=sizeof(READ_CAPACITY_RBC);
 210   1              /////////////////////////////////////
 211   1              cdbReadCap.OperationCode=RBC_CMD_READCAPACITY;
 212   1              /////////////////////////////////////
 213   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 214   1                      return FALSE;
 215   1              
 216   1              if(!epBulkRcv(DBUF,8))
 217   1                      return FALSE;
 218   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 219   1                      return FALSE;
 220   1      #undef cdbReadCap
 221   1      /////////////////////////////
 222   1              return TRUE;
 223   1      }
 224          unsigned char RBC_Read(unsigned long lba,unsigned char len,unsigned char *pBuffer)
 225          {
 226   1      #define cdbRead RBC_CDB.RbcCdb_Read     
 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=SwapINT32(len*deviceinfo.BytePerSec);
 231   1              TPBulk_CBW.bCBW_Flag=0x80;
 232   1              TPBulk_CBW.bCBW_LUN=0;
 233   1              TPBulk_CBW.bCBW_CDBLen=sizeof(READ_RBC);
 234   1              /////////////////////////////////////
 235   1              cdbRead.OperationCode=RBC_CMD_READ10;
 236   1              cdbRead.VendorSpecific=0;
 237   1              cdbRead.LBA.LBA_W32=lba;
 238   1              cdbRead.XferLength=len;
 239   1              //cdbRead.Reserved1[0]=0;
 240   1              //cdbRead.Reserved1[1]=0;
 241   1              //cdbRead.Reserved1[2]=0x40;
C51 COMPILER V7.00  TPBULK                                                                 09/22/2005 17:15:30 PAGE 5   

 242   1              //////////////////////////////////////
 243   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 244   1                      return FALSE;
 245   1              
 246   1              if(!epBulkRcv(pBuffer,len*deviceinfo.BytePerSec))
 247   1                      return FALSE;
 248   1              //DelayMs(1);
 249   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 250   1                      return FALSE;
 251   1      #undef cdbRead
 252   1      /////////////////////////////
 253   1              return TRUE;
 254   1      }
 255          
 256          unsigned char RBC_Write(unsigned long lba,unsigned char len,unsigned char *pBuffer)
 257          {
 258   1      #define cdbWrite RBC_CDB.RbcCdb_Write   
 259   1              //len=2;
 260   1              //unsigned int idata temp;
 261   1              //unsigned char i;
 262   1              //len=1;
 263   1              //SPC_TestUnit();
 264   1              //unsigned char retStatus=FALSE;
 265   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 266   1              TPBulk_CBW.dCBW_Tag=0xb4D977c1;
 267   1              TPBulk_CBW.dCBW_DataXferLen=SwapINT32(len*deviceinfo.BytePerSec);
 268   1              TPBulk_CBW.bCBW_Flag=0x0;
 269   1              TPBulk_CBW.bCBW_LUN=0;
 270   1              TPBulk_CBW.bCBW_CDBLen=sizeof(WRITE_RBC);
 271   1      
 272   1              cdbWrite.OperationCode=RBC_CMD_WRITE10;
 273   1              cdbWrite.VendorSpecific=0;
 274   1              cdbWrite.LBA.LBA_W32=lba;
 275   1              cdbWrite.XferLength=len;
 276   1              cdbWrite.Reserved2=0;
 277   1              cdbWrite.Control=0;
 278   1      
 279   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 280   1                      return FALSE;
 281   1              DelayMs(35);
 282   1              
 283   1              if(!epBulkSend(pBuffer,len*deviceinfo.BytePerSec))
 284   1                      return FALSE;
 285   1              
 286   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 287   1                      return FALSE;
 288   1              
 289   1      #undef cdbWrite
 290   1      
 291   1              return TRUE;
 292   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1073    ----
   CONSTANT SIZE    =      3    ----
   XDATA SIZE       =   ----      16
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =     31    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V7.00  TPBULK                                                                 09/22/2005 17:15:30 PAGE 6   


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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