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

📄 fusb200.lst

📁 faraday_USB芯片的固件
💻 LST
📖 第 1 页 / 共 2 页
字号:
 185   6                                                      
 186   6                                                      //Interface description
 187   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x09;//InterfaceDscr.bLength;
 188   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x04;//InterfaceDscr.bDescriptorType;
 189   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x00;//InterfaceDscr.bInterfaceNumber
 190   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x00;//InterfaceDscr.bAlternateSetting
 191   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x02;//InterfaceDscr.bNumEndPoints;
 192   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x08;//InterfaceDscr.bInterfaceClass; /*Storage class*/
 193   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x01;//InterfaceDscr.bInterfaceSubClass;/*Flash device*/
 194   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x00;//InterfaceDscr.bInterfaceProtocol;/*Control/Bulk/Interrupt protocol
             - with command*/
 195   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x00;//InterfaceDscr.iInterface;
 196   6              
 197   6                                                      //EndPoint1 description(IN) 
 198   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x07;//InterfaceDscr.bLength;
 199   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x05;//InterfaceDscr.bDescriptorType;
 200   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x81;//InterfaceDscr.bEndPointAddress;
 201   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x02;//InterfaceDscr.bmAttributes;
 202   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x00;//GET_LOW(InterfaceDscr.wMaxPacketSize);
 203   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x02;//GET_HIGH(InterfaceDscr.wMaxPacketSize);                                               
 204   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x01;//InterfaceDscr.bIntervel;                                      
 205   6                                                      //EndPoint2 description(OUT)
 206   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x07;//InterfaceDscr.bLength;
 207   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x05;//InterfaceDscr.bDescriptorType;
 208   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x02;//InterfaceDscr.bEndPointAddress;
 209   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x02;//InterfaceDscr.bmAttributes;
 210   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x00;//GET_LOW(InterfaceDscr.wMaxPacketSize);
 211   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x02;//GET_HIGH(InterfaceDscr.wMaxPacketSize);                                               
 212   6                                                      XBYTE[FUSB_REG_EP0_DATA] = 0x01;//InterfaceDscr.bIntervel;
 213   6              
 214   6                                                      ///Interface AlternateSetting
 215   6                                                      //XBYTE[FUSB_REG_EP0_DATA] = 0x09;//InterfaceDscr.bLength;
 216   6                                                      //XBYTE[FUSB_REG_EP0_DATA] = 0x04;//InterfaceDscr.bDescriptorType;
 217   6                                                      //XBYTE[FUSB_REG_EP0_DATA] = 0x01;//InterfaceDscr.bInterfaceNumber
 218   6                                                      //XBYTE[FUSB_REG_EP0_DATA] = 0x00;//InterfaceDscr.bAlternateSetting
 219   6                                                      //XBYTE[FUSB_REG_EP0_DATA] = 0x02;//InterfaceDscr.bNumEndPoints;
 220   6                                                      //XBYTE[FUSB_REG_EP0_DATA] = 0x08;//InterfaceDscr.bInterfaceClass; /*Storage class*/
 221   6                                                      //XBYTE[FUSB_REG_EP0_DATA] = 0x01;//InterfaceDscr.bInterfaceSubClass;/*Flash device*/
 222   6                                                      //XBYTE[FUSB_REG_EP0_DATA] = 0x00;//InterfaceDscr.bInterfaceProtocol;/*Control/Bulk/Interrupt protoc
             -ol with command*/
 223   6                                                      //XBYTE[FUSB_REG_EP0_DATA] = 0x00;//InterfaceDscr.iInterface;
 224   6                                              
 225   6                                                      //DeviceTypeDefinition descriptions
 226   6                                                              
 227   6                                                      //VendorDefinition description
 228   6                                                      
 229   6                                                      //CX writen done
 230   6                                                      XBYTE[FUSB_REG_CX_CSR] |= 0x01;
 231   6                                              }                                       
 232   5                                      }
 233   4                              }
 234   3                              else if(dev_req.wValue == 0x0300)//Type--string descriptor
 235   3                              {
 236   4                                      ;       
 237   4                              }
