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

📄 usbcore.lst

📁 自定义的USB设备单片机固件程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 247           0x00,
 248           
 249           //bInterval字段。端点查询的时间,这里对批量端点无效。
 250           0x00,
 251           
 252           /*************** 批量输出端点2描述符 ******************/
 253           //bLength字段。端点描述符长度为7字节。
 254           0x07,
 255           
 256           //bDescriptorType字段。端点描述符编号为0x05。
 257           0x05,
 258           
 259           //bEndpointAddress字段。端点的地址。我们使用D12的输出端点2。
 260           //D7位表示数据方向,输出端点D7为0。所以输出端点2的地址为0x02。
 261           0x02,
 262           
 263           //bmAttributes字段。D1~D0为端点传输类型选择。
 264           //该端点为批量端点,批量端点的编号为0x02。其它位保留为0。
 265           0x02,
 266           
 267           //wMaxPacketSize字段。该端点的最大包长。端点2的最大包长为64字节。
 268           //注意低字节在先。
 269           0x40,
 270           0x00,
 271           
 272           //bInterval字段。端点查询的时间,这里对批量端点无效。
 273           0x00
 274          };
 275          ////////////////////////配置描述符集合完毕//////////////////////////
 276          
 277          /************************语言ID的定义********************/
 278          code uint8 LanguageId[4]=
 279          {
 280           0x04, //本描述符的长度
 281           0x03, //字符串描述符
 282           //0x0409为美式英语的ID
 283           0x09,
 284           0x04
 285          };
 286          ////////////////////////语言ID完毕//////////////////////////////////
 287          
 288          /**************************************************/
 289          /*********        本转换结果来自         **********/
 290          /********* Http://computer00.21ic.org    **********/
 291          /*********        作者: 电脑圈圈         **********/
 292          /*********         欢迎大家使用          **********/
 293          /*********    版权所有,盗版请写明出处   **********/
 294          /**************************************************/
 295          
 296          //http://computer00.21ic.org/user1/2198/archives/2007/42769.html
 297          //字符串“电脑圈圈的USB专区 Http://group.ednchina.com/93/”的Unicode编码
 298          //8位小端格式
 299          code uint8 ManufacturerStringDescriptor[82]={
 300          82,         //该描述符的长度为82字节
 301          0x03,       //字符串描述符的类型编码为0x03
 302          0x35, 0x75, //电
 303          0x11, 0x81, //脑
C51 COMPILER V8.05a   USBCORE                                                              04/21/2009 19:44:21 PAGE 6   

 304          0x08, 0x57, //圈
 305          0x08, 0x57, //圈
 306          0x84, 0x76, //的
 307          0x55, 0x00, //U
 308          0x53, 0x00, //S
 309          0x42, 0x00, //B
 310          0x13, 0x4e, //专
 311          0x3a, 0x53, //区
 312          0x20, 0x00, // 
 313          0x48, 0x00, //H
 314          0x74, 0x00, //t
 315          0x74, 0x00, //t
 316          0x70, 0x00, //p
 317          0x3a, 0x00, //:
 318          0x2f, 0x00, ///
 319          0x2f, 0x00, ///
 320          0x67, 0x00, //g
 321          0x72, 0x00, //r
 322          0x6f, 0x00, //o
 323          0x75, 0x00, //u
 324          0x70, 0x00, //p
 325          0x2e, 0x00, //.
 326          0x65, 0x00, //e
 327          0x64, 0x00, //d
 328          0x6e, 0x00, //n
 329          0x63, 0x00, //c
 330          0x68, 0x00, //h
 331          0x69, 0x00, //i
 332          0x6e, 0x00, //n
 333          0x61, 0x00, //a
 334          0x2e, 0x00, //.
 335          0x63, 0x00, //c
 336          0x6f, 0x00, //o
 337          0x6d, 0x00, //m
 338          0x2f, 0x00, ///
 339          0x39, 0x00, //9
 340          0x33, 0x00, //3
 341          0x2f, 0x00  ///
 342          };
 343          /////////////////////////厂商字符串结束/////////////////////////////
 344          
 345          //字符串“《圈圈教你玩USB》之用户自定义的USB设备”的Unicode编码
 346          //8位小端格式
 347          code uint8 ProductStringDescriptor[46]={
 348          46,         //该描述符的长度为46字节
 349          0x03,       //字符串描述符的类型编码为0x03
 350          0x0a, 0x30, //《
 351          0x08, 0x57, //圈
 352          0x08, 0x57, //圈
 353          0x59, 0x65, //教
 354          0x60, 0x4f, //你
 355          0xa9, 0x73, //玩
 356          0x55, 0x00, //U
 357          0x53, 0x00, //S
 358          0x42, 0x00, //B
 359          0x0b, 0x30, //》
 360          0x4b, 0x4e, //之
 361          0x28, 0x75, //用
 362          0x37, 0x62, //户
 363          0xea, 0x81, //自
 364          0x9a, 0x5b, //定
 365          0x49, 0x4e, //义
C51 COMPILER V8.05a   USBCORE                                                              04/21/2009 19:44:21 PAGE 7   

 366          0x84, 0x76, //的
 367          0x55, 0x00, //U
 368          0x53, 0x00, //S
 369          0x42, 0x00, //B
 370          0xbe, 0x8b, //设
 371          0x07, 0x59, //备
 372          
 373          };
 374          ////////////////////////产品字符串结束////////////////////////////
 375          
 376          //字符串“2008-08-22”的Unicode编码
 377          //8位小端格式
 378          code uint8 SerialNumberStringDescriptor[22]={
 379          22,         //该描述符的长度为22字节
 380          0x03,       //字符串描述符的类型编码为0x03
 381          0x32, 0x00, //2
 382          0x30, 0x00, //0
 383          0x30, 0x00, //0
 384          0x38, 0x00, //8
 385          0x2d, 0x00, //-
 386          0x30, 0x00, //0
 387          0x38, 0x00, //8
 388          0x2d, 0x00, //-
 389          0x32, 0x00, //2
 390          0x32, 0x00  //2
 391          };
 392          //////////////////////产品序列号字符串结束/////////////////////////
 393          
 394          /********************************************************************
 395          函数功能:延时x毫秒函数。
 396          入口参数:x:延时的毫秒数。
 397          返    回:无。
 398          备    注:无。
 399          ********************************************************************/
 400          void DelayXms(uint16 x)                
 401          {
 402   1       uint16 i;
 403   1       uint16 j;
 404   1       for(i=0;i<x;i++)
 405   1       for(j=0;j<227;j++); //循环语句延时
 406   1      }
 407          ////////////////////////End of function//////////////////////////////
 408          
 409          /********************************************************************
 410          函数功能:USB断开连接函数。
 411          入口参数:无。
 412          返    回:无。
 413          备    注:无。
 414          ********************************************************************/
 415          void UsbDisconnect(void)
 416          {
 417   1      #ifdef DEBUG0
 418   1       Prints("断开USB连接。\r\n");
 419   1      #endif
 420   1       D12WriteCommand(D12_SET_MODE);  //写设置模式命令
 421   1       D12WriteByte(0x06); //设置模式的第一字节
 422   1       D12WriteByte(0x47); //设置模式的第二字节
 423   1       DelayXms(1000);  //延迟1秒
 424   1      }
 425          ////////////////////////End of function//////////////////////////////
 426          
 427          /********************************************************************
C51 COMPILER V8.05a   USBCORE                                                              04/21/2009 19:44:21 PAGE 8   

 428          函数功能:USB连接函数。
 429          入口参数:无。
 430          返    回:无。
 431          备    注:无。
 432          ********************************************************************/
 433          void UsbConnect(void)
 434          {
 435   1      #ifdef DEBUG0
 436   1       Prints("连接USB。\r\n");
 437   1      #endif
 438   1       D12WriteCommand(D12_SET_MODE);  //写设置模式命令
 439   1       D12WriteByte(0x16); //设置模式的第一字节
 440   1       D12WriteByte(0x47); //设置模式的第二字节
 441   1      }
 442          ////////////////////////End of function//////////////////////////////
 443          
 444          /********************************************************************
 445          函数功能:总线挂起中断处理函数。
 446          入口参数:无。
 447          返    回:无。
 448          备    注:无。
 449          ********************************************************************/
 450          void UsbBusSuspend(void)
 451          {
 452   1      #ifdef DEBUG0
 453   1       Prints("USB总线挂起。\r\n");
 454   1      #endif
 455   1      }
 456          ////////////////////////End of function//////////////////////////////
 457          
 458          /********************************************************************
 459          函数功能:总线复位中断处理函数。
 460          入口参数:无。
 461          返    回:无。
 462          备    注:无。
 463          ********************************************************************/
 464          void UsbBusReset(void)
 465          {
 466   1      #ifdef DEBUG0
 467   1       Prints("USB总线复位。\r\n");
 468   1      #endif
 469   1       Ep1InIsBusy=0; //复位后端点1输入缓冲区空闲。
 470   1       Ep2InIsBusy=0; //复位后端点2输入缓冲区空闲。
 471   1       UartBufferOutputPoint=0;
 472   1       UartBufferInputPoint=0;
 473   1       UartByteCount=0;
 474   1       UsbEp2ByteCount=0;
 475   1       UsbEp2BufferOutputPoint=0;
 476   1      }
 477          ////////////////////////End of function//////////////////////////////
 478          
 479          /********************************************************************
 480          函数功能:根据pData和SendLength将数据发送到端点0的函数。
 481          入口参数:无。
 482          返    回:无。
 483          备    注:无。
 484          ********************************************************************/
 485          void UsbEp0SendData(void)
 486          {
 487   1       //将数据写到端点中去准备发送
 488   1       //写之前要先判断一下需要发送的数据是否比端点0
 489   1       //最大长度大,如果超过端点大小,则一次只能发送
C51 COMPILER V8.05a   USBCORE                                                              04/21/2009 19:44:21 PAGE 9   

 490   1       //最大包长的数据。端点0的最大包长在DeviceDescriptor[7]
 491   1       if(SendLength>DeviceDescriptor[7])
 492   1       {
 493   2        //按最大包长度发送
 494   2        D12WriteEndpointBuffer(1,DeviceDescriptor[7],pSendData);
 495   2        //发送后剩余字节数减少最大包长
 496   2        SendLength-=DeviceDescriptor[7];
 497   2        //发送一次后指针位置要调整
 498   2        pSendData+= DeviceDescriptor[7];
 499   2       }
 500   1       else
 501   1       {

⌨️ 快捷键说明

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