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

📄 usbcore.lst

📁 USB HID类软固件代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
 256           0x10,
 257           0x01,
 258           
 259           //bCountyCode字段。设备适用的国家代码,这里选择为美国,代码0x21。
 260           0x21,
 261           
 262           //bNumDescriptors字段。下级描述符的数目。我们只有一个报告描述符。
 263           0x01,
 264           
 265           //bDescritporType字段。下级描述符的类型,为报告描述符,编号为0x22。
 266           0x22,
 267           
 268           //bDescriptorLength字段。下级描述符的长度。下级描述符为报告描述符。
 269           sizeof(ReportDescriptor)&0xFF,
 270           (sizeof(ReportDescriptor)>>8)&0xFF,
 271           
 272           /**********************输入端点描述符***********************/
 273           //bLength字段。端点描述符长度为7字节。
 274           0x07,
 275           
 276           //bDescriptorType字段。端点描述符编号为0x05。
 277           0x05,
 278           
 279           //bEndpointAddress字段。端点的地址。我们使用D12的输入端点1。
 280           //D7位表示数据方向,输入端点D7为1。所以输入端点1的地址为0x81。
 281           0x81,
 282           
 283           //bmAttributes字段。D1~D0为端点传输类型选择。
 284           //该端点为中断端点。中断端点的编号为3。其它位保留为0。
 285           0x03,
 286           
 287           //wMaxPacketSize字段。该端点的最大包长。端点1的最大包长为16字节。
 288           //注意低字节在先。
 289           0x10,
 290           0x00,
 291           
 292           //bInterval字段。端点查询的时间,我们设置为10个帧时间,即10ms。
 293           0x0A,
 294           
 295           /**********************输出端点描述符***********************/
 296           //bLength字段。端点描述符长度为7字节。
 297           0x07,
 298           
 299           //bDescriptorType字段。端点描述符编号为0x05。
 300           0x05,
 301           
 302           //bEndpointAddress字段。端点的地址。我们使用D12的输出端点1。
 303           //D7位表示数据方向,输出端点D7为0。所以输出端点1的地址为0x01。
