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

📄 subp.lst

📁 SL811HST与51单片机组成usb从机的程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 580   1          
 581   1      //      return;
 582   1      }
 583          
 584          //*****************************************************************************************
 585          // EP0's IN Token Arming (using Set A)
 586          //*****************************************************************************************
 587          void EP0A_IN_Arm( unsigned char buf_adr,  unsigned char len,  unsigned char seq)
 588          {                                                                                       
 589   1          SL811Write(EP0AAddress,buf_adr);                            // ep0 address buffer start adress
 590   1              SL811Write(EP0AXferLen,len);                                    // max length of transfer allowed
 591   1      
 592   1              if(seq)
 593   1                 { SL811Write(EP0AControl,DATA1_IN);          // armed to transmit to host, DATA1
 594   2               P35_LED=0; }
 595   1      
 596   1              else
 597   1                 { SL811Write(EP0AControl,DATA0_IN);                  // armed to transmit to host, DATA0
 598   2               }
 599   1      }
 600          
 601          //*****************************************************************************************
 602          // EP0's SETUP/OUT Token Arming (using Set A)
 603          //*****************************************************************************************
 604          void EP0A_OUT_Arm( unsigned char len)
 605          {
 606   1          //SL811Write(cDATASet,0);
 607   1          SL811Write(EP0AAddress,EP0A_Slave_Buf);     // ep0 address buffer start adress after 64 unsigned char
 608   1          SL811Write(EP0AXferLen,len);                                // max length of transfer allowed
 609   1          SL811Write(EP0AControl,DATA0_OUT);                  // armed to receive from host 03
 610   1      }
 611          
