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

📄 subp.lst

📁 51单片机与SL811HST做从机的音频控制程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 498   5                                      //      if(( BYTE)dReq.wValue == HID_REPORT)                    // end of a report descp, indicate
 499   5                                   // {
 500   5                                              //      enum_done = 1;                                                  // end of complete enumeration
 501   5                                                //    P3 &=   ~ACTIVE_LED;                                    // Turn on Active LED
 502   5                           //P35_LED=0;
 503   5                                      //      }
 504   5                                      }
 505   4                              }
 506   3      
 507   3                      }
 508   2              }
 509   1              //----------------------------------------------------------------------------------------
 510   1              // End of ACK received 
 511   1              //----------------------------------------------------------------------------------------
 512   1      
 513   1              //----------------------------------------------------------------------------------------
 514   1              // If a STALL was sent out by device, it will still interrupt, but
 515   1              // STALL bit in status register does not reflect this when in slave mode.
 516   1              //----------------------------------------------------------------------------------------
 517   1              else if( SL811Read(EP0AControl)&0x20 )                  // check for previous stall sent
 518   1                      EP0A_OUT_Arm(EP0_LEN);                          // get ready for next SETUP token
 519   1                                      
 520   1          
 521   1      //      return;
 522   1      }
 523          
 524          //*****************************************************************************************
 525          // EP0's IN Token Arming (using Set A)
 526          //*****************************************************************************************
 527          void EP0A_IN_Arm( BYTE buf_adr,  BYTE len,  BYTE seq)
 528          {                                                                                       
 529   1          SL811Write(EP0AAddress,buf_adr);                            // ep0 address buffer start adress
 530   1              SL811Write(EP0AXferLen,len);                                    // max length of transfer allowed
 531   1      
 532   1              if(seq)
 533   1                 { SL811Write(EP0AControl,DATA1_IN);          // armed to transmit to host, DATA1
 534   2               P35_LED=0; }
 535   1      
 536   1              else
 537   1                 { SL811Write(EP0AControl,DATA0_IN);                  // armed to transmit to host, DATA0
 538   2               }
 539   1      }
 540          
 541          //*****************************************************************************************
 542          // EP0's SETUP/OUT Token Arming (using Set A)
 543          //*****************************************************************************************
 544          void EP0A_OUT_Arm( BYTE len)
 545          {
 546   1          //SL811Write(cDATASet,0);
 547   1          SL811Write(EP0AAddress,EP0A_Slave_Buf);     // ep0 address buffer start adress after 64 BYTE
 548   1          SL811Write(EP0AXferLen,len);                                // max length of transfer allowed
 549   1          SL811Write(EP0AControl,DATA0_OUT);                  // armed to receive from host 03
 550   1      }
 551          
