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

📄 usb.lst

📁 51环境下的FAT及FAT32文件系统源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 167   3      //                          devTglSt = (intr & DEV_TGL);   // store toggle state
 168   3      //
 169   3      //                      }
 170   3                              if (intr & PKT_VLD)
 171   3                              {
 172   4                                  ConsecutiveNAKCount = 0;
 173   4                                      SieStat0 = PKT_VLD;
 174   4      #ifdef OLD_CHIP                         
 175   4                                      if(PassToggleCheckSoftware())
 176   4      #else                                   
                                              if (devTglSt == bXXGFlags.bToggle)
              #endif
 179   4      //                              if (1) // skip toggle check
 180   4                                      {
 181   5                                              bXXGFlags.bToggle = ~bXXGFlags.bToggle;
C51 COMPILER V8.02   USB                                                                   09/19/2006 15:01:22 PAGE 13  

 182   5                                              if(xferLen<64)
 183   5                                              {
 184   6                                      BufRst = 0x03;
 185   6                                      BufRst = 0x00;
 186   6                                              }
 187   5                                                                      
 188   5                              // ready to read data from buffer
 189   5                                              usbstack.wLen -= (unsigned int)xferLen;
 190   5                                              if(usbstack.wLen==0)                         // last packet
 191   5                              { 
 192   6                                                      if(!bXXGFlags.bIN_ISR)
 193   6                                                              usbBufRead(usbstack.buffer, xferLen);
 194   6                                                      else
 195   6                                                              BufSel = USB2MP3;                    //src=USB,dest=MP3
 196   6                                                      
 197   6                                                              
 198   6                                                      Scratch = 0x0;                        // kill some time...
 199   6                                                      Scratch = 0x0;
 200   6                                                      Scratch = 0x0;
 201   6                              Scratch = 0x0;
 202   6                                                      
 203   6                                                      if(xferLen<64)                           // set buffer empty flag
 204   6                                                      {
 205   7                                              BufRst = 0x03;
 206   7                                              BufRst = 0x00;
 207   7                                                      }
 208   6                                                      else
 209   6                                                      {
 210   7                                      BufRst = 0x01;
 211   7                                      BufRst = 0x00;
 212   7                                                      }
 213   6                                                      BufSel = USB2MCU;                      //src=USB,dest=CPU
 214   6                                                      result = DEV_ACK;
 215   6                                      break;
 216   6                              }       
 217   5                                              else                            
 218   5                                              {            
 219   6                                                      if(!bXXGFlags.bIN_ISR)                           // actual CPU read
 220   6                                                              usbBufRead(usbstack.buffer, xferLen);
 221   6                                                      else
 222   6                                                              BufSel = USB2MP3;                      //src=USB,dest=MP3
 223   6              
 224   6                              Scratch = 0x0;                        // kill some time...
 225   6                                                      Scratch = 0x0;
 226   6                                                      Scratch = 0x0;
 227   6                                                      Scratch = 0x0;
 228   6                                                      
 229   6                                                      if(xferLen<64)
 230   6                                                      {
 231   7                                              BufRst = 0x03;
 232   7                                              BufRst = 0x00;
 233   7                                                      }
 234   6                                                      else
 235   6                                                      {
 236   7                                      BufRst = 0x01;
 237   7                                      BufRst = 0x00;
 238   7                                                      }
 239   6                                                      usbstack.buffer += xferLen;
 240   6                                      if (usbstack.wLen >= usbstack.wPayload)                 
 241   6                                                      xferLen = usbstack.wPayload;                    
 242   6                                      else                                            
 243   6                                              xferLen = usbstack.wLen;
C51 COMPILER V8.02   USB                                                                   09/19/2006 15:01:22 PAGE 14  

 244   6                                              
 245   6                                      cmd = READ;
 246   6                                                      BufSel = USB2MCU;                      //src=USB,dest=CPU
 247   6                                      TxPktlen = xferLen;
 248   6                                              TxCtrl = cmd;
 249   6                                              }
 250   5                              }
 251   4                                      else
 252   4                                      {
 253   5                                              if(xferLen<64)                           // set buffer empty flag
 254   5                                              {
 255   6                                      BufRst = 0x03;
 256   6                                      BufRst = 0x00;
 257   6                                              }
 258   5                                              
 259   5                                              BufSel = USBFLSH;                      //src=USB,dest=FLUSH
 260   5                                              Scratch = 0x0;                        // kill some time...
 261   5                                              Scratch = 0x0;
 262   5                                              Scratch = 0x0;
 263   5                                              Scratch = 0x0;
 264   5                                              
 265   5                                              if(xferLen<64)                           // set buffer empty flag
 266   5                                              {
 267   6                                      BufRst = 0x03;
 268   6                                      BufRst = 0x00;
 269   6                                              }
 270   5                                              else
 271   5                                              {
 272   6                              BufRst = 0x01;
 273   6                              BufRst = 0x00;
 274   6                                              }
 275   5                                              BufSel = USB2MCU;                      //src=USB,dest=CPU
 276   5                                              cmd = READ;
 277   5                                              TxCtrl = cmd;
 278   5                                      }
 279   4                              }
 280   3      //                      else if(intr & PKT_ERR)  // got bad packet
 281   3      //                      {
 282   3      //                         SieStat0 = PKT_ERR;
 283   3      //                         BufRst = 0x01;          // reset write pointer
 284   3      //             BufRst = 0x00;
 285   3      //                         TxCtrl = cmd;
 286   3      //                      }
 287   3                              else if(intr & DEV_NAK)  // device nak'd IN token
 288   3                              {
 289   4                                 SieStat0 = DEV_NAK;
 290   4                                 if(ConsecutiveNAKCount < MAX_NAK_CNT)
 291   4                                   ConsecutiveNAKCount = ConsecutiveNAKCount + 1;
 292   4                                 else
 293   4                                   return FALSE;
 294   4      //                         P1 = 0xF8;
 295   4      //                         P1 = intr;
 296   4                                 BufRst = 0x01;          // reset write pointer
 297   4                     BufRst = 0x00;
 298   4                                 DelayMs(1);
 299   4                                 TxCtrl = cmd;
 300   4                              }
 301   3                              else if(intr & DEV_TO)      // turnaround time expired
 302   3                              {
 303   4                                      // glitch filter, don't need to clear
 304   4                                      if (SieStat0 & DEV_TO)      // packet is not coming!
 305   4                                      {
C51 COMPILER V8.02   USB                                                                   09/19/2006 15:01:22 PAGE 15  

 306   5                                              BufRst = 0x01;          // reset write pointer
 307   5                              BufRst = 0x00;
 308   5                                              TxCtrl = cmd;                   // Send command again!
 309   5                                      }
 310   4                              }
 311   3                              else if (intr & DEV_STALL)
 312   3                              {
 313   4                                      SieStat0 = DEV_STALL;
 314   4                                      bXXGFlags.SLAVE_STALLED = TRUE;
 315   4                                      break;
 316   4                              }
 317   3                      }
 318   2                      else  // pid != PID_IN
 319   2                      {                                       
 320   3                              if(intr & DEV_ACK)
 321   3                              {
 322   4                      result = DEV_ACK;
 323   4                                      SieStat0 = DEV_ACK;
 324   4                                      break;
 325   4                              }
 326   3                              else if(intr & DEV_TO)      // turnaround time expired
 327   3                              {
 328   4      //                              SieStat0 = DEV_TO;
 329   4                                      if (SieStat0 & DEV_TO)      // packet is not coming!
 330   4                                      {
 331   5                                              BufRst = 0x02;          // reset read pointer
 332   5                              BufRst = 0x00;
 333   5                                              TxCtrl = cmd;                   // Send SETUP/OUT again!
 334   5                                      }
 335   4                              }
 336   3                      }    
 337   2                              
 338   2              }//end of while(TRUE)   
 339   1              if (result == DEV_ACK)  // on ACK transmission
 340   1          {           
 341   2                      return TRUE;
 342   2              }               // return OK
 343   1                      
 344   1              return FALSE;                   // fail transmission
 345   1      
 346   1      }
