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

📄 usbcore.lst

📁 此源代码为双接口法USB键盘鼠标开发源代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 494           
 495           //wMaxPacketSize字段。该端点的最大包长。端点1的最大包长为16字节。
 496           //注意低字节在先。
 497           0x10,
 498           0x00,
 499           
 500           //bInterval字段。端点查询的时间,我们设置为10个帧时间,即10ms。
 501           0x0A,
 502           
 503           /**********************输出端点描述符***********************/
 504           //bLength字段。端点描述符长度为7字节。
 505           0x07,
 506           
 507           //bDescriptorType字段。端点描述符编号为0x05。
 508           0x05,
 509           
 510           //bEndpointAddress字段。端点的地址。我们使用D12的输出端点1。
 511           //D7位表示数据方向,输出端点D7为0。所以输出端点1的地址为0x01。
 512           0x01,
 513           
 514           //bmAttributes字段。D1~D0为端点传输类型选择。
 515           //该端点为中断端点。中断端点的编号为3。其它位保留为0。
 516           0x03,
 517           
 518           //wMaxPacketSize字段。该端点的最大包长。端点1的最大包长为16字节。
 519           //注意低字节在先。
 520           0x10,
 521           0x00,
 522           
 523           //bInterval字段。端点查询的时间,我们设置为10个帧时间,即10ms。
 524           0x0A,
 525          
 526           /*******************第二个接口描述符*********************/
 527           //bLength字段。接口描述符的长度为9字节。
 528           0x09,
 529           
 530           //bDescriptorType字段。接口描述符的编号为0x04。
 531           0x04,
 532           
 533           //bInterfaceNumber字段。该接口的编号,第二个接口,编号为1。
 534           0x01,
 535           
 536           //bAlternateSetting字段。该接口的备用编号,为0。
 537           0x00,
 538           
 539           //bNumEndpoints字段。非0端点的数目。由于USB鼠标需要一个
 540           //中断输入端点,因此该值为1。
 541           0x01,
 542           
 543           //bInterfaceClass字段。该接口所使用的类。USB键盘是HID类,
 544           //HID类的编码为0x03。
 545           0x03,
 546           
 547           //bInterfaceSubClass字段。该接口所使用的子类。在HID1.1协议中,
 548           //只规定了一种子类:支持BIOS引导启动的子类。
 549           //USB键盘、鼠标属于该子类,子类代码为0x01。
 550           0x01,
 551           
C51 COMPILER V7.06   USBCORE                                                               11/16/2008 15:59:36 PAGE 10  

 552           //bInterfaceProtocol字段。如果子类为支持引导启动的子类,
 553           //则协议可选择鼠标和键盘。键盘代码为0x01,鼠标代码为0x02。
 554           0x02,
 555           
 556           //iConfiguration字段。该接口的字符串索引值。这里没有,为0。
 557           0x00,
 558           
 559           /******************HID描述符************************/
 560           //bLength字段。本HID描述符下只有一个下级描述符。所以长度为9字节。
 561           0x09,
 562           
 563           //bDescriptorType字段。HID描述符的编号为0x21。
 564           0x21,
 565           
 566           //bcdHID字段。本协议使用的HID1.1协议。注意低字节在先。
 567           0x10,
 568           0x01,
 569           
 570           //bCountyCode字段。设备适用的国家代码,这里选择为美国,代码0x21。
 571           0x21,
 572           
 573           //bNumDescriptors字段。下级描述符的数目。我们只有一个报告描述符。
 574           0x01,
 575           
 576           //bDescritporType字段。下级描述符的类型,为报告描述符,编号为0x22。
 577           0x22,
 578           
 579           //bDescriptorLength字段。
 580           //下级描述符的长度。下级描述符为鼠标报告描述符。
 581           sizeof(MouseReportDescriptor)&0xFF,
 582           (sizeof(MouseReportDescriptor)>>8)&0xFF,
 583           
 584           /**********************输入端点描述符***********************/
 585           //bLength字段。端点描述符长度为7字节。
 586           0x07,
 587           
 588           //bDescriptorType字段。端点描述符编号为0x05。
 589           0x05,
 590           
 591           //bEndpointAddress字段。端点的地址。我们使用D12的输入端点2。
 592           //D7位表示数据方向,输入端点D7为1。所以输入端点2的地址为0x82。
 593           0x82,
 594           
 595           //bmAttributes字段。D1~D0为端点传输类型选择。
 596           //该端点为中断端点。中断端点的编号为3。其它位保留为0。
 597           0x03,
 598           
 599           //wMaxPacketSize字段。该端点的最大包长。端点2的最大包长为64字节。
 600           //注意低字节在先。
 601           0x40,
 602           0x00,
 603           
 604           //bInterval字段。端点查询的时间,我们设置为10个帧时间,即10ms。
 605           0x0A
 606          };
 607          ////////////////////////配置描述符集合完毕//////////////////////////
 608          
 609          /************************语言ID的定义********************/
 610          code uint8 LanguageId[4]=
 611          {
 612           0x04, //本描述符的长度
 613           0x03, //字符串描述符
C51 COMPILER V7.06   USBCORE                                                               11/16/2008 15:59:36 PAGE 11  

 614           //0x0409为美式英语的ID
 615           0x09,
 616           0x04
 617          };
 618          ////////////////////////语言ID完毕//////////////////////////////////
 619          
 620          /**************************************************/
 621          /*********        本转换结果来自         **********/
 622          /********* Http://computer00.21ic.org    **********/
 623          /*********        作者: 电脑圈圈         **********/
 624          /*********         欢迎大家使用          **********/
 625          /*********    版权所有,盗版请写明出处   **********/
 626          /**************************************************/
 627          
 628          //http://computer00.21ic.org/user1/2198/archives/2007/42769.html
 629          //字符串“电脑圈圈的USB专区 Http://group.ednchina.com/93/”的Unicode编码
 630          //8位小端格式
 631          code uint8 ManufacturerStringDescriptor[82]={
 632          82,         //该描述符的长度为82字节
 633          0x03,       //字符串描述符的类型编码为0x03
 634          0x35, 0x75, //电
 635          0x11, 0x81, //脑
 636          0x08, 0x57, //圈
 637          0x08, 0x57, //圈
 638          0x84, 0x76, //的
 639          0x55, 0x00, //U
 640          0x53, 0x00, //S
 641          0x42, 0x00, //B
 642          0x13, 0x4e, //专
 643          0x3a, 0x53, //区
 644          0x20, 0x00, // 
 645          0x48, 0x00, //H
 646          0x74, 0x00, //t
 647          0x74, 0x00, //t
 648          0x70, 0x00, //p
 649          0x3a, 0x00, //:
 650          0x2f, 0x00, ///
 651          0x2f, 0x00, ///
 652          0x67, 0x00, //g
 653          0x72, 0x00, //r
 654          0x6f, 0x00, //o
 655          0x75, 0x00, //u
 656          0x70, 0x00, //p
 657          0x2e, 0x00, //.
 658          0x65, 0x00, //e
 659          0x64, 0x00, //d
 660          0x6e, 0x00, //n
 661          0x63, 0x00, //c
 662          0x68, 0x00, //h
 663          0x69, 0x00, //i
 664          0x6e, 0x00, //n
 665          0x61, 0x00, //a
 666          0x2e, 0x00, //.
 667          0x63, 0x00, //c
 668          0x6f, 0x00, //o
 669          0x6d, 0x00, //m
 670          0x2f, 0x00, ///
 671          0x39, 0x00, //9
 672          0x33, 0x00, //3
 673          0x2f, 0x00  ///
 674          };
 675          /////////////////////////厂商字符串结束/////////////////////////////
