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

📄 usbcore.lst

📁 2010年新增TX-1C程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 246           0x32,
 247           
 248           /*******************接口描述符*********************/
 249           //bLength字段。接口描述符的长度为9字节。
 250           0x09,
 251           
 252           //bDescriptorType字段。接口描述符的编号为0x04。
 253           0x04,
 254           
 255           //bInterfaceNumber字段。该接口的编号,第一个接口,编号为0。
 256           0x00,
 257           
 258           //bAlternateSetting字段。该接口的备用编号,为0。
 259           0x00,
 260           
 261           //bNumEndpoints字段。非0端点的数目。由于USB鼠标只需要一个
 262           //中断输入端点,因此该值为1。
 263           0x01,
 264           
 265           //bInterfaceClass字段。该接口所使用的类。USB鼠标是HID类,
 266           //HID类的编码为0x03。
 267           0x03,
 268           
 269           //bInterfaceSubClass字段。该接口所使用的子类。在HID1.1协议中,
 270           //只规定了一种子类:支持BIOS引导启动的子类。
 271           //USB键盘、鼠标属于该子类,子类代码为0x01。
 272           0x01,
 273           
 274           //bInterfaceProtocol字段。如果子类为支持引导启动的子类,
 275           //则协议可选择鼠标和键盘。键盘代码为0x01,鼠标代码为0x02。
 276           0x02,
 277           
 278           //iConfiguration字段。该接口的字符串索引值。这里没有,为0。
 279           0x00,
 280           
 281           /******************HID描述符************************/
 282           //bLength字段。本HID描述符下只有一个下级描述符。所以长度为9字节。
 283           0x09,
 284           
 285           //bDescriptorType字段。HID描述符的编号为0x21。
 286           0x21,
 287           
 288           //bcdHID字段。本协议使用的HID1.1协议。注意低字节在先。
 289           0x10,
 290           0x01,
 291           
 292           //bCountyCode字段。设备适用的国家代码,这里选择为美国,代码0x21。
 293           0x21,
 294           
 295           //bNumDescriptors字段。下级描述符的数目。我们只有一个报告描述符。
 296           0x01,
 297           
 298           //bDescritporType字段。下级描述符的类型,为报告描述符,编号为0x22。
 299           0x22,
 300           
 301           //bDescriptorLength字段。下级描述符的长度。下级描述符为报告描述符。
 302           sizeof(ReportDescriptor)&0xFF,
 303           (sizeof(ReportDescriptor)>>8)&0xFF,
C51 COMPILER V8.02   USBCORE                                                               06/17/2010 09:52:34 PAGE 6   

 304           
 305           /**********************端点描述符***********************/
 306           //bLength字段。端点描述符长度为7字节。
 307           0x07,
 308           
 309           //bDescriptorType字段。端点描述符编号为0x05。
 310           0x05,
 311           
 312           //bEndpointAddress字段。端点的地址。我们使用D12的输入端点1。
 313           //D7位表示数据方向,输入端点D7为1。所以输入端点1的地址为0x81。
 314           0x81,
 315           
 316           //bmAttributes字段。D1~D0为端点传输类型选择。
 317           //该端点为中断端点。中断端点的编号为3。其它位保留为0。
 318           0x03,
 319           
 320           //wMaxPacketSize字段。该端点的最大包长。端点1的最大包长为16字节。
 321           //注意低字节在先。
 322           0x10,
 323           0x00,
 324           
 325           //bInterval字段。端点查询的时间,我们设置为10个帧时间,即10ms。
 326           0x0A
 327          };
 328          ////////////////////////配置描述符集合完毕//////////////////////////
 329          
 330          /************************语言ID的定义********************/
 331          code uint8 LanguageId[4]=
 332          {
 333           0x04, //本描述符的长度
 334           0x03, //字符串描述符
 335           //0x0409为美式英语的ID
 336           0x09,
 337           0x04
 338          };
 339          ////////////////////////语言ID完毕//////////////////////////////////
 340          
 341          
 342          //http://computer00.21ic.org/user1/2198/archives/2007/42769.html
 343          //字符串“天祥电子” Http:www.txmcu.cn”的Unicode编码
 344          //8位小端格式
 345          code uint8 ManufacturerStringDescriptor[52]={
 346          52,         //该描述符的长度为82字节
 347          0x03,       //字符串描述符的类型编码为0x03
 348          0x1c, 0x20, //“
 349          0x29, 0x59, //天
 350          0x65, 0x79, //祥
 351          0x35, 0x75, //电
 352          0x50, 0x5b, //子
 353          0x1d, 0x20, //”
 354          0x20, 0x00, // 
 355          0x48, 0x00, //H
 356          0x74, 0x00, //t
 357          0x74, 0x00, //t
 358          0x70, 0x00, //p
 359          0x3a, 0x00, //:
 360          0x77, 0x00, //w
 361          0x77, 0x00, //w
 362          0x77, 0x00, //w
 363          0x2e, 0x00, //.
 364          0x74, 0x00, //t
 365          0x78, 0x00, //x
C51 COMPILER V8.02   USBCORE                                                               06/17/2010 09:52:34 PAGE 7   

 366          0x6d, 0x00, //m
 367          0x63, 0x00, //c
 368          0x75, 0x00, //u
 369          0x2e, 0x00, //.
 370          0x63, 0x00, //c
 371          0x6f, 0x00, //o
 372          0x6d, 0x00 //m
 373          };
 374          /////////////////////////厂商字符串结束/////////////////////////////
 375          
 376          //字符串“天祥电子”之USB鼠标”的Unicode编码
 377          //8位小端格式
 378          code uint8 ProductStringDescriptor[26]={
 379          26,         //该描述符的长度为34字节
 380          0x03,       //字符串描述符的类型编码为0x03
 381          0x1c, 0x20, //“
 382          0x29, 0x59, //天
 383          0x65, 0x79, //祥
 384          0x35, 0x75, //电
 385          0x50, 0x5b, //子
 386          0x1d, 0x20, //”
 387          0x4b, 0x4e, //之
 388          0x55, 0x00, //U
 389          0x53, 0x00, //S
 390          0x42, 0x00, //B
 391          0x20, 0x9f, //鼠
 392          0x07, 0x68  //标
 393          };
 394          ////////////////////////产品字符串结束////////////////////////////
 395          
 396          //字符串“2008-07-07”的Unicode编码
 397          //8位小端格式
 398          code uint8 SerialNumberStringDescriptor[22]={
 399          22,         //该描述符的长度为22字节
 400          0x03,       //字符串描述符的类型编码为0x03
 401          0x32, 0x00, //2
 402          0x30, 0x00, //0
 403          0x31, 0x00, //1
 404          0x30, 0x00, //0
 405          0x2d, 0x00, //-
 406          0x30, 0x00, //0
 407          0x36, 0x00, //6
 408          0x2d, 0x00, //-
 409          0x30, 0x00, //0
 410          0x37, 0x00  //7
 411          };
 412          //////////////////////产品序列号字符串结束/////////////////////////
 413          
 414          /********************************************************************
 415          函数功能:延时x毫秒函数。
 416          入口参数:x:延时的毫秒数。
 417          返    回:无。
 418          备    注:无。
 419          ********************************************************************/
 420          void DelayXms(uint16 x)                
 421          {
 422   1       uint16 i;
 423   1       uint16 j;
 424   1       for(i=0;i<x;i++)
 425   1       for(j=0;j<227;j++); //循环语句延时
 426   1      }
 427          ////////////////////////End of function//////////////////////////////