*** WARNING C280 IN LINE 75 OF USB.C: 'endPoint': unreferenced local variable
*** WARNING C280 IN LINE 79 OF USB.C: 'devTglSt': unreferenced local variable
 347          //*****************************************************************************************
 348          // Control Endpoint 0's USB Data Xfer
 349          // ep0Xfer, endpoint 0 data transfer
 350          //*****************************************************************************************
 351          unsigned char ep0Xfer(void)
 352          {
 353   1              TxEpnum = 0x0;   // always set end point to zero!!
 354   1              //----------------------------------------------------
 355   1              // SETUP token with 8-byte request on endpoint 0
 356   1              //----------------------------------------------------
 357   1              usbstack.pid=PID_SETUP;
 358   1      
 359   1      //      BufSel = MCU2USB; // src=CPU, dest=USB;
 360   1              if (!usbXfer(0)) 
 361   1                      return FALSE;
 362   1      
 363   1              usbstack.pid  = PID_IN;                   // default for setup stage
 364   1      //    BufSel = USB2MCU; //src=USB, dest=CPU;
 365   1         
C51 COMPILER V8.02   USB                                                                   09/19/2006 15:01:22 PAGE 16  

 366   1              //----------------------------------------------------
 367   1              // IN or OUT data stage on endpoint 0   
 368   1              //----------------------------------------------------
 369   1              usbstack.wLen=usbstack.setup.wLength;
 370   1              if (usbstack.wLen)                                                              // if there are data for transfer
 371   1              {
 372   2                      if (usbstack.setup.bmRequest & 0x80)            // IN token
 373   2                      {
 374   3                              usbstack.pid  = PID_IN; 
 375   3                              bXXGFlags.bToggle=1;                     // expect data1 from device
 376   3      //                      BufSel = USB2MCU; //src=USB,dest=CPU;
 377   3      
 378   3                              if(!usbXfer(0))
 379   3                                      return FALSE;
 380   3                              //usbstack.wPayload = 0;
 381   3                              usbstack.pid  = PID_OUT;
 382   3      //           BufSel = MCU2USB; //src=CPU,dest=USB;
 383   3                      }
 384   2                      else                                                                            // OUT token
 385   2                      {                                                       
 386   3                              usbstack.pid  = PID_OUT;
 387   3      //                      BufSel = MCU2USB; //src=CPU,dest=USB;   
 388   3                              if(!usbXfer(0))
 389   3                                      return FALSE;
 390   3                              usbstack.pid  = PID_IN;
 391   3      //            BufSel = USB2MCU; //src=USB,dest=CPU;
 392   3                      }
 393   2              }
 394   1              DelayMs(2);  // allow device to complete request
 395   1              //----------------------------------------------------
 396   1              // Status stage IN or OUT zero-length data packet
 397   1              //----------------------------------------------------
 398   1              usbstack.wLen=0;
 399   1      //      uDev.bData1[0] = 0x1;  // always data1 from device
 400   1              bXXGFlags.bToggle=1;   // status stage is always Data1
 401   1              if(!usbXfer(0))
 402   1                      return FALSE;
 403   1      
 404   1              return TRUE;                                                                                    
 405   1                                              
 406   1      }
 407          

⌨️ 快捷键说明

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