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

📄 bulk_only.lst

📁 用89C51SND1C实现MP3播放器的源代码.用KEIL c51编写.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 119                                                                  0x0a,   //Page Length
 120                                                                  0,//0x80,       //SFLP=1
 121                                                                  0x01,   //TLUN=1
 122                                                                  0,0,0,0,0,0,0,0//Reserved 保留
 123                                                                  };
 124          */
 125          
 126          code unsigned char B_Mode_Sense_ALL[]={0x0b,0x00,//Mode Data Length
 127                                                                  0x00,0x08,0x00,0x00,
 128                                                                  0x7d,0,0,0,0x02,0x00
 129                                                                  };
 130          /*
 131          code unsigned char B_Mode_Sense_TPP[]={0x00,0x0d,//Mode Data Length
 132                                                                  0x00,   //Medium Type Code
 133                                                                  0,//write enabled
 134                                                                  0,0,0,0,//reserved
 135                                                                  0x1c,0x06,0,0x05,0,0,0,0
 136                                                                  };
 137          */
 138          code unsigned char B_Mode_Sense_TPP[]={0xf0,0x00,//Mode Data Length
 139                                                                  05,00,00,00,00,0x0b,00,00,00,00,0x24,00,00,00,00,00
 140                                                                  };
 141          code unsigned char B_Mode_Sense_ZERO[]={0x00,0x06,//Mode Data Length
 142                                                                  0x00,   //Medium Type Code
 143                                                                  0,//write enabled
 144                                                                  0,0,0,0//reserved
 145          };
 146          unsigned char bulk_CSW[]={0x55,0x53,0x42,0x53,  // bytes 4 dCSWSignature
 147                                                  0x00,0x00,0x00,0x00,    //bytes 4  dCSWTag
 148                                                  0,0,0,0,                //bytes 4 dDataResiduce
 149                                                  0x00};                  //bCSWStatus  00=good state.
 150                                                  
 151          
 152          typedef struct _STRUCT_CBW
 153          {
 154                  unsigned char dCBWSignature[4];
 155                  unsigned char dCBWTag[4];       //dCBWTag of CBW
 156                  long unsigned int dCBWDataTransferLength;//dCBWDataTransferLength of CBW
 157                  unsigned char bmCBWFlags;
 158                  unsigned char bCBWLUN;
 159                  unsigned char bCBWCBLength;
 160                  unsigned char CBWCB[12];//for UFI Command all have 12bit
 161          } struct_CBW;
 162          
 163          struct_CBW bulk_CBW;
 164          
 165          void InterpretCBW()
 166          {
 167   1              int i;
 168   1      //      printu("InterpretCBW");
 169   1      
 170   1              
 171   1              bulk_CSW[4]                             =       Bulk_Out_Buf[4];
 172   1              bulk_CSW[5]                             =       Bulk_Out_Buf[5];
 173   1              bulk_CSW[6]                             =       Bulk_Out_Buf[6];
 174   1              bulk_CSW[7]                             =       Bulk_Out_Buf[7];
 175   1              
 176   1      //      for(i=0;i<4;i++) bulk_CBW.dCBWDataTransferLength = (bulk_CBW.dCBWDataTransferLength<<8) +*(EpBuf+11-i);
 177   1      //      bulk_CBW.bmCBWFlags                     =       *(EpBuf+12);
 178   1      //      bulk_CBW.bCBWLUN                                =       *(EpBuf+13)&0x0f;
 179   1      //      bulk_CBW.bCBWCBLength                   =       *(EpBuf+14)&0x1f;
C51 COMPILER V6.23a  BULK_ONLY                                                             11/27/2003 16:39:15 PAGE 4   

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

 242   1      //      printu("UFI_Read10__1\n");      
 243   1      
 244   1              for(i=0;i<4;i++) Logical_Block_Address = (Logical_Block_Address<<8) +bulk_CBW.CBWCB[2+i];       //要传的数据的

⌨️ 快捷键说明

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