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

📄 sl811.lst

📁 51单片机读写U盘
💻 LST
📖 第 1 页 / 共 5 页
字号:
 253   4                              }                                                                                                       // through the hub
 254   3                      }
 255   2      
 256   2                      //-----------------------STALL----------------------------
 257   2                      if (result & EP0_STALL)                                                                 // STALL detected
 258   2                              return TRUE;                                                                            // for unsupported request.
 259   2                                                                                                                                                      
 260   2                      //----------------------OVEFLOW---------------------------
 261   2                      if (result & EP0_OVERFLOW)                                                      // OVERFLOW detected
 262   2                              //result=result;
 263   2                              break;
 264   2                      //-----------------------ERROR----------------------------
 265   2                      if (result & EP0_ERROR)                                                                 // ERROR detected
 266   2                              //result=result;
 267   2                              break;
 268   2              }       // end of While(1)
 269   1         
 270   1              if (result & EP0_ACK)   // on ACK transmission
 271   1                      return TRUE;            // return OK
 272   1      
 273   1              return FALSE;                   // fail transmission
 274   1      
 275   1      }
 276          //*****************************************************************************************
 277          // Control Endpoint 0's USB Data Xfer
 278          // ep0Xfer, endpoint 0 data transfer
 279          //*****************************************************************************************
 280          unsigned char ep0Xfer(void)
 281          {
 282   1              //unsigned char wLen;
 283   1              
 284   1              //wLen=usbstack.wLen;
 285   1              usbstack.endpoint=0;
 286   1              //----------------------------------------------------
 287   1              // SETUP token with 8-byte request on endpoint 0
 288   1              //----------------------------------------------------
 289   1              usbstack.pid=PID_SETUP;
 290   1              usbstack.wLen=8;
 291   1              //usbstack.buffer=&usbstack.setup;
 292   1              if (!usbXfer()) 
 293   1                      return FALSE;
 294   1              //DelayMs(10);
 295   1              usbstack.pid  = PID_IN;
 296   1              //----------------------------------------------------
 297   1              // IN or OUT data stage on endpoint 0   
 298   1              //----------------------------------------------------
 299   1              usbstack.wLen=usbstack.setup.wLength;
 300   1              if (usbstack.wLen)                                                                                      // if there are data for transfer
 301   1              {
 302   2                      if (usbstack.setup.bmRequest & 0x80)            // host-to-device : IN token
 303   2                      {
 304   3                              usbstack.pid  = PID_IN; 
 305   3                              
 306   3                              if(!usbXfer())
 307   3                                      return FALSE;
 308   3                              //usbstack.wPayload = 0;
 309   3                              usbstack.pid  = PID_OUT;
 310   3                      }
 311   2                      else                                                                                    // device-to-host : OUT token
 312   2                      {                                                       
C51 COMPILER V7.20   SL811                                                                 12/13/2005 15:28:02 PAGE 8   

 313   3                              usbstack.pid  = PID_OUT;
 314   3                                      
 315   3                              if(!usbXfer())
 316   3                                      return FALSE;
 317   3                              usbstack.pid  = PID_IN;
 318   3                      }
 319   2              }
 320   1              //DelayMs(10);
 321   1              //----------------------------------------------------
 322   1              // Status stage IN or OUT zero-length data packet
 323   1              //----------------------------------------------------
 324   1              usbstack.wLen=0;
 325   1              if(!usbXfer())
 326   1                      return FALSE;
 327   1      
 328   1              return TRUE;                                                                                    
 329   1                                              
 330   1      }
 331          
 332          
 333          unsigned char epBulkSend(unsigned char *pBuffer,unsigned int len)
 334          {
 335   1              usbstack.usbaddr=0x1;
 336   1              usbstack.endpoint=usbstack.epbulkout;
 337   1              usbstack.pid=PID_OUT;
 338   1              usbstack.wPayload=64;
 339   1              usbstack.wLen=len;
 340   1              usbstack.buffer=pBuffer;
 341   1              while(len>0)
 342   1              {
 343   2                      if (len > usbstack.wPayload)
 344   2                              usbstack.wLen = usbstack.wPayload;
 345   2                      else                            
 346   2                              usbstack.wLen = len;    
 347   2                      if(!usbXfer())
 348   2                              return FALSE;
 349   2                      len-=usbstack.wLen;
 350   2                      usbstack.buffer=usbstack.buffer+usbstack.wLen;
 351   2                      //DelayUs(10);
 352   2              }
 353   1              return TRUE;    
 354   1      }
 355          
 356          unsigned char epBulkRcv(unsigned char *pBuffer,unsigned int len)
 357          {
 358   1              usbstack.usbaddr=0x1;
 359   1              usbstack.endpoint=usbstack.epbulkin;
 360   1              usbstack.pid=PID_IN;
 361   1              usbstack.wPayload=64;
 362   1              usbstack.wLen=len;
 363   1              usbstack.buffer=pBuffer;
 364   1              if(usbstack.wLen)
 365   1              {
 366   2                      if(!usbXfer())
 367   2                              return FALSE;
 368   2              }
 369   1              return TRUE;
 370   1      }
 371          //*****************************************************************************************
 372          // Control endpoint
 373          //*****************************************************************************************
 374          //void VendorCmd(void)
