?? usbcore.lst
字號:
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 + -