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

📄 mainloop.lst

📁 参加今年的比赛肯定要用的。谢谢支持。祝大家好运!
💻 LST
📖 第 1 页 / 共 2 页
字号:
 217   1      }
 218          
 219          
 220          void DeviceRequest_Handler(void)
 221          {
 222   1        UCHAR type, req;
 223   1      
 224   1        type = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK;
 225   1        req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK;
 226   1      
 227   1        if (bD13flags.bits.verbose==1)
 228   1          printf("type = 0x%02x, req = 0x%02x\n", type, req);
 229   1      
 230   1        help_devreq(type, req); /* print out device request */
 231   1      
 232   1        if ((type == USB_STANDARD_REQUEST) && (req < MAX_STANDARD_REQUEST))
 233   1        {
 234   2          (*StandardDeviceRequest[req])();
 235   2        }
 236   1        else if ((type == USB_CLASS_REQUEST) && (req < MAX_CLASS_REQUEST))
 237   1          (*ClassDeviceRequest[req])();
 238   1        else if ((type == USB_VENDOR_REQUEST) && (req   < MAX_VENDOR_REQUEST))
 239   1          (*VendorDeviceRequest[req])();
C51 COMPILER V7.06   MAINLOOP                                                              08/18/2005 15:30:30 PAGE 5   

 240   1        else{
 241   2          Chap9_StallEP0();
 242   2        }
 243   1      }
 244          
 245          void help_devreq(UCHAR type, UCHAR req)
 246          {
 247   1        UCHAR typ = type;
 248   1        typ >>= 5;
 249   1      
 250   1        if(type == USB_STANDARD_REQUEST)
 251   1        {
 252   2          printf("Request Type = %s, Request = %s.\n", _NAME_USB_REQUEST_TYPE[typ],
 253   2            _NAME_USB_STANDARD_REQUEST[req]);
 254   2        }
 255   1        else if(type == USB_CLASS_REQUEST)
 256   1        {
 257   2          printf("Request Type = %s, Request = %s.\n", _NAME_USB_REQUEST_TYPE[typ],
 258   2            _NAME_USB_CLASS_REQUEST[req]);
 259   2        }
 260   1        else
 261   1        {
 262   2          if(bD13flags.bits.verbose)
 263   2            printf("Request Type = %s, bRequest = 0x%x.\n", _NAME_USB_REQUEST_TYPE[typ],
 264   2              req);
 265   2        }
 266   1      }
 267          
 268          void disconnect_USB(void)
 269          {
 270   1      
 271   1              Hal4D13_SetDevConfig(D13REG_DEVCNFG_NOLAZYCLOCK
 272   1                                                      |D13REG_DEVCNFG_PWROFF
 273   1                                                      |D13REG_DEVCNFG_CLOCKRUNNING
 274   1                                                      );
 275   1              Hal4D13_SetMode(D13REG_MODE_INT_EN);
 276   1      
 277   1      }
 278          
 279          void connect_USB(void)
 280          {
 281   1      
 282   1      //      RaiseIRQL();
 283   1      
 284   1              bD13flags.value = 0; /* reset event flags*/
 285   1              bD13flags.bits.DCP_state = USBFSM4DCP_IDLE;
 286   1              config_endpoint();
 287   1      
 288   1      //      LowerIRQL();
 289   1      
 290   1              Hal4D13_SetMode(D13REG_MODE_SOFTCONNECT
 291   1                                                 |D13REG_MODE_DMA16
 292   1                                                 );
 293   1      
 294   1      }
 295          
 296          
 297          void config_endpoint(void)
 298          {
 299   1              /*Control Endpoint*/
 300   1              Hal4D13_SetEndpointConfig(D13REG_EPCNFG_FIFO_EN|D13REG_EPCNFG_NONISOSZ_64,EPINDEX4EP0_CONTROL_OUT);
 301   1              Hal4D13_SetEndpointConfig(D13REG_EPCNFG_FIFO_EN|D13REG_EPCNFG_IN_EN|D13REG_EPCNFG_NONISOSZ_64,EPINDEX4EP0
C51 COMPILER V7.06   MAINLOOP                                                              08/18/2005 15:30:30 PAGE 6   

             -_CONTROL_IN);
 302   1              /*Control Endpoint*/
 303   1      
 304   1              /*DISABLED*/
 305   1              Hal4D13_SetEndpointConfig(/*D13REG_EPCNFG_FIFO_EN|*/D13REG_EPCNFG_NONISOSZ_8,EPINDEX4EP01);
 306   1              Hal4D13_SetEndpointConfig(/*D13REG_EPCNFG_FIFO_EN|*/D13REG_EPCNFG_IN_EN|D13REG_EPCNFG_NONISOSZ_8,EPINDEX4
             -EP02);
 307   1              /*DISABLED*/
 308   1      
 309   1              /*Bulk Enpoints Double Buffered*/
 310   1              Hal4D13_SetEndpointConfig(D13REG_EPCNFG_FIFO_EN|D13REG_EPCNFG_DBLBUF_EN|D13REG_EPCNFG_NONISOSZ_64,EPINDEX
             -4EP03);
 311   1              Hal4D13_SetEndpointConfig(D13REG_EPCNFG_FIFO_EN|D13REG_EPCNFG_DBLBUF_EN|D13REG_EPCNFG_IN_EN|D13REG_EPCNFG
             -_NONISOSZ_64,EPINDEX4EP04);
 312   1              /*Bulk Enpoints Double Buffered*/
 313   1      
 314   1              /*Isochronous Endpoints*/
 315   1              Hal4D13_SetEndpointConfig(D13REG_EPCNFG_FIFO_EN|D13REG_EPCNFG_DBLBUF_EN|D13REG_EPCNFG_ISOSZ_512|D13REG_EP
             -CNFG_ISO_EN,EPINDEX4EP05);
 316   1              Hal4D13_SetEndpointConfig(D13REG_EPCNFG_FIFO_EN|D13REG_EPCNFG_DBLBUF_EN|D13REG_EPCNFG_ISOSZ_512|D13REG_EP
             -CNFG_ISO_EN|D13REG_EPCNFG_IN_EN,EPINDEX4EP06);
 317   1              /*Isochronous Endpoints*/
 318   1      
 319   1              /*DISABLED*/
 320   1              Hal4D13_SetEndpointConfig(/*D13REG_EPCNFG_FIFO_EN|*/D13REG_EPCNFG_DBLBUF_EN|D13REG_EPCNFG_ISOSZ_16|D13REG
             -_EPCNFG_ISO_EN,EPINDEX4EP07);
 321   1              Hal4D13_SetEndpointConfig(/*D13REG_EPCNFG_FIFO_EN|*/D13REG_EPCNFG_IN_EN|D13REG_EPCNFG_DBLBUF_EN|D13REG_EP
             -CNFG_ISOSZ_16|D13REG_EPCNFG_ISO_EN,EPINDEX4EP08);
 322   1              Hal4D13_SetEndpointConfig(/*D13REG_EPCNFG_FIFO_EN|*/D13REG_EPCNFG_DBLBUF_EN|D13REG_EPCNFG_ISOSZ_16|D13REG
             -_EPCNFG_ISO_EN,EPINDEX4EP09);
 323   1              Hal4D13_SetEndpointConfig(/*D13REG_EPCNFG_FIFO_EN|*/D13REG_EPCNFG_IN_EN|D13REG_EPCNFG_DBLBUF_EN|D13REG_EP
             -CNFG_ISOSZ_16|D13REG_EPCNFG_ISO_EN,EPINDEX4EP0A);
 324   1              Hal4D13_SetEndpointConfig(/*D13REG_EPCNFG_FIFO_EN|*/D13REG_EPCNFG_DBLBUF_EN|D13REG_EPCNFG_ISOSZ_64|D13REG
             -_EPCNFG_ISO_EN,EPINDEX4EP0B);
 325   1              Hal4D13_SetEndpointConfig(/*D13REG_EPCNFG_FIFO_EN|*/D13REG_EPCNFG_IN_EN|D13REG_EPCNFG_DBLBUF_EN|D13REG_EP
             -CNFG_ISOSZ_64|D13REG_EPCNFG_ISO_EN,EPINDEX4EP0C);
 326   1              Hal4D13_SetEndpointConfig(/*D13REG_EPCNFG_FIFO_EN|*/D13REG_EPCNFG_DBLBUF_EN|D13REG_EPCNFG_ISOSZ_64|D13REG
             -_EPCNFG_ISO_EN,EPINDEX4EP0D);
 327   1              Hal4D13_SetEndpointConfig(/*D13REG_EPCNFG_FIFO_EN|*/D13REG_EPCNFG_IN_EN|D13REG_EPCNFG_DBLBUF_EN|D13REG_EP
             -CNFG_ISOSZ_64|D13REG_EPCNFG_ISO_EN,EPINDEX4EP0E);
 328   1              /*DISABLED*/
 329   1      
 330   1              
 331   1              /*Set interrupt configuration*/
 332   1              Hal4D13_SetIntEnable(D13REG_INTSRC_EP0OUT
 333   1                                                      |D13REG_INTSRC_EP0IN
 334   1                                                      |D13REG_INTSRC_EP03
 335   1                                                      |D13REG_INTSRC_EP04
 336   1                                                      |D13REG_INTSRC_EP05
 337   1                                                      |D13REG_INTSRC_EP06
 338   1                                                      |D13REG_INTSRC_SUSPEND
 339   1                                                      |D13REG_INTSRC_RESUME
 340   1                                                      |D13REG_INTSRC_BUSRESET
 341   1                                                      );
 342   1                                                      
 343   1              /*Set Hardware Configuration*/
 344   1              Hal4D13_SetDevConfig(D13REG_DEVCNFG_NOLAZYCLOCK
 345   1                                                      |D13REG_DEVCNFG_CLOCKDIV_120M
 346   1                                                      |D13REG_DEVCNFG_DMARQPOL
 347   1                 // |D13REG_DEVCNFG_EXPULLUP
 348   1                                                      );
 349   1      
C51 COMPILER V7.06   MAINLOOP                                                              08/18/2005 15:30:30 PAGE 7   

 350   1      }
 351          
 352          void reconnect_USB(void)
 353          {
 354   1              disconnect_USB();
 355   1              connect_USB();
 356   1      }
 357          
 358          
 359          
 360          void suspend_change(void)
 361          {
 362   1              printf("SUSPEND CHANGE\n");
 363   1      //      Suspend_Device_Controller();
 364   1      }
 365          
 366          void ML_AcknowledgeSETUP(void)
 367          {
 368   1      
 369   1              if( Hal4D13_IsSetupPktInvalid() || ControlData.Abort)
 370   1              {
 371   2                      return;
 372   2              }
 373   1      
 374   1              Hal4D13_AcknowledgeSETUP();
 375   1              Hal4D13_ClearBuffer(EPINDEX4EP0_CONTROL_OUT);
 376   1      }
 377          
 378          
 379          
 380          void ML_Reserved(void)
 381          {
 382   1              Hal4D13_ClearBuffer(EPINDEX4EP0_CONTROL_OUT);
 383   1      }
 384          
 385          
 386          
 387          unsigned short CHECK_CHIP_ID(void)
 388          {
 389   1              unsigned short CHIP_ID;
 390   1              unsigned char LOW_ID, HIGH_ID;
 391   1      
 392   1              CHIP_ID= Hal4D13_ReadChipID();
 393   1              LOW_ID = (unsigned char)CHIP_ID;
 394   1              HIGH_ID = (unsigned char)(CHIP_ID >> 8) ;
 395   1      
 396   1              switch(HIGH_ID)
 397   1              {
 398   2               case 0x61 : {
 399   3                                              
 400   3                                                       printf("                               CHIP ID =0x%04x\n\n",CHIP_ID);
 401   3                                                      CHIP_ID =0x1161;
 402   3                                                      return CHIP_ID;
 403   3                                                       break;
 404   3                                       }
 405   2      
 406   2               case 0x36 : {
 407   3                                                       printf("                               CHIP ID =0x%04x\n\n",CHIP_ID);
 408   3                                                       CHIP_ID = 0x1362;
 409   3                                                       return CHIP_ID;
 410   3                                                       break;
 411   3                                       }
C51 COMPILER V7.06   MAINLOOP                                                              08/18/2005 15:30:30 PAGE 8   

 412   2      
 413   2               default   : {
 414   3                                       printf("                               UNKNOWN CHIP ID =0x%04x\n\n",CHIP_ID);
 415   3                                       return CHIP_ID;
 416   3                                       break;
 417   3                                       }
 418   2      
 419   2      
 420   2              }
 421   1      
 422   1      
 423   1      }

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

⌨️ 快捷键说明

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