C51 COMPILER V7.06   USBCORE                                                               11/16/2008 15:59:55 PAGE 6   

 304           0x01,
 305           
 306           //bmAttributes字段。D1~D0为端点传输类型选择。
 307           //该端点为中断端点。中断端点的编号为3。其它位保留为0。
 308           0x03,
 309           
 310           //wMaxPacketSize字段。该端点的最大包长。端点1的最大包长为16字节。
 311           //注意低字节在先。
 312           0x10,
 313           0x00,
 314           
 315           //bInterval字段。端点查询的时间,我们设置为10个帧时间,即10ms。
 316           0x0A
 317          };
 318          ////////////////////////配置描述符集合完毕//////////////////////////
 319          
 320          /************************语言ID的定义********************/
 321          code uint8 LanguageId[4]=
 322          {
 323           0x04, //本描述符的长度
 324           0x03, //字符串描述符
 325           //0x0409为美式英语的ID
 326           0x09,
 327           0x04
 328          };
 329          ////////////////////////语言ID完毕//////////////////////////////////
 330          
 331          /**************************************************/
 332          /*********        本转换结果来自         **********/
 333          /********* Http://computer00.21ic.org    **********/
 334          /*********        作者: 电脑圈圈         **********/
 335          /*********         欢迎大家使用          **********/
 336          /*********    版权所有,盗版请写明出处   **********/
 337          /**************************************************/
 338          
 339          //http://computer00.21ic.org/user1/2198/archives/2007/42769.html
 340          //字符串“电脑圈圈的USB专区 Http://group.ednchina.com/93/”的Unicode编码
 341          //8位小端格式
 342          code uint8 ManufacturerStringDescriptor[82]={
 343          82,         //该描述符的长度为82字节
 344          0x03,       //字符串描述符的类型编码为0x03
 345          0x35, 0x75, //电
 346          0x11, 0x81, //脑
 347          0x08, 0x57, //圈
 348          0x08, 0x57, //圈
 349          0x84, 0x76, //的
 350          0x55, 0x00, //U
 351          0x53, 0x00, //S
 352          0x42, 0x00, //B
 353          0x13, 0x4e, //专
 354          0x3a, 0x53, //区
 355          0x20, 0x00, // 
 356          0x48, 0x00, //H
 357          0x74, 0x00, //t
 358          0x74, 0x00, //t
 359          0x70, 0x00, //p
 360          0x3a, 0x00, //:
 361          0x2f, 0x00, ///
 362          0x2f, 0x00, ///
 363          0x67, 0x00, //g
 364          0x72, 0x00, //r
 365          0x6f, 0x00, //o
C51 COMPILER V7.06   USBCORE                                                               11/16/2008 15:59:55 PAGE 7   

 366          0x75, 0x00, //u
 367          0x70, 0x00, //p
 368          0x2e, 0x00, //.
 369          0x65, 0x00, //e
 370          0x64, 0x00, //d
 371          0x6e, 0x00, //n
 372          0x63, 0x00, //c
 373          0x68, 0x00, //h
 374          0x69, 0x00, //i
 375          0x6e, 0x00, //n
 376          0x61, 0x00, //a
 377          0x2e, 0x00, //.
 378          0x63, 0x00, //c
 379          0x6f, 0x00, //o
 380          0x6d, 0x00, //m
 381          0x2f, 0x00, ///
 382          0x39, 0x00, //9
 383          0x33, 0x00, //3
 384          0x2f, 0x00  ///
 385          };
 386          /////////////////////////厂商字符串结束/////////////////////////////
 387          
 388          //字符串“《圈圈教你玩USB》之用户自定义的USB HID设备”的Unicode编码
 389          //8位小端格式
 390          code uint8 ProductStringDescriptor[54]={
 391          54,         //该描述符的长度为54字节
 392          0x03,       //字符串描述符的类型编码为0x03
 393          0x0a, 0x30, //《
 394          0x08, 0x57, //圈
 395          0x08, 0x57, //圈
 396          0x59, 0x65, //教
 397          0x60, 0x4f, //你
 398          0xa9, 0x73, //玩
 399          0x55, 0x00, //U
 400          0x53, 0x00, //S
 401          0x42, 0x00, //B
 402          0x0b, 0x30, //》
 403          0x4b, 0x4e, //之
 404          0x28, 0x75, //用
 405          0x37, 0x62, //户
 406          0xea, 0x81, //自
 407          0x9a, 0x5b, //定
 408          0x49, 0x4e, //义
 409          0x84, 0x76, //的
 410          0x55, 0x00, //U
 411          0x53, 0x00, //S
 412          0x42, 0x00, //B
 413          0x20, 0x00, // 
 414          0x48, 0x00, //H
 415          0x49, 0x00, //I
 416          0x44, 0x00, //D
 417          0xbe, 0x8b, //设
 418          0x07, 0x59  //备
 419          };
 420          ////////////////////////产品字符串结束////////////////////////////
 421          
 422          //字符串“2008-07-19”的Unicode编码
 423          //8位小端格式
 424          code uint8 SerialNumberStringDescriptor[22]={
 425          22,         //该描述符的长度为22字节
 426          0x03,       //字符串描述符的类型编码为0x03
 427          0x32, 0x00, //2
C51 COMPILER V7.06   USBCORE                                                               11/16/2008 15:59:55 PAGE 8   

 428          0x30, 0x00, //0
 429          0x30, 0x00, //0
 430          0x38, 0x00, //8
 431          0x2d, 0x00, //-
 432          0x30, 0x00, //0
 433          0x37, 0x00, //7
 434          0x2d, 0x00, //-
 435          0x31, 0x00, //1
 436          0x39, 0x00  //9
 437          };
 438          //////////////////////产品序列号字符串结束/////////////////////////
 439          
 440          /********************************************************************
 441          函数功能:延时x毫秒函数。
 442          入口参数:x:延时的毫秒数。
 443          返    回:无。
 444          备    注:无。
 445          ********************************************************************/
 446          void DelayXms(uint16 x)                
 447          {
 448   1       uint16 i;
 449   1       uint16 j;
 450   1       for(i=0;i<x;i++)
 451   1       for(j=0;j<227;j++); //循环语句延时
 452   1      }
 453          ////////////////////////End of function//////////////////////////////
 454          
 455          /********************************************************************
 456          函数功能:USB断开连接函数。
 457          入口参数:无。
 458          返    回:无。
 459          备    注:无。
 460          ********************************************************************/
 461          void UsbDisconnect(void)
 462          {
 463   1      #ifdef DEBUG0
 464   1       Prints("断开USB连接。\r\n");
 465   1      #endif
 466   1       D12WriteCommand(D12_SET_MODE);  //写设置模式命令
 467   1       D12WriteByte(0x06); //设置模式的第一字节
 468   1       D12WriteByte(0x47); //设置模式的第二字节
 469   1       DelayXms(1000);  //延迟1秒
 470   1      }
 471          ////////////////////////End of function//////////////////////////////
 472          
 473          /********************************************************************
 474          函数功能:USB连接函数。
 475          入口参数:无。
 476          返    回:无。
 477          备    注:无。
 478          ********************************************************************/
 479          void UsbConnect(void)
 480          {
 481   1      #ifdef DEBUG0
 482   1       Prints("连接USB。\r\n");
 483   1      #endif
 484   1       D12WriteCommand(D12_SET_MODE);  //写设置模式命令
 485   1       D12WriteByte(0x16); //设置模式的第一字节
 486   1       D12WriteByte(0x47); //设置模式的第二字节
 487   1      }
 488          ////////////////////////End of function//////////////////////////////
 489          
C51 COMPILER V7.06   USBCORE                                                               11/16/2008 15:59:55 PAGE 9   

 490          /********************************************************************
 491          函数功能:总线挂起中断处理函数。
 492          入口参数:无。
 493          返    回:无。
 494          备    注:无。
 495          ********************************************************************/
 496          void UsbBusSuspend(void)
 497          {
 498   1      #ifdef DEBUG0
 499   1       Prints("USB总线挂起。\r\n");
 500   1      #endif
 501   1      }
 502          ////////////////////////End of function//////////////////////////////
 503          
 504          /********************************************************************
 505          函数功能:总线复位中断处理函数。
 506          入口参数:无。
 507          返    回:无。
 508          备    注:无。
 509          ********************************************************************/
 510          void UsbBusReset(void)
 511          {
 512   1      #ifdef DEBUG0
 513   1       Prints("USB总线复位。\r\n");
 514   1      #endif
 515   1       Ep1InIsBusy=0; //复位后端点1输入缓冲区空闲。
 516   1      }
 517          ////////////////////////End of function//////////////////////////////
 518          
 519          /********************************************************************

⌨️ 快捷键说明

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