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

📄 chap_9.lst

📁 参加今年的比赛肯定要用的。谢谢支持。祝大家好运!
💻 LST
📖 第 1 页 / 共 4 页
字号:
 253          
 254          
 255          
 256          USB_STRING_LANGUAGE_DESCRIPTOR  strLanguage =
 257          {
 258                  sizeof(USB_STRING_LANGUAGE_DESCRIPTOR),
 259                  USB_STRING_DESCRIPTOR_TYPE,
 260                  SWAP(0x0409)
 261          };
 262          */
 263          USB_STRING_INTERFACE_DESCRIPTOR  strInterface =
 264          {
 265                  sizeof(USB_STRING_INTERFACE_DESCRIPTOR),
 266                  USB_STRING_DESCRIPTOR_TYPE,
 267                  {'I',0,'n',0,'t',0,'e',0,'r',0,'f',0,'a',0,'c',0,'e',0,'0',0,'0',0}
 268          };
 269          
 270          USB_STRING_CONFIGURATION_DESCRIPTOR  strConfiguration =
 271          {
 272                  sizeof(USB_STRING_CONFIGURATION_DESCRIPTOR),
 273                  USB_STRING_DESCRIPTOR_TYPE,
 274                  {
 275                  'C',0,
 276                  'o',0,
 277                  'n',0,
 278                  'f',0,
 279                  'i',0,
 280                  'g',0,
 281                  '0',0,
 282                  '0',0
 283              }
 284          };
 285          
 286          USB_STRING_SERIALNUMBER_DESCRIPTOR  strSerialNum =
 287          {
 288                  sizeof(strSerialNum),
 289                  USB_STRING_DESCRIPTOR_TYPE,
 290             {
 291                  '0',0,
 292                  '0',0,
 293                  '0',0,
 294                  '0',0,
 295          
 296                  '0',0,
 297                  '0',0,
 298                  '0',0,
 299                  '0',0,
 300          
 301                  '0',0,
 302                  '0',0,
 303                  '0',0,
C51 COMPILER V7.06   CHAP_9                                                                08/18/2005 15:30:26 PAGE 6   

 304                  '0',0
 305             }
 306          };
 307          USB_STRING_PRODUCT_DESCRIPTOR  strProduct =
 308          {
 309                  sizeof(USB_STRING_PRODUCT_DESCRIPTOR),
 310                  USB_STRING_DESCRIPTOR_TYPE,
 311                  {
 312                  'P', 0,
 313                  'H', 0,
 314                  'I', 0,
 315                  'L', 0,
 316                  'I', 0,
 317                  'P', 0,
 318                  'S', 0,
 319                  ' ', 0,
 320                  'I', 0,
 321                  'S', 0,
 322                  'P', 0,
 323                  '1', 0,
 324                  '1', 0,
 325                  '8', 0,
 326                  '1', 0,
 327                  ' ', 0,
 328                  'T', 0,
 329                  'e', 0,
 330                  's', 0,
 331                  't', 0,
 332                  ' ', 0,
 333                  ' ', 0,
 334                  ' ', 0
 335                  }
 336          };
 337          
 338          USB_STRING_MANUFACTURER_DESCRIPTOR  strManufacturer =
 339          {
 340                  sizeof(USB_STRING_MANUFACTURER_DESCRIPTOR),
 341                  USB_STRING_DESCRIPTOR_TYPE,
 342                  {
 343                  'P', 0,
 344                  'H', 0,
 345                  'I', 0,
 346                  'L', 0,
 347                  'I', 0,
 348                  'P', 0,
 349                  'S', 0,
 350                  ' ', 0,
 351                  'S', 0,
 352                  'e', 0,
 353                  'm', 0,
 354                  'i', 0,
 355                  'c', 0,
 356                  'o', 0,
 357                  'n', 0,
 358                  'd', 0,
 359                  'u', 0,
 360                  'c', 0,
 361                  't', 0,
 362                  'o', 0,
 363                  'r', 0,
 364                  's', 0,
 365                  ' ', 0,
C51 COMPILER V7.06   CHAP_9                                                                08/18/2005 15:30:26 PAGE 7   

 366                  'A', 0,
 367                  'P', 0,
 368                  'I', 0,
 369                  'C', 0}
 370          };
 371          
 372          // *************************************************************************
 373          // USB Protocol Layer
 374          // ************************************************************************
 375          
 376          
 377          
 378          // *************************************************************************
 379          // USB standard device requests
 380          // *************************************************************************
 381          
 382          void Chap9_GetStatus(void)
 383          {
 384   1              UCHAR   endp, txdat[2];
 385   1              UCHAR   c;
 386   1              UCHAR   bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
 387   1      
 388   1      
 389   1              if(bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE)
 390   1              {
 391   2              switch(bRecipient)
 392   2                              {
 393   3                              case USB_RECIPIENT_DEVICE:
 394   3                                              if(bD13flags.bits.remote_wakeup == 1)
 395   3                                                      txdat[0] = DEVSTS_SELFPOWERED|DEVSTS_REMOTEWAKEUP;   /* remote wakeup and Self-powered */
 396   3                                              else
 397   3                                                      txdat[0] = DEVSTS_SELFPOWERED;   /* Self-powered*/
 398   3                                              txdat[1]=0;
 399   3      
 400   3                                              Chap9_SingleTransmitEP0(txdat, 2);
 401   3                                              break;
 402   3      
 403   3                              case USB_RECIPIENT_INTERFACE:
 404   3      
 405   3                                              Chap9_StallEP0InControlRead();
 406   3                                              break;
 407   3      
 408   3                              case USB_RECIPIENT_ENDPOINT:
 409   3      
 410   3                                              if( ControlData.DeviceRequest.wIndex == 0x00 )
 411   3                                              {
 412   4                                                      endp = -1;
 413   4                                                      c = Hal4D13_GetEndpointStatusWOInteruptClear(endp + 1);
 414   4                                                      if(c & D13REG_EPSTS_STALL)
 415   4                                                              txdat[0] = ENDPSTS_HALT;   /* Halt */
 416   4                                                      else
 417   4                                                              txdat[0] = 0;
 418   4      
 419   4                                                      txdat[1] = 0;
 420   4      
 421   4                                                      Chap9_SingleTransmitEP0(txdat, 2);
 422   4                                              }
 423   3                                              else
 424   3                                                      Chap9_StallEP0InControlRead();
 425   3      
 426   3                                              break;
 427   3      
C51 COMPILER V7.06   CHAP_9                                                                08/18/2005 15:30:26 PAGE 8   

 428   3                              default:
 429   3                                              Chap9_StallEP0InControlRead();
 430   3                                              break;
 431   3                              }
 432   2              }
 433   1      
 434   1      
 435   1              else
 436   1              {
 437   2                      if(ControlData.DeviceRequest.wValue == 0 && ControlData.DeviceRequest.wLength == 2 )
 438   2                      {
 439   3                              switch(bRecipient)
 440   3                              {
 441   4                              case USB_RECIPIENT_DEVICE:
 442   4                                              if(bD13flags.bits.remote_wakeup == 1)
 443   4                                                      txdat[0] = DEVSTS_SELFPOWERED|DEVSTS_REMOTEWAKEUP;   /* remote wakeup and Self-powered */
 444   4                                              else
 445   4                                                      txdat[0] = DEVSTS_SELFPOWERED;   /* Self-powered*/
 446   4                                              txdat[1]=0;
 447   4      
 448   4                                              Chap9_SingleTransmitEP0(txdat, 2);
 449   4                                              break;
 450   4      
 451   4                              case USB_RECIPIENT_INTERFACE:
 452   4                                              txdat[0]=0;
 453   4                                              txdat[1]=0;
 454   4      
 455   4                                              Chap9_SingleTransmitEP0(txdat, 2);
 456   4                                              break;
 457   4      
 458   4                              case USB_RECIPIENT_ENDPOINT:
 459   4      
 460   4                                              if( ControlData.DeviceRequest.wIndex == 0x00 )
 461   4                                                      endp = -1;
 462   4                                              else
 463   4                                                      endp = (UCHAR)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
 464   4      
 465   4                                              c = Hal4D13_GetEndpointStatusWOInteruptClear(endp + 1);
 466   4                                              if(c & D13REG_EPSTS_STALL)
 467   4                                                      txdat[0] = ENDPSTS_HALT;   /* Halt */
 468   4                                              else
 469   4                                                      txdat[0] = 0;
 470   4      
 471   4                                              txdat[1] = 0;
 472   4      
 473   4                                              Chap9_SingleTransmitEP0(txdat, 2);
 474   4                                              break;
 475   4      
 476   4                              default:
 477   4                                              Chap9_StallEP0InControlRead();
 478   4                                              break;
 479   4                              }
 480   3                      }
 481   2              }
 482   1      
 483   1      }
 484          
 485          void Chap9_ClearFeature(void)
 486          {
 487   1              UCHAR   endp;
 488   1              UCHAR   bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
 489   1              USHORT  wFeature = ControlData.DeviceRequest.wValue;
C51 COMPILER V7.06   CHAP_9                                                                08/18/2005 15:30:26 PAGE 9   

 490   1      
 491   1              if(bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE)
 492   1              {
 493   2                      if( ControlData.DeviceRequest.wLength == 0 )
 494   2                      {
 495   3                              switch(bRecipient)
 496   3                              {
 497   4                              case USB_RECIPIENT_DEVICE:
 498   4                                                      if(wFeature == USB_FEATURE_REMOTE_WAKEUP)
 499   4                                                      {
 500   5                                                      bD13flags.bits.remote_wakeup = 0;
 501   5                                                      Chap9_SingleTransmitEP0(0, 0);
 502   5                                                      }
 503   4                                                      else
 504   4                                                              Chap9_StallEP0InControlWrite();
 505   4      
 506   4                                                      break;
 507   4      
 508   4      
 509   4      
 510   4                              case USB_RECIPIENT_ENDPOINT:
 511   4      
 512   4                                                      if(wFeature == USB_FEATURE_ENDPOINT_STALL)
 513   4                                                      {

⌨️ 快捷键说明

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