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

📄 bulk_only.lst

📁 用89C51SND1C实现的USB存储器的代码,包括USB通信和FLASH的读写操作.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 171   1              bulk_CSW[5]                             =       Bulk_Out_Buf[5];
 172   1              bulk_CSW[6]                             =       Bulk_Out_Buf[6];
 173   1              bulk_CSW[7]                             =       Bulk_Out_Buf[7];
 174   1              
 175   1      //      for(i=0;i<4;i++) bulk_CBW.dCBWDataTransferLength = (bulk_CBW.dCBWDataTransferLength<<8) +*(EpBuf+11-i);
 176   1      //      bulk_CBW.bmCBWFlags                     =       *(EpBuf+12);
 177   1      //      bulk_CBW.bCBWLUN                                =       *(EpBuf+13)&0x0f;
 178   1      //      bulk_CBW.bCBWCBLength                   =       *(EpBuf+14)&0x1f;
 179   1      
C51 COMPILER V6.23a  BULK_ONLY                                                             11/27/2003 16:46:10 PAGE 4   

 180   1              for(i=0;i<12;i++)
 181   1              bulk_CBW.CBWCB  [i]                             =       Bulk_Out_Buf[i+15];
 182   1      //      printu("\n\nSCSI:");
 183   1      //      for(j=0;j<12;j++) {printuf("%x ",bulk_CBW.CBWCB[j]);}
 184   1      
 185   1              switch(bulk_CBW.CBWCB[0]){
 186   2      //              case 0x04                                               :SCSI_Reserved();break;
 187   2                      case Inquiry                                    :SCSI_Inquiry();break;
 188   2      //              case 0x55                                               :SCSI_Reserved();break;
 189   2                      case Mode_Sense                                 :SCSI_Mode_Sense();break;
 190   2                      case Read10                                             :SCSI_Read10();break;
 191   2      //              case 0xA8                                               :SCSI_Reserved();break;
 192   2                      case Read_Capacity                              :SCSI_Read_Capacity();break;
 193   2                      case Read_Format_Capacities             :SCSI_Read_Format_Capacities();break;
 194   2      //              case 0x03                                               :SCSI_Reserved();break;
 195   2      //              case 0x01                                               :SCSI_Reserved();break;
 196   2      //              case 0x2B                                               :SCSI_Reserved();break;
 197   2      //              case 0x1D                                               :SCSI_Reserved();break;
 198   2      //              case 0x1B                                               :SCSI_Reserved();break;
 199   2                      case Test_Unit_Ready                    :SCSI_Test_Unit_Ready();break;
 200   2                      case Verify                                             :SCSI_Verify();break;
 201   2                      case Write10                                    :SCSI_Write10();break;
 202   2      //              case 0xAA                                               :SCSI_Reserved();break;
 203   2      //              case 0x2E                                               :SCSI_Reserved();break;
 204   2                      case Medium_Removal                             :SCSI_Medium_Removal();break;
 205   2                      default                                                 :SCSI_Reserved();break;
 206   2              }
 207   1                      
 208   1      }
 209          
 210          void SCSI_Inquiry()
 211          {
 212   1              printu("SCSI_Inquiry\n");
 213   1              bulk_state = BULK_DATA_END;
 214   1              WriteEpBulk(1, sizeof(B_InquiryData), B_InquiryData);
 215   1      
 216   1      }
 217          
 218          
 219          void SCSI_Read_Format_Capacities()
 220          {
 221   1              printu("SCSI_Read_Format_Capacities\n");
 222   1                      if(bulk_CBW.CBWCB[7]==0 && bulk_CBW.CBWCB[8]==0)
 223   1                              return;
 224   1                      bulk_state = BULK_DATA_END;
 225   1                      WriteEpBulk(1, sizeof(B_Read_Format_capacities), B_Read_Format_capacities);
 226   1      }
 227          
 228          
 229          void SCSI_Read_Capacity()
 230          {
 231   1              printu("SCSI_Read_Capacity\n");
 232   1                      bulk_state = BULK_DATA_END;
 233   1                      WriteEpBulk(1, sizeof(B_Read_Capacity), B_Read_Capacity);
 234   1      
 235   1      }
 236          
 237          void SCSI_Read10()
 238          {
 239   1              printu("SCSI_Read10\n");
 240   1      
 241   1      }
