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

📄 subp.lst

📁 51单片机与SL811HST做从机的鼠标程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 600   3                      }
 601   2              }
 602   1              //----------------------------------------------------------------------------------------
 603   1              // End of ACK received 
 604   1              //----------------------------------------------------------------------------------------
 605   1      
 606   1              //----------------------------------------------------------------------------------------
 607   1              // If a STALL was sent out by device, it will still interrupt, but
 608   1              // STALL bit in status register does not reflect this when in slave mode.
 609   1              //----------------------------------------------------------------------------------------
 610   1              else if( SL811Read(EP0AControl)&0x20 )                  // check for previous stall sent
 611   1                      EP0A_OUT_Arm(EP0_LEN);                          // get ready for next SETUP token
C51 COMPILER V7.20   SUBP                                                                  05/16/2004 23:08:35 PAGE 11  

 612   1                                      
 613   1          
 614   1      //      return;
 615   1      }
 616          
 617          //*****************************************************************************************
 618          // EP0's IN Token Arming (using Set A)
 619          //*****************************************************************************************
 620          void EP0A_IN_Arm( unsigned char buf_adr,  unsigned char len,  unsigned char seq)
 621          {                                                                                       
 622   1          SL811Write(EP0AAddress,buf_adr);                            // ep0 address buffer start adress
 623   1              SL811Write(EP0AXferLen,len);                                    // max length of transfer allowed
 624   1      
 625   1              if(seq)
 626   1                 { SL811Write(EP0AControl,DATA1_IN);          // armed to transmit to host, DATA1
 627   2               P35_LED=0; }
 628   1      
 629   1              else
 630   1                 { SL811Write(EP0AControl,DATA0_IN);                  // armed to transmit to host, DATA0
 631   2               }
 632   1      }
 633          
 634          //*****************************************************************************************
 635          // EP0's SETUP/OUT Token Arming (using Set A)
 636          //*****************************************************************************************
 637          void EP0A_OUT_Arm( unsigned char len)
 638          {
 639   1          //SL811Write(cDATASet,0);
 640   1          SL811Write(EP0AAddress,EP0A_Slave_Buf);     // ep0 address buffer start adress after 64 unsigned char
 641   1          SL811Write(EP0AXferLen,len);                                // max length of transfer allowed
 642   1          SL811Write(EP0AControl,DATA0_OUT);                  // armed to receive from host 03
 643   1      }
 644          
 645          //*****************************************************************************************
 646          // SL811S variables initialization
 647          //*****************************************************************************************
 648          void sl811s_init(void)
 649          {
 650   1              int i;
 651   1         
 652   1              //----------------------------
 653   1              // Application-Specific
 654   1              //----------------------------
 655   1           P1 |=AUDIO_KEYS    ;                       // Clear Active LED     
 656   1              // P3 |= ACTIVE_LED;          //PORTX_LED;                      // turn off all LEDs
 657   1          P35_LED=1;
 658   1              flags = 0;                                      // clear flag
 659   1              sof_cnt = 0;                            // sof counter equal zero
 660   1              ep1_toggle = 0;                         // ep1 toggle state
 661   1      //      Audio_Keys = 0;                         // clear Audio Control Keys
 662   1      //      Prev_Audio_Keys = 0;            
 663   1      //      Internet_Keys = 0;                      // clear Internet Control Keys
 664   1      //      Prev_Internet_Keys = 0; 
 665   1        
 666   1              //----------------------------
 667   1              // SL811S-Specific
 668   1              //----------------------------
 669   1              BUS_POWERED = 1;                                                // define as a bus powered device
 670   1              Slave_USBaddr = 0;                                              // set to default USB address zero
 671   1              Slave_ConfigVal = 0;                                    // default device config value
 672   1              Slave_Protocol = 0;                                             // HID class default boot protocol
 673   1              Slave_IdleRate = 0;                                             // HID class default idle rate
C51 COMPILER V7.20   SUBP                                                                  05/16/2004 23:08:35 PAGE 12  

 674   1              Slave_RemoteWU = 0;                                             // device remote wakeup support
 675   1              Slave_inEPstall = 0;                                    // EP0 ~ EP7's IN
 676   1              Slave_outEPstall = 0;                                   // EP0 ~ EP7's OUT
 677   1         // SL811Write(cSOFcnt,0x00);
 678   1         
 679   1              for(i=0;i<MAXIFCNUM;i++)//8                             // reset alternate setting
 680   1                      Slave_IfcAlt[i] = 0;
 681   1              for(i=0;i<EP0_LEN;i++)                          // clear EP0 Buffer
 682   1                  SL811Write(EP0A_Slave_Buf+i,0);
 683   1              for(i=0;i<EP1_LEN;i++)                                  // clear EP1 Buffer
 684   1                  SL811Write(EP1A_Slave_Buf+i,0);
 685   1          
 686   1          SL811Write(USBAddress,0x00);                        //07h  on power on and reset  usb address set to 00  
 687   1          SL811Write(IntEna,0x63);                            //06h enable SOF, EP0, EP1, USB Reset interrupts 
 688   1          SL811Write(IntStatus,0xff);                         //0dh clear all interrupts
 689   1              SL811Write(CtrlReg,0x21);
 690   1          EP0A_OUT_Arm(EP0_LEN);                                      // ready to receive from host 64=ep0_len 
 691   1      }
 692          
 693          //*****************************************************************************************
 694          // 8051 variables initialization
 695          //*****************************************************************************************
 696          void C51_init(void)
 697          {       
 698   1      
 699   1              SL811H_DATA = 0x00;             //FF00
 700   1              SL811H_ADDR = 0x00;             //FE00
 701   1      
 702   1              P0=0xFF;                            // Default output high
 703   1      
 704   1              P1=0xFF;                            // Default output high
 705   1          P2=0xff;
 706   1              P3=0xff;                            // Default output high
 707   1        //  TMOD=0x01;
 708   1        // TL0=0xd0;
 709   1        //  TH0=0x07;
 710   1      //      ET0=1;
 711   1       //   TR0=1;    
 712   1      //      EA = 1;                                         // enable 8051 interrupt
 713   1      
 714   1              //----------------------------
 715   1              // SL811ST hardware reset
 716   1              //----------------------------
 717   1         // P3 &= ~nRESET;                        // reset SL811HST
 718   1          P34_RES=0;
 719   1              Delay();                                    // for 5ms
 720   1          P34_RES=1;
 721   1      //      P3 |= nRESET;                           // clear reset
 722   1      
 723   1      //      OUTB &= ~nHOST_SLAVE_MODE;      // set to Host mode                   
 724   1      //      P3 |= nHOST_SLAVE_MODE;     // set to Slave mode
 725   1      //    P33_SLA=1;
 726   1          SL811Write(cSOFcnt,0x40);   //LowSpeed(0x40),FullSpeed(0x00)
 727   1          SL811Write(IntEna,0x40);    // enable USB Reset interrupt
 728   1          SL811Write(CtrlReg,0x21);   // enable USB, FullSpeed(01);LowSpeed(21h)
 729   1          SL811Write(IntStatus,0xFF); // clear all interrupts
 730   1          //EP0A_OUT_Arm(EP0_LEN);
 731   1              }
 732                


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.20   SUBP                                                                  05/16/2004 23:08:35 PAGE 13  

   CODE SIZE        =   1841    ----
   CONSTANT SIZE    =    255    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     41      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 + -