C51 COMPILER V7.20   SUBP                                                                  07/05/2004 23:23:35 PAGE 10  

 552          //*****************************************************************************************
 553          // SL811S variables initialization
 554          //*****************************************************************************************
 555          void sl811s_init(void)
 556          {
 557   1              int i;
 558   1         
 559   1              //----------------------------
 560   1              // Application-Specific
 561   1              //----------------------------
 562   1           P1 |=AUDIO_KEYS    ;                       // Clear Active LED     
 563   1              // P3 |= ACTIVE_LED;          //PORTX_LED;                      // turn off all LEDs
 564   1          P35_LED=1;
 565   1              flags = 0;                                      // clear flag
 566   1              sof_cnt = 0;                            // sof counter equal zero
 567   1              ep1_toggle = 0;                         // ep1 toggle state
 568   1      //      Audio_Keys = 0;                         // clear Audio Control Keys
 569   1      //      Prev_Audio_Keys = 0;            
 570   1      //      Internet_Keys = 0;                      // clear Internet Control Keys
 571   1      //      Prev_Internet_Keys = 0; 
 572   1        
 573   1              //----------------------------
 574   1              // SL811S-Specific
 575   1              //----------------------------
 576   1              BUS_POWERED = 1;                                                // define as a bus powered device
 577   1              Slave_USBaddr = 0;                                              // set to default USB address zero
 578   1              Slave_ConfigVal = 0;                                    // default device config value
 579   1              Slave_Protocol = 0;                                             // HID class default boot protocol
 580   1              Slave_IdleRate = 0;                                             // HID class default idle rate
 581   1              Slave_RemoteWU = 0;                                             // device remote wakeup support
 582   1              Slave_inEPstall = 0;                                    // EP0 ~ EP7's IN
 583   1              Slave_outEPstall = 0;                                   // EP0 ~ EP7's OUT
 584   1         // SL811Write(cSOFcnt,0x00);
 585   1         
 586   1              for(i=0;i<MAXIFCNUM;i++)//8                             // reset alternate setting
 587   1                      Slave_IfcAlt[i] = 0;
 588   1              for(i=0;i<EP0_LEN;i++)                          // clear EP0 Buffer
 589   1                  SL811Write(EP0A_Slave_Buf+i,0);
 590   1              for(i=0;i<EP1_LEN;i++)                                  // clear EP1 Buffer
 591   1                  SL811Write(EP1A_Slave_Buf+i,0);
 592   1          
 593   1          SL811Write(USBAddress,0x00);                        //07h  on power on and reset  usb address set to 00  
 594   1          SL811Write(IntEna,0x63);                            //06h enable SOF, EP0, EP1, USB Reset interrupts 
 595   1          SL811Write(IntStatus,0xff);                         //0dh clear all interrupts
 596   1              //SL811Write(CtrlReg,0x01);
 597   1          EP0A_OUT_Arm(EP0_LEN);                                      // ready to receive from host 64=ep0_len 
 598   1      }
 599          
 600          //*****************************************************************************************
 601          // 8051 variables initialization
 602          //*****************************************************************************************
 603          void C51_init(void)
 604          {       
 605   1      //      ISOCTL |= 0x01;                                                 // free up iso endpoints for external data space (1024)
 606   1              //----------------------------
 607   1              // Variable initialization
 608   1              //----------------------------
 609   1              SL811H_DATA = 0x00;             //FF00
 610   1              SL811H_ADDR = 0x00;             //FE00
 611   1      
 612   1              //----------------------------
 613   1              // 8051's I/Os Setup
C51 COMPILER V7.20   SUBP                                                                  07/05/2004 23:23:35 PAGE 11  

 614   1              //----------------------------
 615   1              //PORTACFG = 0x00;                      // Set to output
 616   1              //OEA      = 0xFF;                      // Set PA7~PA0(Output)
 617   1              P0=0xFF;                            // Default output high
 618   1      
 619   1      //      PORTBCFG = 0x20;                        // Select i/o function for PB7~PB0, except PB5-INT#5
 620   1      //      OEB      = 0xDF;                        // Set PB6(0),PB4(I),PB1(O),PB0(O) - PB2(0),PB3(O),PB5(I),PB7(O)
 621   1              P1=0xFF;                            // Default output high
 622   1          P2=0xff;
 623   1      //      PORTCCFG = 0xC0;                        // Select alternate function nWR(PC6) & nRD(PC7), 
 624   1      //      OEC      = 0x3F;                        // Set PC5~PC0 (Output) For LEDs only
 625   1      //      OUTC     = 0x3F;                        // Default output high
 626   1      //      OEC      = 0x38;                        // Set PC5~PC3(Output) For LEDs, PC2~PC0 (Input) For Audio Buttons
 627   1              P3=0xff;                            // Default output high
 628   1      
 629   1      //      EA = 1;                                         // enable 8051 interrupt
 630   1              //EIEX5 = 1;                            // enable INT#5 for toggle switch
 631   1      //      EXIF &= 0x7F;                           // clear INT#5 flag
 632   1              //----------------------------
 633   1              // SL811ST hardware reset
 634   1              //----------------------------
 635   1         // P3 &= ~nRESET;                        // reset SL811HST
 636   1          P34_RES=0;
 637   1              Delay();                                    // for 5ms
 638   1          P34_RES=1;
 639   1      //      P3 |= nRESET;                           // clear reset
 640   1      
 641   1      //      OUTB &= ~nHOST_SLAVE_MODE;      // set to Host mode                   
 642   1      //      P3 |= nHOST_SLAVE_MODE;     // set to Slave mode
 643   1      //    P33_SLA=1;
 644   1       //   SL811Write(cSOFcnt,0x00);
 645   1          SL811Write(IntEna,0x40);    // enable USB Reset interrupt
 646   1          SL811Write(CtrlReg,0x21);   // enable USB, FullSpeed(01);LowSpeed(21h)
 647   1          SL811Write(IntStatus,0xFF); // clear all interrupts
 648   1          //EP0A_OUT_Arm(EP0_LEN);
 649   1              }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1587    ----
   CONSTANT SIZE    =    205    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33      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 + -