C51 COMPILER V7.50   FUSB200                                                               11/21/2008 15:02:59 PAGE 5   

 238   3                      }
 239   2                      //SetAddress request
 240   2                      else if(dev_req.bmRequestType == 0x00 && dev_req.bRequest == 0x05)
 241   2                      {
 242   3                              if(dev_req.wValue != 0x0000)         
 243   3                              {       
 244   4                                      //Clear EndPoint0 FIFO
 245   4                                      XBYTE[FUSB_REG_CX_CSR] |= 0x08;
 246   4                                      
 247   4                                      //Write new address to the device address register
 248   4                                      XBYTE[FUSB_REG_DEVICE_ADDR] = (meg[2] & 0x7f);
 249   4                                      
 250   4                                      //CX writen done
 251   4                                      XBYTE[FUSB_REG_CX_CSR] |= 0x01;
 252   4                              }               
 253   3                      }
 254   2                      //SetConfiguration request
 255   2                      else if(dev_req.bmRequestType == 0x00 && dev_req.bRequest == 0x09)
 256   2                      {
 257   3                              if(dev_req.wValue == 0x01)
 258   3                              {
 259   4                                      //CX writen done
 260   4                                      XBYTE[FUSB_REG_CX_CSR] |= 0x01;
 261   4                                      //Delay 30us
 262   4                                              delay();
 263   4                                              delay();
 264   4                                              XBYTE[FUSB_REG_INT_MSKB5]       = 0xfd; //Unmask FIFO1 interrupt for EP1 IN
 265   4                      XBYTE[FUSB_REG_INT_MSKB1]       = 0x3f; //Unmask FIFO3 OUT&Short Packetinterrupt for EP2 OUT
 266   4                      XBYTE[FUSB_REG_INT_MSKB7]       = 0x3d; //Unmask RX0, TX0 and RST INT
 267   4                              }
 268   3                      }
 269   2              }
 270   1      }
 271          
 272          
 273          //EndPoint1 interrupt service(IN)
 274          void ep1_int_service(void)
 275          {
 276   1              //Mask interrupt of FIFO0
 277   1              XBYTE[FUSB_REG_INT_MSKB5] = 0x01;
 278   1      
 279   1              P0_0 = 0;
 280   1              P0_0 = 1;
 281   1          
 282   1              //while(1)
 283   1              //{
 284   1              //      if(IE0)
 285   1              //      {
 286   1              //              //FIFO1 Written done
 287   1              //              XBYTE[FUSB_REG_FIFO1_INS] |= 0x08;
 288   1              //              break;
 289   1              //      }
 290   1              //}
 291   1      
 292   1      //      //TX0BYTE_IEP1
 293   1      //      XBYTE[FUSB_REG_IEP1_XPSZ_H] |= 0x80;
 294   1              
 295   1              //XBYTE[FUSB_REG_INT_SOURCE7] = 0x40;   
 296   1              //FIFO1 Written done
 297   1              //XBYTE[FUSB_REG_FIFO1_INS] |= 0x08;
 298   1              
 299   1              //Unmask interrupt of FIFO0
C51 COMPILER V7.50   FUSB200                                                               11/21/2008 15:02:59 PAGE 6   

 300   1              XBYTE[FUSB_REG_INT_MSKB5] &= 0xfe;
 301   1              
 302   1      }
 303          
 304          //EndPoint2 interrupt service(OUT)
 305          void ep2_int_service(void)
 306          {
 307   1              u8              i;
 308   1              u8              rdata[16];
 309   1              u16             byte_cnt;
 310   1              
 311   1              //Mask interrupt of FIFO2
 312   1              XBYTE[FUSB_REG_INT_MSKB1]       = 0xff;
 313   1              
 314   1              //Short packet interrupt
 315   1              if(XBYTE[FUSB_REG_INT_SOURCE2] & 0x20)
 316   1              {
 317   2                      //Read byte counter
 318   2                      byte_cnt = BYTE_TO_WORD((XBYTE[FUSB_REG_FIFO0_INS] & 0x07), (XBYTE[FUSB_REG_FIFO0_BCNT]));//??
 319   2              }
 320   1              //Normal packet interrupt
 321   1              else
 322   1              {
 323   2                      //Max packet size
 324   2                      byte_cnt = FUSB_EP2_SIZE;
 325   2              }
 326   1              
 327   1              //Read data from FIFO
 328   1              //rx_data();
 329   1              for(i=0;i<byte_cnt;i++)
 330   1              {
 331   2                      rdata[i] = XBYTE[FUSB_REG_FIFO2_DP];
 332   2              }
 333   1              
 334   1              //For testing OUT data
 335   1              if(rdata[0] == 0x55)
 336   1              {
 337   2                      byte_cnt = 0x00;
 338   2                      i = 0xaa;       
 339   2              }
 340   1              
 341   1              //Clear the byte counter
 342   1              XBYTE[FUSB_REG_FIFO0_INS] &= 0xf8;//??
 343   1              XBYTE[FUSB_REG_FIFO0_BCNT] = 0x00;//??
 344   1              //Unmask interrupt of FIFO2
 345   1              XBYTE[FUSB_REG_INT_MSKB1] = 0xcf;
 346   1      }
 347          
 348          //void EX0_int(void) interrupt 0
 349          //{
 350          //      //TX0BYTE_IEP1
 351          //      XBYTE[FUSB_REG_IEP1_XPSZ_H] |= 0x80;
 352          //}
 353          //void rx_data()
 354          //{
 355          //      ;       
 356          //}
 357          //
 358          //void tx_data()
 359          //{
 360          //      ;       
 361          //}
C51 COMPILER V7.50   FUSB200                                                               11/21/2008 15:02:59 PAGE 7   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    635    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8      24
   IDATA SIZE       =   ----    ----
   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 + -