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

📄 usbcore.lst

📁 USB多媒体键盘鼠标原程序代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 492           //wMaxPacketSize字段。该端点的最大包长。端点1的最大包长为16字节。
 493           //注意低字节在先。
 494           0x10,
 495           0x00,
 496           
 497           //bInterval字段。端点查询的时间,我们设置为10个帧时间,即10ms。
 498           0x0A,
 499           
 500           /**********************输出端点描述符***********************/
 501           //bLength字段。端点描述符长度为7字节。
 502           0x07,
 503           
 504           //bDescriptorType字段。端点描述符编号为0x05。
 505           0x05,
 506           
 507           //bEndpointAddress字段。端点的地址。我们使用D12的输出端点1。
 508           //D7位表示数据方向,输出端点D7为0。所以输出端点1的地址为0x01。
 509           0x01,
 510           
 511           //bmAttributes字段。D1~D0为端点传输类型选择。
 512           //该端点为中断端点。中断端点的编号为3。其它位保留为0。
 513           0x03,
 514           
 515           //wMaxPacketSize字段。该端点的最大包长。端点1的最大包长为16字节。
 516           //注意低字节在先。
 517           0x10,
 518           0x00,
 519           
 520           //bInterval字段。端点查询的时间,我们设置为10个帧时间,即10ms。
 521           0x0A
 522          };
 523          ////////////////////////配置描述符集合完毕//////////////////////////
 524          
 525          /************************语言ID的定义********************/
 526          code uint8 LanguageId[4]=
 527          {
 528           0x04, //本描述符的长度
 529           0x03, //字符串描述符
 530           //0x0409为美式英语的ID
 531           0x09,
 532           0x04
 533          };
 534          ////////////////////////语言ID完毕//////////////////////////////////
 535          
 536          /**************************************************/
 537          /*********        本转换结果来自         **********/
 538          /********* Http://computer00.21ic.org    **********/
 539          /*********        作者: 电脑圈圈         **********/
 540          /*********         欢迎大家使用          **********/
 541          /*********    版权所有,盗版请写明出处   **********/
 542          /**************************************************/
 543          
 544          //http://computer00.21ic.org/user1/2198/archives/2007/42769.html
 545          //字符串“电脑圈圈的USB专区 Http://group.ednchina.com/93/”的Unicode编码
 546          //8位小端格式
 547          code uint8 ManufacturerStringDescriptor[82]={
 548          82,         //该描述符的长度为82字节
 549          0x03,       //字符串描述符的类型编码为0x03
 550          0x35, 0x75, //电
 551          0x11, 0x81, //脑
C51 COMPILER V7.06   USBCORE                                                               11/16/2008 15:59:49 PAGE 10  

 552          0x08, 0x57, //圈
 553          0x08, 0x57, //圈
 554          0x84, 0x76, //的
 555          0x55, 0x00, //U
 556          0x53, 0x00, //S
 557          0x42, 0x00, //B
 558          0x13, 0x4e, //专
 559          0x3a, 0x53, //区
 560          0x20, 0x00, // 
 561          0x48, 0x00, //H
 562          0x74, 0x00, //t
 563          0x74, 0x00, //t
 564          0x70, 0x00, //p
 565          0x3a, 0x00, //:
 566          0x2f, 0x00, ///
 567          0x2f, 0x00, ///
 568          0x67, 0x00, //g
 569          0x72, 0x00, //r
 570          0x6f, 0x00, //o
 571          0x75, 0x00, //u
 572          0x70, 0x00, //p
 573          0x2e, 0x00, //.
 574          0x65, 0x00, //e
 575          0x64, 0x00, //d
 576          0x6e, 0x00, //n
 577          0x63, 0x00, //c
 578          0x68, 0x00, //h
 579          0x69, 0x00, //i
 580          0x6e, 0x00, //n
 581          0x61, 0x00, //a
 582          0x2e, 0x00, //.
 583          0x63, 0x00, //c
 584          0x6f, 0x00, //o
 585          0x6d, 0x00, //m
 586          0x2f, 0x00, ///
 587          0x39, 0x00, //9
 588          0x33, 0x00, //3
 589          0x2f, 0x00  ///
 590          };
 591          /////////////////////////厂商字符串结束/////////////////////////////
 592          
 593          //字符串“《圈圈教你玩USB》之多媒体USB键盘”的Unicode编码
 594          //8位小端格式
 595          code uint8 ProductStringDescriptor[40]={
 596          40,         //该描述符的长度为40字节
 597          0x03,       //字符串描述符的类型编码为0x03
 598          0x0a, 0x30, //《
 599          0x08, 0x57, //圈
 600          0x08, 0x57, //圈
 601          0x59, 0x65, //教
 602          0x60, 0x4f, //你
 603          0xa9, 0x73, //玩
 604          0x55, 0x00, //U
 605          0x53, 0x00, //S
 606          0x42, 0x00, //B
 607          0x0b, 0x30, //》
 608          0x4b, 0x4e, //之
 609          0x1a, 0x59, //多
 610          0x92, 0x5a, //媒
 611          0x53, 0x4f, //体
 612          0x55, 0x00, //U
 613          0x53, 0x00, //S
C51 COMPILER V7.06   USBCORE                                                               11/16/2008 15:59:49 PAGE 11  

 614          0x42, 0x00, //B
 615          0x2e, 0x95, //键
 616          0xd8, 0x76  //盘
 617          };
 618          ////////////////////////产品字符串结束////////////////////////////
 619          
 620          //字符串“2008-07-17”的Unicode编码
 621          //8位小端格式
 622          code uint8 SerialNumberStringDescriptor[22]={
 623          22,         //该描述符的长度为22字节
 624          0x03,       //字符串描述符的类型编码为0x03
 625          0x32, 0x00, //2
 626          0x30, 0x00, //0
 627          0x30, 0x00, //0
 628          0x38, 0x00, //8
 629          0x2d, 0x00, //-
 630          0x30, 0x00, //0
 631          0x37, 0x00, //7
 632          0x2d, 0x00, //-
 633          0x31, 0x00, //1
 634          0x37, 0x00  //7
 635          };
 636          //////////////////////产品序列号字符串结束/////////////////////////
 637          
 638          /********************************************************************
 639          函数功能:延时x毫秒函数。
 640          入口参数:x:延时的毫秒数。
 641          返    回:无。
 642          备    注:无。
 643          ********************************************************************/
 644          void DelayXms(uint16 x)                
 645          {
 646   1       uint16 i;
 647   1       uint16 j;
 648   1       for(i=0;i<x;i++)
 649   1       for(j=0;j<227;j++); //循环语句延时
 650   1      }
 651          ////////////////////////End of function//////////////////////////////
 652          
 653          /********************************************************************
 654          函数功能:USB断开连接函数。
 655          入口参数:无。
 656          返    回:无。
 657          备    注:无。
 658          ********************************************************************/
 659          void UsbDisconnect(void)
 660          {
 661   1      #ifdef DEBUG0
 662   1       Prints("断开USB连接。\r\n");
 663   1      #endif
 664   1       D12WriteCommand(D12_SET_MODE);  //写设置模式命令
 665   1       D12WriteByte(0x06); //设置模式的第一字节
 666   1       D12WriteByte(0x47); //设置模式的第二字节
 667   1       DelayXms(1000);  //延迟1秒
 668   1      }
 669          ////////////////////////End of function//////////////////////////////
 670          
 671          /********************************************************************
 672          函数功能:USB连接函数。
 673          入口参数:无。
 674          返    回:无。
 675          备    注:无。
C51 COMPILER V7.06   USBCORE                                                               11/16/2008 15:59:49 PAGE 12  

 676          ********************************************************************/
 677          void UsbConnect(void)
 678          {
 679   1      #ifdef DEBUG0
 680   1       Prints("连接USB。\r\n");
 681   1      #endif
 682   1       D12WriteCommand(D12_SET_MODE);  //写设置模式命令
 683   1       D12WriteByte(0x16); //设置模式的第一字节
 684   1       D12WriteByte(0x47); //设置模式的第二字节
 685   1      }
 686          ////////////////////////End of function//////////////////////////////
 687          
 688          /********************************************************************
 689          函数功能:总线挂起中断处理函数。
 690          入口参数:无。
 691          返    回:无。
 692          备    注:无。
 693          ********************************************************************/
 694          void UsbBusSuspend(void)
 695          {
 696   1      #ifdef DEBUG0
 697   1       Prints("USB总线挂起。\r\n");
 698   1      #endif
 699   1      }
 700          ////////////////////////End of function//////////////////////////////
 701          
 702          /********************************************************************
 703          函数功能:总线复位中断处理函数。
 704          入口参数:无。
 705          返    回:无。
 706          备    注:无。
 707          ********************************************************************/
 708          void UsbBusReset(void)
 709          {
 710   1      #ifdef DEBUG0
 711   1       Prints("USB总线复位。\r\n");
 712   1      #endif
 713   1       Ep1InIsBusy=0; //复位后端点1输入缓冲区空闲。
 714   1      }
 715          ////////////////////////End of function//////////////////////////////
 716          
 717          /********************************************************************
 718          函数功能:根据pData和SendLength将数据发送到端点0的函数。
 719          入口参数:无。
 720          返    回:无。
 721          备    注:无。
 722          ********************************************************************/
 723          void UsbEp0SendData(void)
 724          {
 725   1       //将数据写到端点中去准备发送
 726   1       //写之前要先判断一下需要发送的数据是否比端点0
 727   1       //最大长度大,如果超过端点大小,则一次只能发送
 728   1       //最大包长的数据。端点0的最大包长在DeviceDescriptor[7]
 729   1       if(SendLength>DeviceDescriptor[7])
 730   1       {
 731   2        //按最大包长度发送
 732   2        D12WriteEndpointBuffer(1,DeviceDescriptor[7],pSendData);
 733   2        //发送后剩余字节数减少最大包长
 734   2        SendLength-=DeviceDescriptor[7];
 735   2        //发送一次后指针位置要调整
 736   2        pSendData+= DeviceDescriptor[7];
 737   2       }
C51 COMPILER V7.06   USBCORE                                                               11/16/2008 15:59:49 PAGE 13  

 738   1       else
 739   1       {
 740   2        if(SendLength!=0)
 741   2        {

⌨️ 快捷键说明

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