C51 COMPILER V6.23a  BULK_ONLY                                                             11/27/2003 16:46:10 PAGE 5   

 242          
 243          void TransDataGoOn()
 244          {
 245   1              printu("TransDataGoOn\n");
 246   1      
 247   1      }
 248          
 249          void SCSI_Write10()
 250          {
 251   1              printu("SCSI_Write10\n");
 252   1      }
 253          
 254                  
 255          void RecieveData()
 256          {
 257   1              printu("RecieveData\n");
 258   1      
 259   1      }
 260          
 261          void SCSI_Mode_Sense()
 262          {
 263   1              printu("SCSI_Mode_Sense\n");
 264   1              dDataResiduce=bulk_CBW.dCBWDataTransferLength;
 265   1      
 266   1              if(bulk_CBW.CBWCB[2] == SCSI_MSPGCD_TPP){       //Page Code=Timer and Potect Page
 267   2                              bulk_state = BULK_DATA_END;
 268   2                              WriteEpBulk(1, sizeof(B_Mode_Sense_TPP), B_Mode_Sense_TPP);
 269   2                      }
 270   1              else if(bulk_CBW.CBWCB[2] == SCSI_MSPGCD_RETALL){
 271   2                              bulk_state = BULK_DATA_END;
 272   2                              WriteEpBulk(1, sizeof(B_Mode_Sense_ALL), B_Mode_Sense_ALL);
 273   2                      }
 274   1              else {
 275   2                              bulk_state = BULK_DATA_END;
 276   2                              WriteEpBulk(1, sizeof(B_Mode_Sense_ZERO), B_Mode_Sense_ZERO);
 277   2                      }
 278   1      }
 279          
 280          void SCSI_Medium_Removal()
 281          {
 282   1              printu("SCSI_Medium_Removal\n");
 283   1              TransmitCSW();
 284   1      }
 285          
 286          void SCSI_Test_Unit_Ready()
 287          {
 288   1              printu("SCSI_Test_Unit_Ready\n");
 289   1              TransmitCSW();
 290   1      }
 291          
 292          
 293          void TransmitCSW()
 294          {
 295   1              printu("TransmitCSW\n");
 296   1              WriteEpBulk(1, sizeof(bulk_CSW), bulk_CSW);
 297   1              bulk_state = BULK_CSW_END;
 298   1      
 299   1      }
 300          
 301          
 302          
 303          void TransRequestGoOn()
C51 COMPILER V6.23a  BULK_ONLY                                                             11/27/2003 16:46:10 PAGE 6   

 304          {
 305   1              printu("TransRequestGoOn\n");
 306   1              if(dDataResiduce>0x40) {
 307   2                      dDataResiduce -= 0x40;
 308   2                      bulk_state = BULK_REQEST_TRANS;
 309   2                      nBufCount +=0x40;
 310   2                      WriteEpBulk(1, 64, pCurrentBuf+nBufCount);
 311   2                      }
 312   1              else {
 313   2                      bulk_state = BULK_DATA_END;
 314   2                      nBufCount +=0x40;
 315   2                      WriteEpBulk(1, dDataResiduce, pCurrentBuf+nBufCount);
 316   2                      nBufCount=0;    //prepare for nexe into
 317   2                      }
 318   1      }
 319          
 320          
 321          
 322          
 323          
 324          
 325          void SCSI_Reserved()
 326          {
 327   1              printuf("\nUFI Function 0x%x doesn't Defined!",bulk_CBW.CBWCB[0]);
 328   1              
 329   1      }
 330          
 331          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    651    ----
   CONSTANT SIZE    =    372    ----
   XDATA SIZE       =    654    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   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 + -