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

📄 subp.lst

📁 51单片机与SL811HST做从机的PS3手柄程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 561          //*****************************************************************************************
 562          void EP0A_IN_Arm( unsigned char buf_adr,  unsigned char len,  unsigned char seq)
 563          {                                                                                       
 564   1          SL811Write(EP0AAddress,buf_adr);                            // ep0 address buffer start adress
 565   1              SL811Write(EP0AXferLen,len);                                    // max length of transfer allowed
 566   1      
 567   1              if(seq)
 568   1                 { SL811Write(EP0AControl,DATA1_IN);          // armed to transmit to host, DATA1
 569   2               P35_LED=0; }
 570   1      
 571   1              else
 572   1                 { SL811Write(EP0AControl,DATA0_IN);                  // armed to transmit to host, DATA0
 573   2               }
 574   1      }
 575          
 576          //*****************************************************************************************
 577          // EP0's SETUP/OUT Token Arming (using Set A)
 578          //*****************************************************************************************
 579          void EP0A_OUT_Arm( unsigned char len)
 580          {
 581   1          //SL811Write(cDATASet,0);
 582   1          SL811Write(EP0AAddress,EP0A_Slave_Buf);     // ep0 address buffer start adress after 64 unsigned char
 583   1          SL811Write(EP0AXferLen,len);                                // max length of transfer allowed
 584   1          SL811Write(EP0AControl,DATA0_OUT);                  // armed to receive from host 03
 585   1      }
 586          
 587          //*****************************************************************************************
 588          // SL811S variables initialization
 589          //*****************************************************************************************
 590          void sl811s_init(void)
 591          {
 592   1              int i;
 593   1         
 594   1              //----------------------------
 595   1              // Application-Specific
 596   1              //----------------------------
 597   1           P1 |=AUDIO_KEYS    ;                       // Clear Active LED     
 598   1              // P3 |= ACTIVE_LED;          //PORTX_LED;                      // turn off all LEDs
 599   1          P35_LED=1;
 600   1              flags = 0;                                      // clear flag
 601   1              sof_cnt = 0;                            // sof counter equal zero
 602   1              ep1_toggle = 0;                         // ep1 toggle state
 603   1      //      Audio_Keys = 0;                         // clear Audio Control Keys
 604   1      //      Prev_Audio_Keys = 0;            
 605   1      //      Internet_Keys = 0;                      // clear Internet Control Keys
 606   1      //      Prev_Internet_Keys = 0; 
 607   1        
 608   1              //----------------------------
 609   1              // SL811S-Specific
 610   1              //----------------------------
 611   1              BUS_POWERED = 1;                                                // define as a bus powered device
 612   1              Slave_USBaddr = 0;                                              // set to default USB address zero
C51 COMPILER V7.20   SUBP                                                                  01/30/2007 16:37:15 PAGE 11  

 613   1              Slave_ConfigVal = 0;                                    // default device config value
 614   1              Slave_Protocol = 0;                                             // HID class default boot protocol
 615   1              Slave_IdleRate = 0;                                             // HID class default idle rate
 616   1              Slave_RemoteWU = 0;                                             // device remote wakeup support
 617   1              Slave_inEPstall = 0;                                    // EP0 ~ EP7's IN
 618   1              Slave_outEPstall = 0;                                   // EP0 ~ EP7's OUT
 619   1         // SL811Write(cSOFcnt,0x00);
 620   1         
 621   1              for(i=0;i<MAXIFCNUM;i++)//8                             // reset alternate setting
 622   1                      Slave_IfcAlt[i] = 0;
 623   1              for(i=0;i<EP0_LEN;i++)                          // clear EP0 Buffer
 624   1                  SL811Write(EP0A_Slave_Buf+i,0);
 625   1              for(i=0;i<EP1_LEN;i++)                                  // clear EP1 Buffer
 626   1                  SL811Write(EP1A_Slave_Buf+i,0);
 627   1          
 628   1          SL811Write(USBAddress,0x00);                        //07h  on power on and reset  usb address set to 00  
 629   1          SL811Write(IntEna,0x63);                            //06h enable SOF, EP0, EP1, USB Reset interrupts 
 630   1          SL811Write(IntStatus,0xff);                         //0dh clear all interrupts
 631   1              //SL811Write(CtrlReg,0x01);
 632   1          EP0A_OUT_Arm(EP0_LEN);                                      // ready to receive from host 64=ep0_len 
 633   1      }
 634          
 635          //*****************************************************************************************
 636          // 8051 variables initialization
 637          //*****************************************************************************************
 638          void C51_init(void)
 639          {       
 640   1      //      ISOCTL |= 0x01;                                                 // free up iso endpoints for external data space (1024)
 641   1              //----------------------------
 642   1              // Variable initialization
 643   1              //----------------------------
 644   1              SL811H_DATA = 0x00;             //FF00
 645   1              SL811H_ADDR = 0x00;             //FE00
 646   1      
 647   1              //----------------------------
 648   1              // 8051's I/Os Setup
 649   1              //----------------------------
 650   1              //PORTACFG = 0x00;                      // Set to output
 651   1              //OEA      = 0xFF;                      // Set PA7~PA0(Output)
 652   1              P0=0xFF;                            // Default output high
 653   1      
 654   1      //      PORTBCFG = 0x20;                        // Select i/o function for PB7~PB0, except PB5-INT#5
 655   1      //      OEB      = 0xDF;                        // Set PB6(0),PB4(I),PB1(O),PB0(O) - PB2(0),PB3(O),PB5(I),PB7(O)
 656   1              P1=0xFF;                            // Default output high
 657   1          P2=0xff;
 658   1      //      PORTCCFG = 0xC0;                        // Select alternate function nWR(PC6) & nRD(PC7), 
 659   1      //      OEC      = 0x3F;                        // Set PC5~PC0 (Output) For LEDs only
 660   1      //      OUTC     = 0x3F;                        // Default output high
 661   1      //      OEC      = 0x38;                        // Set PC5~PC3(Output) For LEDs, PC2~PC0 (Input) For Audio Buttons
 662   1              P3=0xff;                            // Default output high
 663   1      
 664   1      //      EA = 1;                                         // enable 8051 interrupt
 665   1              //EIEX5 = 1;                            // enable INT#5 for toggle switch
 666   1      //      EXIF &= 0x7F;                           // clear INT#5 flag
 667   1              //----------------------------
 668   1              // SL811ST hardware reset
 669   1              //----------------------------
 670   1         // P3 &= ~nRESET;                        // reset SL811HST
 671   1          P34_RES=0;
 672   1              Delay();                                    // for 5ms
 673   1          P34_RES=1;
 674   1      //      P3 |= nRESET;                           // clear reset
C51 COMPILER V7.20   SUBP                                                                  01/30/2007 16:37:15 PAGE 12  

 675   1      
 676   1      //      OUTB &= ~nHOST_SLAVE_MODE;      // set to Host mode                   
 677   1      //      P3 |= nHOST_SLAVE_MODE;     // set to Slave mode
 678   1      //    P33_SLA=1;
 679   1       //   SL811Write(cSOFcnt,0x00);
 680   1          SL811Write(IntEna,0x40);    // enable USB Reset interrupt
 681   1          SL811Write(CtrlReg,0x01);   // enable USB, FullSpeed(01);LowSpeed(21h)
 682   1          SL811Write(IntStatus,0xFF); // clear all interrupts
 683   1          //EP0A_OUT_Arm(EP0_LEN);
 684   1              }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1906    ----
   CONSTANT SIZE    =    279    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     84      13
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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