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

📄 sl811.lst

📁 51+sl811读写U盘的源程序+原理图
💻 LST
📖 第 1 页 / 共 5 页
字号:
 705                                  if(EnumUsbDev(1))                               // enumerate USB device, assign USB address = #1
 706                                  {
 707                                          bXXGFlags.bits.SLAVE_ENUMERATED = TRUE; // Set slave USB device enumerated flag
 708                                          //uHub.bPortPresent[1] = 1;     // set device addr #1 present
 709                                          Set_ezDEV(1);                           // inform master of new attach/detach
 710                                  }       
 711                          }
 712                  }
 713          
 714                  //-------------------------------------------------------------------------
 715                  // SL811HS enumerated, proceed accordingly
 716                  //-------------------------------------------------------------------------
 717                  else                                                                    
 718                  {                                                                                                       
 719                          //OUTB &= ~ACTIVE_BLINK;                                // Turn on Active LED, indicate successful slave enum
 720                          if(Slave_Detach())                                      // test for slave device detach ???
 721                                  return;                                         // exit now.
 722                          //----------------------------------------------
 723                          // HUB DEVICE Polling (Addr #1, EndPt #1)               
 724                          //----------------------------------------------
 725                          // Polling of Hub deivce Endpoint #1 for any Port Attachement
 726                          // for onboard HUB device, after enumeration, start to
 727                          // transfer IN token to check for ports attachment
 728                          // wLen = wPayload = 1 byte, always use USB address #1
 729                          // if return is TRUE, a data pkt was ACK, data in HubChange
 730                          // else is a NAK, no data was received 
 731                  } // end of else
 732          
 733                  return ;
 734          }
 735          */
 736          //*****************************************************************************************
