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

📄 chap9.lst

📁 usb程序 硬件用的是isp1518
💻 LST
📖 第 1 页 / 共 3 页
字号:
 419          
 420          void USBClassRequest_ClearFeature(void) //ok
 421          {
 422   1              unsigned char endp;
 423   1              unsigned char bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
 424   1      
 425   1              if (bRecipient == USB_RECIPIENT_DEVICE
 426   1                      && ControlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP) {
C51 COMPILER V8.02   CHAP9                                                                 08/03/2006 10:10:36 PAGE 8   

 427   2                      DISABLE_INTERRUPTS;
 428   2                      bZBoardFlags.bits.bRemote_Wakeup = 0;
 429   2                      ENABLE_INTERRUPTS;
 430   2                      Chap9_ControlWriteHandshake();
 431   2              }
 432   1              else if (bRecipient == USB_RECIPIENT_ENDPOINT
 433   1                      && ControlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_STALL) {
 434   2                      endp = (unsigned char)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
 435   2                      if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)
 436   2                              /* clear TX stall for IN on EPn. */
 437   2                              ISP1581_SetEndpointStatus(endp*2 + 1, 0);
 438   2                      else
 439   2                              /* clear RX stall for OUT on EPn. */
 440   2                              ISP1581_SetEndpointStatus(endp*2, 0);
 441   2                      Chap9_ControlWriteHandshake();
 442   2              } else
 443   1                      USB_Stall_EP0();
 444   1      }
 445          
 446          void USBClassRequest_SetFeature(void)  //OK
 447          {
 448   1              unsigned char endp;
 449   1              unsigned char bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
 450   1              
 451   1              if (bRecipient == USB_RECIPIENT_DEVICE
 452   1                      && ControlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP) {
 453   2                      DISABLE_INTERRUPTS;
 454   2                      bZBoardFlags.bits.bRemote_Wakeup = 1;
 455   2                      ENABLE_INTERRUPTS;
 456   2                      Chap9_ControlWriteHandshake();
 457   2              }
 458   1              else if (bRecipient == USB_RECIPIENT_ENDPOINT
 459   1                      && ControlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_STALL) {
 460   2                      endp = (unsigned char)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
 461   2                      if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)
 462   2                              /* clear TX stall for IN on EPn. */
 463   2                              endp=endp*2 + 1;
 464   2                      else
 465   2                              /* clear RX stall for OUT on EPn. */
 466   2                              endp=endp*2;
 467   2                      ISP1581_SetEndpointStatus(endp, epctlfc_stall);
 468   2                      //USB_Single_Transmit(0, 0);
 469   2                      Chap9_ControlWriteHandshake();
 470   2              } else
 471   1                      USB_Stall_EP0();
 472   1              MCU_LED0 = 0;
 473   1      }
 474          
 475          void USBClassRequest_SetAddress(void)  //ok
 476          {
 477   1              
 478   1              ISP1581_SetAddressEnable((UCHAR)(ControlData.DeviceRequest.wValue &
 479   1                                      DEVICE_ADDRESS_MASK), 1);
 480   1              Chap9_ControlWriteHandshake();
 481   1              
 482   1      }
 483          
 484          void USBClassRequest_GetDescriptor(void)      //ok
 485          {
 486   1              unsigned char bDescriptor = MSB(ControlData.DeviceRequest.wValue);
 487   1      
 488   1              if(bDescriptor == USB_DEVICE_DESCRIPTOR_TYPE)
C51 COMPILER V8.02   CHAP9                                                                 08/03/2006 10:10:36 PAGE 9   

 489   1              {
 490   2                      if(bZBoardFlags.bits.ConnectSpeed == HighSpeed)
 491   2                              //Chap9_BurstTransmitEP0((PUCHAR)&DeviceDescr_H, sizeof(USB_DEVICE_DESCRIPTOR));
 492   2                              USB_Code_Transmit((unsigned char code *)&DeviceDescr_H, sizeof(USB_DEVICE_DESCRIPTOR));
 493   2                      else
 494   2                              USB_Code_Transmit((unsigned char code *)&DeviceDescr, sizeof(USB_DEVICE_DESCRIPTOR));
 495   2              }
 496   1              else if(bDescriptor == USB_CONFIGURATION_DESCRIPTOR_TYPE)
 497   1              {
 498   2                      if(bZBoardFlags.bits.ConnectSpeed == HighSpeed)
 499   2                              USB_Code_Transmit((unsigned char code *)&ConfigDescr_H, CONFIG_DESCRIPTOR_LENGTH);
 500   2                      else
 501   2                              USB_Code_Transmit((unsigned char code *)&ConfigDescr, CONFIG_DESCRIPTOR_LENGTH);
 502   2                      
 503   2              }
 504   1              else if(bDescriptor == USB_STRING_DESCRIPTOR_TYPE)
 505   1              {
 506   2                      switch(LSB(ControlData.DeviceRequest.wValue))
 507   2                      {
 508   3                      case 0:
 509   3                              USB_Code_Transmit((unsigned char code *)&StringLANGID, StringLANGID[0]);
 510   3                              break;
 511   3                      case 1:
 512   3                              USB_Code_Transmit((unsigned char code *)szManufacturer, szManufacturer[0]);
 513   3                              break;
 514   3                      case 2:
 515   3                              USB_Code_Transmit((unsigned char code *)szProduct, szProduct[0]);
 516   3                              break;
 517   3                      case 3:
 518   3                              USB_Code_Transmit((unsigned char code *)szSerialNumber, szSerialNumber[0]);
 519   3                              break;
 520   3                      case 4:
 521   3                              USB_Code_Transmit((unsigned char code *)szConfiguration, szConfiguration[0]);
 522   3                              break;
 523   3                      case 5:
 524   3                              USB_Code_Transmit((unsigned char code *)szInterface, szInterface[0]);
 525   3                              break;
 526   3                      case 6:
 527   3                              USB_Code_Transmit((unsigned char code *)szUserInfo, szUserInfo[0]);
 528   3                              break;
 529   3                      default:
 530   3                              USB_Code_Transmit((unsigned char code *)&StringLANGID, 4);
 531   3                              break;
 532   3                      }
 533   2                      
 534   2              }
 535   1              else if (bDescriptor ==USB_OTEHRSPEEDCONFIGURATION_DESCRIPTOR_TYPE)
 536   1                      {
 537   2                              if(bZBoardFlags.bits.ConnectSpeed == HighSpeed)
 538   2                              {
 539   3                                      //Chap9_BurstTransmitEP0((PUCHAR)&Otherspeed_ConfigDescr_H, CONFIG_DESCRIPTOR_LENGTH);
 540   3                                      USB_Code_Transmit((unsigned char code *)&Otherspeed_ConfigDescr_H, CONFIG_DESCRIPTOR_LENGTH);
 541   3                              }
 542   2                              else
 543   2                              {
 544   3                                      USB_Stall_EP0();
 545   3                              }
 546   2                              MCU_LED0 = 0;
 547   2                      }
 548   1              else if (bDescriptor ==USB_DEVICEQUALIFIER_DESCRIPTOR_TYPE)
 549   1                      {
 550   2                      USB_Code_Transmit((unsigned char code *)&DeviceQualifierDescr_H, sizeof(USB_DEVICEQUALIFIER_DESCRIPTOR))
C51 COMPILER V8.02   CHAP9                                                                 08/03/2006 10:10:36 PAGE 10  

             -;
 551   2                      MCU_LED0 = 0;
 552   2                      }
 553   1              else
 554   1              {
 555   2                      USB_Stall_EP0();
 556   2                      
 557   2              }
 558   1      }
 559          
 560          void USBClassRequest_GetConfiguration(void)  //ok
 561          {
 562   1              unsigned char c = bZBoardFlags.bits.bConfiguration;
 563   1      
 564   1              USB_Single_Transmit(&c, 1);
 565   1      }
 566          
 567          void USBClassRequest_SetConfiguration(void) //ok
 568          {
 569   1              if (ControlData.DeviceRequest.wValue == 0) {
 570   2                      /* put device in unconfigured state */
 571   2                      Chap9_ControlWriteHandshake();
 572   2                      DISABLE_INTERRUPTS;
 573   2                      bZBoardFlags.bits.bConfiguration = 0;
 574   2                      ENABLE_INTERRUPTS;
 575   2                      //USB_Init_Unconfig();
 576   2              } else if (ControlData.DeviceRequest.wValue == 1) {
 577   2                      /* Configure device */
 578   2                      Chap9_ControlWriteHandshake();
 579   2      
 580   2              
 581   2                      DISABLE_INTERRUPTS;
 582   2                      bZBoardFlags.bits.bConfiguration = 1;
 583   2                      LED_STATUS=0;
 584   2                      ENABLE_INTERRUPTS;
 585   2              } else
 586   1                      USB_Stall_EP0();
 587   1      }
 588          
 589          void USBClassRequest_GetInterface(void)  //ok
 590          {
 591   1              unsigned char txdat = 0;        /* Only/Current interface = 0 */
 592   1      
 593   1              USB_Single_Transmit(&txdat, 1);
 594   1      }
 595          
 596          void USBClassRequest_SetInterface(void)  //ok
 597          {
 598   1              if (ControlData.DeviceRequest.wValue == 0 && ControlData.DeviceRequest.wIndex == 0)
 599   1                      Chap9_ControlWriteHandshake();
 600   1              else
 601   1                      USB_Stall_EP0();
 602   1      }
 603          
 604          ///////////////////////////////////////////////////////////////////////////////
 605          void Chap9_ControlWriteHandshake(void)
 606          {
 607   1              ISP1581_ControlWriteHandshake();
 608   1              bZBoardFlags.bits.DCP_state = USBFSM4DCP_CONTROLWRITEHANDSHAKE;
 609   1      }
 610          

C51 COMPILER V8.02   CHAP9                                                                 08/03/2006 10:10:36 PAGE 11  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    638    ----
   CONSTANT SIZE    =    536    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
   EDATA SIZE       =   ----    ----
   HDATA SIZE       =   ----    ----
   XDATA CONST SIZE =   ----    ----
   FAR CONST SIZE   =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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