C51 COMPILER V7.20   SL811                                                                 12/13/2005 15:28:02 PAGE 9   

 375          //{ 
 376          //      ep0Xfer();
 377          //}
 378          
 379          //*****************************************************************************************
 380          // Set Device Address : 
 381          //*****************************************************************************************
 382          unsigned char SetAddress(unsigned char addr)
 383          {
 384   1              usbstack.usbaddr=0;
 385   1              usbstack.setup.bmRequest=0;
 386   1              usbstack.setup.bRequest=SET_ADDRESS;
 387   1              usbstack.setup.wValue=addr;
 388   1              usbstack.setup.wIndex=0;
 389   1              usbstack.setup.wLength=0;
 390   1              //usbstack.buffer=&usbstack.setup;
 391   1              return ep0Xfer();
 392   1      
 393   1      }
 394          
 395          //*****************************************************************************************
 396          // Set Device Configuration : 
 397          //*****************************************************************************************
 398          unsigned char Set_Configuration(void)
 399          {
 400   1              //usbstack.usbaddr=usbaddr;
 401   1              //usbstack.
 402   1              usbstack.setup.bmRequest=0;
 403   1              usbstack.setup.bRequest=SET_CONFIG;
 404   1              //usbstack.setup.wValue=wVal;
 405   1              usbstack.setup.wIndex=0;
 406   1              usbstack.setup.wLength=0;
 407   1              usbstack.buffer=NULL;
 408   1              return ep0Xfer();
 409   1      
 410   1      }
 411          
 412          //*****************************************************************************************
 413          // Get Device Descriptor : Device, Configuration, String
 414          //*****************************************************************************************
 415          unsigned char GetDesc(void)
 416          { 
 417   1              
 418   1              usbstack.setup.bmRequest=0x80;
 419   1              usbstack.setup.bRequest=GET_DESCRIPTOR;
 420   1              usbstack.setup.wValue=WordSwap(usbstack.setup.wValue);
 421   1              
 422   1              usbstack.wPayload=uDev.wPayLoad[0];
 423   1              //usbstack.buffer=&usbstack.setup;
 424   1              return ep0Xfer();
 425   1      }
 426          
 427          //*****************************************************************************************
 428          // USB Data Endpoint Read/Write
 429          // wLen is in low byte first format
 430          //*****************************************************************************************
 431          /*
 432          unsigned char DataRW(BYTE epaddr)
 433          {
 434                  //xdata BYTE pid = PID_OUT;
 435          
 436                  usbstack.pid=PID_OUT;
C51 COMPILER V7.20   SL811                                                                 12/13/2005 15:28:02 PAGE 10  

 437                  usbstack.endpoint=epaddr&0x0F;
 438                  
 439                  if(epaddr & 0x80)       // get direction of transfer
 440                          usbstack.pid = PID_IN;                          

⌨️ 快捷键说明

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