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

📄 d12hap.lst

📁 usb_232(仅枚举)
💻 LST
📖 第 1 页 / 共 2 页
字号:
 224   2                      if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)
 225   2                              {
 226   3                              // clear TX stall for IN on EPn. 
 227   3                              D12_SetEndpointStatus(endp*2 + 1, 1);//设置输入端点禁止
 228   3                              }
 229   2                      else
 230   2                              {
 231   3                              // clear RX stall for OUT on EPn. 
 232   3                              D12_SetEndpointStatus(endp*2, 1);   //设置输出端点禁止
 233   3                              }
 234   2                      single_transmit(0, 0);                      //发送响应
 235   2              } else
 236   1                      stall_ep0();   
 237   1      }
C51 COMPILER V7.01  D12HAP                                                                 11/14/2003 09:44:51 PAGE 5   

 238          
 239          void get_descriptor(void)
 240          {
 241   1      
 242   1              unsigned char bDescriptor = MSB(ControlData.DeviceRequest.wValue);
 243   1      
 244   1              if (bDescriptor == USB_DEVICE_DESCRIPTOR_TYPE) 
 245   1                {
 246   2                      code_transmit((unsigned char code *)&DeviceDescr, sizeof(USB_DEVICE_DESCRIPTOR));
 247   2                } 
 248   1              else if (bDescriptor == USB_CONFIGURATION_DESCRIPTOR_TYPE)
 249   1                {   
 250   2                      //if(ControlData.DeviceRequest.wLength>CONFIG_DESCRIPTOR_LENGTH)
 251   2                      
 252   2                       //{
 253   2                       //   ControlData.DeviceRequest.wLength = CONFIG_DESCRIPTOR_LENGTH;
 254   2                         // code_transmit((unsigned char code *)&ConfigDescr, ControlData.DeviceRequest.wLength);
 255   2                      // }
 256   2                       //else
 257   2                         code_transmit((unsigned char code *)&ConfigDescr, CONFIG_DESCRIPTOR_LENGTH);
 258   2                      
 259   2                 } 
 260   1              else
 261   1                      
 262   1                  stall_ep0();
 263   1      }
 264          /*void set_descriptor(void)
 265          {
 266          
 267          
 268          }*/
 269          
 270          void get_configuration(void)
 271          {
 272   1      
 273   1          unsigned char c = bEPPflags.bits.configuration;
 274   1      
 275   1              single_transmit(&c, 1);
 276   1      }
 277          void set_configuration(void)
 278          {
 279   1      
 280   1      if (ControlData.DeviceRequest.wValue == 0)
 281   1         {
 282   2                      //* put device in unconfigured state 
 283   2                      single_transmit(0, 0);
 284   2                      DISABLE;
 285   2                      bEPPflags.bits.configuration = 0;
 286   2                      ENABLE;
 287   2                      init_unconfig();
 288   2              } 
 289   1              else if (ControlData.DeviceRequest.wValue == 1) 
 290   1                       {
 291   2                              // Configure device 
 292   2                               single_transmit(0, 0);
 293   2      
 294   2                               init_unconfig();
 295   2                          
 296   2                               init_config();
 297   2                      
 298   2                               DISABLE;
 299   2                               bEPPflags.bits.configuration = 1;
C51 COMPILER V7.01  D12HAP                                                                 11/14/2003 09:44:51 PAGE 6   

 300   2                               ENABLE;
 301   2                          } 
 302   1               else
 303   1                      
 304   1               stall_ep0();
 305   1      
 306   1      }
 307          void get_interface(void)
 308          {
 309   1          unsigned char txdat = 0;        // Only/Current interface = 0 
 310   1              
 311   1          single_transmit(&txdat, 1);
 312   1      }
 313          void set_interface(void)
 314          {
 315   1           if (ControlData.DeviceRequest.wValue == 0 && ControlData.DeviceRequest.wIndex == 0)
 316   1                      
 317   1                   single_transmit(0, 0);
 318   1               else
 319   1                      
 320   1                   stall_ep0();
 321   1      
 322   1      }
 323          /*void synchronous_frame(void)
 324          {
 325          
 326          
 327          
 328          
 329          }*/
 330          
 331          void reserved(void)
 332          {
 333   1              stall_ep0();
 334   1      }
 335          
 336          void get_firmware_version()
 337          {
 338   1              unsigned char i;
 339   1      
 340   1              i = 0x30; // firmware version number
 341   1              single_transmit((unsigned char *)&i, 1);
 342   1      
 343   1      }
 344          
 345          void get_buffer_size()
 346          {
 347   1              unsigned char i[4];
 348   1      
 349   1              if(bNoRAM == TRUE) {
 350   2                      i[0] = EP2_PACKET_SIZE;
 351   2                      i[1] = 0;
 352   2                      i[2] = 0;
 353   2                      i[3] = 0;
 354   2              } else {
 355   2                      i[0] = 0;
 356   2                      i[1] = 1;
 357   2                      i[2] = 0;
 358   2                      i[3] = 0;
 359   2              }
 360   1              single_transmit(i, 4);
 361   1      
C51 COMPILER V7.01  D12HAP                                                                 11/14/2003 09:44:51 PAGE 7   

 362   1      }
 363          /*void setup_dma_request()
 364          {
 365                  memcpy((unsigned char *)&ioRequest + ControlData.DeviceRequest.wValue,
 366                          ControlData.dataBuffer,
 367                          ControlData.DeviceRequest.wLength);
 368          
 369                  ioRequest.uSize = SWAP(ioRequest.uSize);
 370                  ioRequest.uAddressL = SWAP(ioRequest.uAddressL);
 371          
 372                  if(ioRequest.uSize > DMA_BUFFER_SIZE) { // Unaccepted request
 373                          stall_ep0();
 374                  }
 375                  else if(bNoRAM == TRUE && ioRequest.uSize > EP2_PACKET_SIZE) {
 376                          stall_ep0();
 377                  }
 378                  else {
 379                          if(bEPPflags.bits.dma_state == DMA_IDLE) {
 380                                  DISABLE;
 381                                  bEPPflags.bits.setup_dma ++;
 382                                  ENABLE;
 383                          }
 384                          else {
 385                                  DISABLE;
 386                                  bEPPflags.bits.dma_state = DMA_PENDING;
 387                                  ENABLE;
 388                          }
 389          
 390                  } // else if accepted request
 391          }*/
 392          
 393          void read_write_register(void)
 394          {
 395   1              unsigned char i;
 396   1      
 397   1              if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {
 398   2      
 399   2                      if(bEPPflags.bits.verbose)
 400   2                              printf("Read Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
 401   2                                      ControlData.DeviceRequest.wValue,
 402   2                                      ControlData.DeviceRequest.wLength,
 403   2                                      ControlData.DeviceRequest.wIndex);
 404   2      
 405   2                      if(ControlData.DeviceRequest.wIndex == GET_FIRMWARE_VERSION &&
 406   2                              ControlData.DeviceRequest.wValue == 0 &&
 407   2                              ControlData.DeviceRequest.wLength == 1)
 408   2                              get_firmware_version();
 409   2                      else
 410   2                      if(ControlData.DeviceRequest.wIndex == GET_BUFFER_SIZE &&
 411   2                              ControlData.DeviceRequest.wValue == 0 &&
 412   2                              ControlData.DeviceRequest.wLength == 4)
 413   2                              get_buffer_size();
 414   2                      else
 415   2                              stall_ep0();
 416   2      
 417   2              }       // if read register
 418   1              else{
 419   2                      if(bEPPflags.bits.verbose) {
 420   3      
 421   3                              //printf("Write Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
 422   3                              //      ControlData.DeviceRequest.wValue,
 423   3                              //      ControlData.DeviceRequest.wLength,
C51 COMPILER V7.01  D12HAP                                                                 11/14/2003 09:44:51 PAGE 8   

 424   3                              //      ControlData.DeviceRequest.wIndex);
 425   3      
 426   3                              //printf("Data: ");
 427   3                              for(i = 0; i < ControlData.DeviceRequest.wLength; i ++)
 428   3                                      printf("0x%bx, ", *((ControlData.dataBuffer)+i));
 429   3                              printf("\n");
 430   3                      }
 431   2      
 432   2                      //if(ControlData.DeviceRequest.wIndex == SETUP_DMA_REQUEST &&
 433   2                              //ControlData.DeviceRequest.wValue == 0 &&
 434   2                              //ControlData.DeviceRequest.wLength == 6)
 435   2                              //setup_dma_request();
 436   2                              //stall_ep0();
 437   2                      //else
 438   2                              stall_ep0();
 439   2              }       // if write register
 440   1      }
 441          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    769    ----
   CONSTANT SIZE    =    135    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----      18
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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