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

📄 tpbulk.lst

📁 ms51 控制sl811读写u盘的源程序 及 原理图 可仿真试一下
💻 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.20c  TPBULK                                                                08/21/2003 22:51:01 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.20c  TPBULK                                                                08/21/2003 22:51:01 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.20c  TPBULK                                                                08/21/2003 22:51:01 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 + -