C51 COMPILER V7.50   SL811                                                                 11/02/2007 09:31:23 PAGE 13  

 737          // Slave_Detach
 738          //*****************************************************************************************
 739          /*
 740          unsigned char Slave_Detach(void)
 741          {
 742                  if( (SL811Read(IntStatus)&INSERT_REMOVE) || (SL811Read(IntStatus)&USB_RESET) )
 743                  {                                                                                               // Test USB detached?
 744                          bXXGFlags.bits.SLAVE_ENUMERATED = FALSE;                                        // return to un-enumeration
 745                          //uHub.bPortPresent[1] = 0;                                     // Device #1 not present
 746          
 747                          Set_ezDEV(1);                                                           // inform master of slave detach
 748                          SL811Write(IntStatus,INT_CLEAR);                        // clear interrupt status
 749                          return TRUE;                                                            // exit now !!!
 750                  }
 751          
 752                  return FALSE;
 753          }
 754          */
 755          //*****************************************************************************************
 756          // Indicate to EZUSB's endpoint #2 IN of a new device attach/detach
 757          //*****************************************************************************************
 758          /*
 759          void Set_ezDEV(BYTE chg)
 760          {
 761                  //if( (dsPoll) && (!(IN2CS & bmEPBUSY)) )
 762                  //{
 763                  //      IN2BUF[0] = chg;        // Arm endpoint #2, inform EZUSB host of attach/detatch
 764                  //      IN2BC = 1;
 765                  //}
 766          }
 767          */
 768          ///////////////////////////////////////////////////////////////////////////////////////////
 769          void SL811_Init(void)
 770          {       
 771   1              //int i;
 772   1      
 773   1              //for(i=0;i<MAX_DEV;i++)
 774   1              //{
 775   1              //      uHub.bPortPresent[i] = 0;
 776   1              //      uHub.bPortNumber[i] = 0;
 777   1              //}
 778   1      
 779   1              //SL811H_DATA = 0x00;
 780   1              //SL811H_ADDR = 0x00;
 781   1              //pNumPort      = 0x00;                 
 782   1      
 783   1              //bXXGFlags.bits.FULL_SPEED = TRUE;     
 784   1              //HUB_DEVICE = FALSE;
 785   1              bXXGFlags.bits.SLAVE_ONLINE = FALSE;
 786   1              bXXGFlags.bits.SLAVE_FOUND = FALSE;
 787   1              bXXGFlags.bits.SLAVE_REMOVED=FALSE;
 788   1              
 789   1              bXXGFlags.bits.SLAVE_ENUMERATED = FALSE;
 790   1              bXXGFlags.bits.SLAVE_IS_ATTACHED = FALSE;
 791   1              
 792   1              //bXXGFlags.bits.BULK_OUT_DONE = FALSE;
 793   1              //DESC_XFER = FALSE;
 794   1              //DATA_XFER = FALSE;
 795   1              //DATA_XFER_OUT = FALSE;
 796   1              //DATA_INPROCESS = FALSE;
 797   1              //pLS_HUB = FALSE;
 798   1              //IN2BUF[0] = 0;
C51 COMPILER V7.50   SL811                                                                 11/02/2007 09:31:23 PAGE 14  

 799   1      
 800   1              //dsPoll = 1;                               // poll downstream port conections
 801   1      
 802   1              //----------------------------
 803   1              // SL811H + EZUSB I/Os setup
 804   1              //----------------------------
 805   1              //PORTBCFG &= 0xAC;                     // Select i/o function for PB6, PB4, PB1, PB0
 806   1              //OEB      |= 0x43;                     // Set  PB6(Output), PB4(Input), PB1(Output), PB0(Output) 
 807   1              //OUTB     |= 0x43;                     // Default output high
 808   1      
 809   1              //PORTACFG &= 0x0F;                     // Select i/o function for PA7~PA4
 810   1              //OEA      |= 0xF0;                     // Set PA7~PA4(Output)
 811   1              //OUTA     |= 0xF0;                     // Default output high
 812   1      
 813   1              //----------------------------
 814   1              // Debug Monitor I/Os setup
 815   1              //----------------------------
 816   1              //PORTBCFG |= 0x0C;                     // Select alternate function RxD1(PB2) & RxD1(PB3)
 817   1              //PORTCCFG |= 0xC0;                     // Select alternate function nWR(PC6) & nRD(PC7)
 818   1                                                                      // Also needed for SL811H
 819   1              //----------------------------
 820   1              // SL811HST hardware reset
 821   1              //----------------------------
 822   1              //OUTB &= ~nRESET;                      // reset SL811HST
 823   1              //EZUSB_Delay(5);                               // for 5ms
 824   1              //OUTB |= nRESET;                               // clear reset
 825   1              //OUTB &= ~nHOST_SLAVE_MODE;    // set to Host mode
 826   1              ///////////////////////////////////////////////////////
 827   1              
 828   1              SL811Write(cDATASet,0xe0);
 829   1              SL811Write(cSOFcnt,0xae);
 830   1              SL811Write(CtrlReg,0x5);
 831   1                              
 832   1              SL811Write(EP0Status,0x50);
 833   1              SL811Write(EP0Counter,0);
 834   1              SL811Write(EP0Control,0x01);
 835   1                              
 836   1              
 837   1              SL811Write(IntEna,0x20);                // USB-A, Insert/Remove, USB_Resume.
 838   1              SL811Write(IntStatus,INT_CLEAR);        // Clear Interrupt enable status
 839   1      }
 840          
 841          void check_key_LED(void)
 842          {
 843   1              unsigned char intr;
 844   1              //SL811Write(IntStatus,INSERT_REMOVE);
 845   1              intr=SL811Read(IntStatus);
 846   1              if(intr & USB_RESET)
 847   1                         {
 848   2                                      //bXXGFlags.bits.SLAVE_IS_ATTACHED = FALSE;     // Set USB device found flag
 849   2                         if(bXXGFlags.bits.SLAVE_ONLINE ==TRUE)
 850   2                              {bXXGFlags.bits.SLAVE_REMOVED=TRUE;
 851   3                              bXXGFlags.bits.SLAVE_ONLINE =FALSE;}
 852   2                         }
 853   1              else    {
 854   2                                      //bXXGFlags.bits.SLAVE_IS_ATTACHED = TRUE;
 855   2                         if(bXXGFlags.bits.SLAVE_ONLINE == FALSE)
 856   2                              {bXXGFlags.bits.SLAVE_FOUND=TRUE;
 857   3                              bXXGFlags.bits.SLAVE_ONLINE =TRUE;}
 858   2                         }
 859   1              //bXXGFlags.bits.SLAVE_FOUND;
 860   1              
C51 COMPILER V7.50   SL811                                                                 11/02/2007 09:31:23 PAGE 15  

 861   1              //bXXGFlags.bits.SLAVE_REMOVED=0;
 862   1              SL811Write(IntStatus,INT_CLEAR);
 863   1              SL811Write(IntStatus,INSERT_REMOVE);
 864   1                      
 865   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1560    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   8192    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20      27
   IDATA SIZE       =     45    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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