C51 COMPILER V8.02   USBCORE                                                               06/17/2010 09:52:34 PAGE 8   

 428          
 429          /********************************************************************
 430          函数功能:USB断开连接函数。
 431          入口参数:无。
 432          返    回:无。
 433          备    注:无。
 434          ********************************************************************/
 435          void UsbDisconnect(void)
 436          {
 437   1      #ifdef DEBUG0
 438   1       Prints("断开USB连接。\r\n");
 439   1      #endif
 440   1       outportb(D12COMMAND, 0xF3); //写设置模式命令
 441   1       outportb(D12DATA, 0x06);  //设置模式的第二字节
 442   1       outportb(D12DATA, 0x47);  //设置模式的第二字节
 443   1       DelayXms(1000);  //延迟1秒
 444   1      }
 445          ////////////////////////End of function//////////////////////////////
 446          
 447          /********************************************************************
 448          函数功能:USB连接函数。
 449          入口参数:无。
 450          返    回:无。
 451          备    注:无。
 452          ********************************************************************/
 453          void UsbConnect(void)
 454          {
 455   1      #ifdef DEBUG0
 456   1       Prints("连接USB。\r\n");
 457   1      #endif
 458   1      outportb(D12COMMAND, 0xF3);
 459   1       //写设置模式命令
 460   1      outportb(D12DATA, 0x16);
 461   1      outportb(D12DATA, 0x47);
 462   1      }
 463          ////////////////////////End of function//////////////////////////////
 464          
 465          /********************************************************************
 466          函数功能:总线挂起中断处理函数。
 467          入口参数:无。
 468          返    回:无。
 469          备    注:无。
 470          ********************************************************************/
 471          void UsbBusSuspend(void)
 472          {
 473   1      #ifdef DEBUG0
 474   1       Prints("USB总线挂起。\r\n");
 475   1      #endif
 476   1      }
 477          ////////////////////////End of function//////////////////////////////
 478          
 479          /********************************************************************
 480          函数功能:总线复位中断处理函数。
 481          入口参数:无。
 482          返    回:无。
 483          备    注:无。
 484          ********************************************************************/
 485          void UsbBusReset(void)
 486          {
 487   1      #ifdef DEBUG0
 488   1       Prints("USB总线复位。\r\n");
 489   1      #endif
C51 COMPILER V8.02   USBCORE                                                               06/17/2010 09:52:34 PAGE 9   

 490   1       Ep1InIsBusy=0; //复位后端点1输入缓冲区空闲。
 491   1      }
 492          ////////////////////////End of function//////////////////////////////
 493          
 494          /********************************************************************
 495          函数功能:根据pData和SendLength将数据发送到端点0的函数。
 496          入口参数:无。
 497          返    回:无。
 498          备    注:无。
 499          ********************************************************************/

⌨️ 快捷键说明

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