C51 COMPILER V7.06   USBCORE                                                               11/16/2008 15:59:36 PAGE 12  

 676          
 677          //字符串“《圈圈教你玩USB》之带鼠标的USB键盘”的Unicode编码
 678          //8位小端格式
 679          code uint8 ProductStringDescriptor[56]={
 680          56,         //该描述符的长度为56字节
 681          0x03,       //字符串描述符的类型编码为0x03
 682          0x0a, 0x30, //《
 683          0x08, 0x57, //圈
 684          0x08, 0x57, //圈
 685          0x59, 0x65, //教
 686          0x60, 0x4f, //你
 687          0xa9, 0x73, //玩
 688          0x55, 0x00, //U
 689          0x53, 0x00, //S
 690          0x42, 0x00, //B
 691          0x0b, 0x30, //》
 692          0x4b, 0x4e, //之
 693          0x26, 0x5e, //带
 694          0x20, 0x9f, //鼠
 695          0x07, 0x68, //标
 696          0x84, 0x76, //的
 697          0x55, 0x00, //U
 698          0x53, 0x00, //S
 699          0x42, 0x00, //B
 700          0x2e, 0x95, //键
 701          0xd8, 0x76, //盘
 702          0x08, 0xff, //(
 703          0xcc, 0x53, //双
 704          0xa5, 0x63, //接
 705          0xe3, 0x53, //口
 706          0x9e, 0x5b, //实
 707          0xb0, 0x73, //现
 708          0x09, 0xff //)
 709          };
 710          ////////////////////////产品字符串结束////////////////////////////
 711          
 712          //字符串“2008-07-16”的Unicode编码
 713          //8位小端格式
 714          code uint8 SerialNumberStringDescriptor[22]={
 715          22,         //该描述符的长度为22字节
 716          0x03,       //字符串描述符的类型编码为0x03
 717          0x32, 0x00, //2
 718          0x30, 0x00, //0
 719          0x30, 0x00, //0
 720          0x38, 0x00, //8
 721          0x2d, 0x00, //-
 722          0x30, 0x00, //0
 723          0x37, 0x00, //7
 724          0x2d, 0x00, //-
 725          0x31, 0x00, //1
 726          0x36, 0x00  //6
 727          };
 728          //////////////////////产品序列号字符串结束/////////////////////////
 729          
 730          /********************************************************************
 731          函数功能:延时x毫秒函数。
 732          入口参数:x:延时的毫秒数。
 733          返    回:无。
 734          备    注:无。
 735          ********************************************************************/
 736          void DelayXms(uint16 x)                
 737          {
C51 COMPILER V7.06   USBCORE                                                               11/16/2008 15:59:36 PAGE 13  

 738   1       uint16 i;
 739   1       uint16 j;
 740   1       for(i=0;i<x;i++)
 741   1       for(j=0;j<227;j++); //循环语句延时
 742   1      }
 743          ////////////////////////End of function//////////////////////////////
 744          

⌨️ 快捷键说明

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