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

📄 sl811s.lst

📁 keyword:usb host sl8
💻 LST
📖 第 1 页 / 共 5 页
字号:
 582   1                  SL811Write(EP0AControl,DATA1_IN);                   // armed to transmit to host, DATA1
 583   1              else
 584   1                  SL811Write(EP0AControl,DATA0_IN);                   // armed to transmit to host, DATA0
 585   1      
 586   1      }
 587          
 588          //*****************************************************************************************
 589          // EP0's SETUP/OUT Token Arming (using Set A)
 590          //*****************************************************************************************
 591          void EP0A_OUT_Arm(BYTE len)
 592          {
 593   1          SL811Write(EP0AAddress,EP0A_Slave_Buf);     // ep0 address buffer start adress
 594   1          SL811Write(EP0AXferLen,len);                                // max length of transfer allowed
 595   1          SL811Write(EP0AControl,DATA0_OUT);                  // armed to receive from host
 596   1      }
 597          
 598          //*****************************************************************************************
 599          // SL811S variables initialization
 600          //*****************************************************************************************
 601          void sl811s_init(void)
 602          {
 603   1              int i;
 604   1      
 605   1              //----------------------------
 606   1              // Application-Specific
 607   1              //----------------------------
 608   1              OUTB |= ACTIVE_LED;                     // Clear Active LED     
 609   1              OUTC |= PORTX_LED;                      // turn off all LEDs
 610   1      
 611   1              flags = 0;                                      // clear flag
 612   1              sof_cnt = 0;                            // sof counter equal zero
 613   1              ep1_toggle = 0;                         // ep1 toggle state
C51 COMPILER V7.09   SL811S                                                                10/04/2004 17:01:23 PAGE 11  

 614   1              Audio_Keys = 0;                         // clear Audio Control Keys
 615   1              Prev_Audio_Keys = 0;            
 616   1              Internet_Keys = 0;                      // clear Internet Control Keys
 617   1              Prev_Internet_Keys = 0; 
 618   1      
 619   1              //----------------------------
 620   1              // SL811S-Specific
 621   1              //----------------------------
 622   1              BUS_POWERED = 1;                                                // define as a bus powered device
 623   1              Slave_USBaddr = 0;                                              // set to default USB address zero
 624   1              Slave_ConfigVal = 0;                                    // default device config value
 625   1              Slave_Protocol = 0;                                             // HID class default boot protocol
 626   1              Slave_IdleRate = 0;                                             // HID class default idle rate
 627   1              Slave_RemoteWU = 0;                                             // device remote wakeup support
 628   1              Slave_inEPstall = 0;                                    // EP0 ~ EP7's IN
 629   1              Slave_outEPstall = 0;                                   // EP0 ~ EP7's OUT
 630   1              for(i=0;i<MAXIFCNUM;i++)                                // reset alternate setting
 631   1                      Slave_IfcAlt[i] = 0;
 632   1              for(i=0;i<EP0_LEN;i++)                                  // clear EP0 Buffer
 633   1                  SL811Write(EP0A_Slave_Buf+i,0);
 634   1              for(i=0;i<EP1_LEN;i++)                                  // clear EP1 Buffer
 635   1                  SL811Write(EP1A_Slave_Buf+i,0);
 636   1      
 637   1          SL811Write(USBAddress,0x00);                        // usb address
 638   1          SL811Write(IntEna,0x63);                            // enable SOF, EP0, EP1, USB Reset interrupts
 639   1          SL811Write(IntStatus,0xFF);                         // clear all interrupts
 640   1              EP0A_OUT_Arm(EP0_LEN);                                  // ready to receive from host
 641   1      }
 642          
 643          //*****************************************************************************************
 644          // 8051 variables initialization
 645          //*****************************************************************************************
 646          void uC8051_init(void)
 647          {       
 648   1              ISOCTL |= 0x01;                                                 // free up iso endpoints for external data space (1024)
 649   1              
 650   1              //----------------------------
 651   1              // Variable initialization
 652   1              //----------------------------
 653   1              SL811H_DATA = 0x00;
 654   1              SL811H_ADDR = 0x00;
 655   1      
 656   1              //----------------------------
 657   1              // 8051's I/Os Setup
 658   1              //----------------------------
 659   1              PORTACFG = 0x00;                        // Set to output
 660   1              OEA      = 0xFF;                        // Set PA7~PA0(Output)
 661   1              OUTA     = 0xFF;                        // Default output high
 662   1      
 663   1              PORTBCFG = 0x20;                        // Select i/o function for PB7~PB0, except PB5-INT#5
 664   1              OEB      = 0xDF;                        // Set PB6(O),PB4(I),PB1(O),PB0(O) - PB2(0),PB3(O),PB5(I),PB7(O)
 665   1              OUTB     = 0xDF;                        // Default output high
 666   1      
 667   1              PORTCCFG = 0xC0;                        // Select alternate function nWR(PC6) & nRD(PC7), 
 668   1      //      OEC      = 0x3F;                        // Set PC5~PC0 (Output) For LEDs only
 669   1      //      OUTC     = 0x3F;                        // Default output high
 670   1              OEC      = 0x38;                        // Set PC5~PC3(Output) For LEDs, PC2~PC0 (Input) For Audio Buttons
 671   1              OUTC     = 0x38;                        // Default output high
 672   1      
 673   1              EA = 1;                                         // enable 8051 interrupt
 674   1              EIEX5 = 1;                                      // enable INT#5 for toggle switch
 675   1              EXIF &= 0x7F;                           // clear INT#5 flag
C51 COMPILER V7.09   SL811S                                                                10/04/2004 17:01:23 PAGE 12  

 676   1      
 677   1      
 678   1              //----------------------------
 679   1              // SL811ST hardware reset
 680   1              //----------------------------
 681   1              OUTB &= ~nRESET;                        // reset SL811HST
 682   1              EZUSB_Delay(5);                         // for 5ms
 683   1              OUTB |= nRESET;                         // clear reset
 684   1      
 685   1      //      OUTB &= ~nHOST_SLAVE_MODE;      // set to Host mode
 686   1              OUTB |= nHOST_SLAVE_MODE;       // set to Slave mode
 687   1      
 688   1          SL811Write(IntEna,0x40);    // enable USB Reset interrupt
 689   1          SL811Write(CtrlReg,0x01);   // enable USB, FullSpeed
 690   1          SL811Write(IntStatus,0xFF); // clear all interrupts
 691   1      }
 692          
 693          //*****************************************************************************************
 694          // Main loop start here
 695          //*****************************************************************************************
 696          void main(void)
 697          {
 698   1              BYTE    int_status;
 699   1      
 700   1              uC8051_init();                                                                  // initialized 8051 uC
 701   1      
 702   1              while(TRUE)                                                                             // Main Loop
 703   1              {
 704   2                      //--------------------------------------------
 705   2                      // USB-Specific Tasks
 706   2                      //--------------------------------------------
 707   2                      int_status = SL811Read(IntStatus);                              
 708   2                      if(int_status & USB_RESET_DONE)                         // wait for USB Reset interrupt
 709   2                              sl811s_init();          
 710   2                      else if(int_status & EP0_DONE)                          // wait for EP0 interrupt
 711   2                              ep0_isr();
 712   2                      else if(int_status & EP1_DONE)                          // wait for EP1 interrupt
 713   2                              ep1_isr();
 714   2                      else if(int_status & SOF_DONE)                          // wait for SOF interrupt
 715   2                              sof_isr();
 716   2      
 717   2                      //--------------------------------------------
 718   2                      // Application-Specific Tasks (every 5msec)
 719   2                      //--------------------------------------------
 720   2                      if(timeout && enum_done)                                        // do some task now
 721   2                      {       
 722   3                              audio_key_scan();                                               // Audio Keys Scan
 723   3                              internet_key_scan();                                    // Internet Keys Scan
 724   3                              timeout = 0;                                                    
 725   3                    

⌨️ 快捷键说明

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