C51 COMPILER V7.20   SUBP                                                                  06/11/2004 19:40:15 PAGE 11  

 612          //*****************************************************************************************
 613          // SL811S variables initialization
 614          //*****************************************************************************************
 615          void sl811s_init(void)
 616          {
 617   1              int i;
 618   1         
 619   1              //----------------------------
 620   1              // Application-Specific
 621   1              //----------------------------
 622   1           P1 |=AUDIO_KEYS    ;                       // Clear Active LED     
 623   1              // P3 |= ACTIVE_LED;          //PORTX_LED;                      // turn off all LEDs
 624   1          P35_LED=1;
 625   1              flags = 0;                                      // clear flag
 626   1              sof_cnt = 0;                            // sof counter equal zero
 627   1              ep1_toggle = 0;                         // ep1 toggle state
 628   1      //      Audio_Keys = 0;                         // clear Audio Control Keys
 629   1      //      Prev_Audio_Keys = 0;            
 630   1      //      Internet_Keys = 0;                      // clear Internet Control Keys
 631   1      //      Prev_Internet_Keys = 0; 
 632   1        
 633   1              //----------------------------
 634   1              // SL811S-Specific
 635   1              //----------------------------
 636   1              BUS_POWERED = 1;                                                // define as a bus powered device
 637   1              Slave_USBaddr = 0;                                              // set to default USB address zero
 638   1              Slave_ConfigVal = 0;                                    // default device config value
 639   1              Slave_Protocol = 0;                                             // HID class default boot protocol
 640   1              Slave_IdleRate = 0;                                             // HID class default idle rate
 641   1              Slave_RemoteWU = 0;                                             // device remote wakeup support
 642   1              Slave_inEPstall = 0;                                    // EP0 ~ EP7's IN
 643   1              Slave_outEPstall = 0;                                   // EP0 ~ EP7's OUT
 644   1         // SL811Write(cSOFcnt,0x00);
 645   1         
 646   1              for(i=0;i<MAXIFCNUM;i++)//8                             // reset alternate setting
 647   1                      Slave_IfcAlt[i] = 0;
 648   1              for(i=0;i<EP0_LEN;i++)                          // clear EP0 Buffer
 649   1                  SL811Write(EP0A_Slave_Buf+i,0);
 650   1              for(i=0;i<EP1_LEN;i++)                                  // clear EP1 Buffer
 651   1                  SL811Write(EP1A_Slave_Buf+i,0);
 652   1          
 653   1          SL811Write(USBAddress,0x00);                        //07h  on power on and reset  usb address set to 00  
 654   1          SL811Write(IntEna,0x63);                            //06h enable SOF, EP0, EP1, USB Reset interrupts 
 655   1          SL811Write(IntStatus,0xff);                         //0dh clear all interrupts
 656   1              SL811Write(CtrlReg,0x21);
 657   1          EP0A_OUT_Arm(EP0_LEN);                                      // ready to receive from host 64=ep0_len 
 658   1      }
 659          
 660          //*****************************************************************************************
 661          // 8051 variables initialization
 662          //*****************************************************************************************
 663          void C51_init(void)
 664          {       
 665   1      //      ISOCTL |= 0x01;                                                 // free up iso endpoints for external data space (1024)
 666   1              //----------------------------
 667   1              // Variable initialization
 668   1              //----------------------------
 669   1              SL811H_DATA = 0x00;             //FF00
 670   1              SL811H_ADDR = 0x00;             //FE00
 671   1      
 672   1              //----------------------------
 673   1              // 8051's I/Os Setup
C51 COMPILER V7.20   SUBP                                                                  06/11/2004 19:40:15 PAGE 12  

 674   1              //----------------------------
 675   1              //PORTACFG = 0x00;                      // Set to output
 676   1              //OEA      = 0xFF;                      // Set PA7~PA0(Output)
 677   1              P0=0xFF;                            // Default output high
 678   1      
 679   1      //      PORTBCFG = 0x20;                        // Select i/o function for PB7~PB0, except PB5-INT#5
 680   1      //      OEB      = 0xDF;                        // Set PB6(0),PB4(I),PB1(O),PB0(O) - PB2(0),PB3(O),PB5(I),PB7(O)
 681   1              P1=0xFF;                            // Default output high
 682   1          P2=0xff;
 683   1      //      PORTCCFG = 0xC0;                        // Select alternate function nWR(PC6) & nRD(PC7), 
 684   1      //      OEC      = 0x3F;                        // Set PC5~PC0 (Output) For LEDs only
 685   1      //      OUTC     = 0x3F;                        // Default output high
 686   1      //      OEC      = 0x38;                        // Set PC5~PC3(Output) For LEDs, PC2~PC0 (Input) For Audio Buttons
 687   1              P3=0xff;                            // Default output high
 688   1      
 689   1      //      EA = 1;                                         // enable 8051 interrupt
 690   1              //EIEX5 = 1;                            // enable INT#5 for toggle switch
 691   1      //      EXIF &= 0x7F;                           // clear INT#5 flag
 692   1              //----------------------------
 693   1              // SL811ST hardware reset
 694   1              //----------------------------
 695   1         // P3 &= ~nRESET;                        // reset SL811HST
 696   1          P34_RES=0;
 697   1              Delay();                                    // for 5ms
 698   1          P34_RES=1;
 699   1      //      P3 |= nRESET;                           // clear reset
 700   1      
 701   1      //      OUTB &= ~nHOST_SLAVE_MODE;      // set to Host mode                   
 702   1      //      P3 |= nHOST_SLAVE_MODE;     // set to Slave mode
 703   1      //    P33_SLA=1;
 704   1          SL811Write(cSOFcnt,0x40);   //LowSpeed(0x40),FullSpeed(0x00)
 705   1          SL811Write(IntEna,0x40);    // enable USB Reset interrupt
 706   1          SL811Write(CtrlReg,0x21);   // enable USB, FullSpeed(01);LowSpeed(21h)
 707   1          SL811Write(IntStatus,0xFF); // clear all interrupts
 708   1          //EP0A_OUT_Arm(EP0_LEN);
 709   1              }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1937    ----
   CONSTANT SIZE    =    193    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     43      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 + -