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

📄 usb_kbd_enum.lst

📁 at89c5132,at89c51snd1的usb与keyboard驱动程序。
💻 LST
📖 第 1 页 / 共 3 页
字号:
 585   1        Usb_set_DIR();
 586   1        Usb_set_stall_request();
 587   1        while (!Usb_stall_sent());
 588   1        Usb_clear_stall_request();
 589   1        Usb_clear_stalled();
 590   1        Usb_clear_DIR();
 591   1      }
 592          
 593          
 594          /*F**************************************************************************
 595          * NAME: usb_get_status
 596          *----------------------------------------------------------------------------
 597          * PARAMS:
 598          *
 599          * return:
 600          *----------------------------------------------------------------------------
 601          * PURPOSE: 
 602          * This function manages the GET_STATUS request.
 603          *----------------------------------------------------------------------------
 604          * EXAMPLE:
 605          *----------------------------------------------------------------------------
 606          * NOTE:
 607          *----------------------------------------------------------------------------
 608          * REQUIREMENTS: 
 609          *****************************************************************************/
 610          void usb_get_status (void)
 611          {
 612   1      Uchar wIndex;
C51 COMPILER V7.06   USB_KBD_ENUM                                                          01/29/2008 10:59:25 PAGE 11  

 613   1      
 614   1        ACC = Usb_read_byte();                    /* dummy read */
 615   1        ACC = Usb_read_byte();                    /* dummy read */
 616   1        wIndex = Usb_read_byte();
 617   1        Usb_clear_rx_setup();
 618   1        Usb_set_DIR();
 619   1        switch(bmRequestType) 
 620   1        {
 621   2          case REQUEST_DEVICE_STATUS:    Usb_write_byte(SELF_POWERED);  break;
 622   2          
 623   2          case REQUEST_INTERFACE_STATUS: Usb_write_byte(0x00);          break;
 624   2          
 625   2          case REQUEST_ENDPOINT_STATUS:  wIndex = wIndex & MSK_EP_DIR;
 626   2                                         Usb_write_byte(endpoint_status[wIndex]);
 627   2                                         break;
 628   2        }
 629   1        Usb_write_byte(0x00);
 630   1      
 631   1        Usb_set_tx_ready();
 632   1        while ((!(Usb_tx_complete())) || (Usb_setup_received()));
 633   1        Usb_clear_tx_complete();
 634   1        while ((!(Usb_rx_complete())) || (Usb_setup_received()));
 635   1        Usb_clear_rx();
 636   1        Usb_clear_DIR();
 637   1      }
 638          
 639          
 640          /*F**************************************************************************
 641          * NAME: usb_set_feature
 642          *----------------------------------------------------------------------------
 643          * PARAMS:
 644          *
 645          * return:
 646          *----------------------------------------------------------------------------
 647          * PURPOSE: 
 648          * This function manages the SET_FEATURE request.
 649          *----------------------------------------------------------------------------
 650          * EXAMPLE:
 651          *----------------------------------------------------------------------------
 652          * NOTE:
 653          *----------------------------------------------------------------------------
 654          * REQUIREMENTS: 
 655          *****************************************************************************/
 656          void usb_set_feature (void)
 657          {
 658   1        if (bmRequestType == ZERO_TYPE)
 659   1        {
 660   2          Usb_clear_rx_setup();
 661   2          Usb_set_stall_request();
 662   2          while (!(Usb_stall_sent()));
 663   2          Usb_clear_stall_request();
 664   2        }
 665   1        if (bmRequestType == INTERFACE_TYPE)
 666   1        {
 667   2          Usb_clear_rx_setup();
 668   2          Usb_set_stall_request();
 669   2          while (!(Usb_stall_sent()));
 670   2          Usb_clear_stall_request();
 671   2        }
 672   1        if (bmRequestType == ENDPOINT_TYPE)
 673   1        {
 674   2          if (Usb_read_byte() == 0x00)
C51 COMPILER V7.06   USB_KBD_ENUM                                                          01/29/2008 10:59:25 PAGE 12  

 675   2          {
 676   3            ACC = Usb_read_byte();                /* dummy read */
 677   3            switch (Usb_read_byte())              /* check wIndex */
 678   3            {
 679   4              case ENDPOINT_1:
 680   4              {
 681   5                Usb_select_ep(EP_IN);
 682   5                Usb_set_stall_request();
 683   5                Usb_select_ep(EP_CONTROL);
 684   5                endpoint_status[EP_IN] = 0x01;
 685   5                Usb_clear_rx_setup();
 686   5                Usb_set_tx_ready();
 687   5                while (!(Usb_tx_complete()));
 688   5                Usb_clear_tx_complete();
 689   5                break;
 690   5              }
 691   4              default:
 692   4              {
 693   5                Usb_clear_rx_setup();
 694   5                Usb_set_stall_request();
 695   5                while (!(Usb_stall_sent()));
 696   5                Usb_clear_stall_request();
 697   5                Usb_clear_stalled();
 698   5                break;
 699   5              }
 700   4            }
 701   3          }
 702   2        }
 703   1      }
 704          
 705          
 706          /*F**************************************************************************
 707          * NAME: usb_clear_feature
 708          *----------------------------------------------------------------------------
 709          * PARAMS:
 710          *
 711          * return:
 712          *----------------------------------------------------------------------------
 713          * PURPOSE: 
 714          * This function manages the SET_FEATURE request.
 715          *----------------------------------------------------------------------------
 716          * EXAMPLE:
 717          *----------------------------------------------------------------------------
 718          * NOTE:
 719          *----------------------------------------------------------------------------
 720          * REQUIREMENTS: 
 721          *****************************************************************************/
 722          void usb_clear_feature (void)
 723          {
 724   1        if (bmRequestType == ZERO_TYPE)
 725   1        {
 726   2          Usb_clear_rx_setup();
 727   2          Usb_set_stall_request();
 728   2          while (!(Usb_stall_sent()));
 729   2          Usb_clear_stall_request();
 730   2        }
 731   1        if (bmRequestType == INTERFACE_TYPE)
 732   1        {
 733   2          Usb_clear_rx_setup();
 734   2          Usb_set_stall_request();
 735   2          while (!(Usb_stall_sent()));
 736   2          Usb_clear_stall_request();
C51 COMPILER V7.06   USB_KBD_ENUM                                                          01/29/2008 10:59:25 PAGE 13  

 737   2        }
 738   1        if (bmRequestType == ENDPOINT_TYPE)
 739   1        {
 740   2          if (Usb_read_byte() == 0x00)
 741   2          {
 742   3            ACC = Usb_read_byte();                /* dummy read */
 743   3            switch (Usb_read_byte())              /* check wIndex */
 744   3            {
 745   4              case ENDPOINT_1:
 746   4              {
 747   5                Usb_select_ep(EP_IN);
 748   5                Usb_clear_stall_request();
 749   5                usb_reset_endpoint(EP_IN);
 750   5                Usb_select_ep(EP_CONTROL);
 751   5                endpoint_status[EP_IN] = 0x00;
 752   5                Usb_clear_rx_setup();
 753   5                Usb_set_tx_ready();
 754   5                while (!(Usb_tx_complete()));
 755   5                Usb_clear_tx_complete();
 756   5                break;
 757   5              }
 758   4              case ENDPOINT_0:
 759   4              {
 760   5                Usb_clear_rx_setup();
 761   5                Usb_set_tx_ready();
 762   5                while (!(Usb_tx_complete()));
 763   5                Usb_clear_tx_complete();
 764   5                break;
 765   5              }
 766   4              default:
 767   4              {
 768   5                Usb_clear_rx_setup();
 769   5                Usb_set_stall_request();
 770   5                while (!(Usb_stall_sent()));
 771   5                Usb_clear_stall_request();
 772   5                break;
 773   5              }
 774   4            }
 775   3          }
 776   2        }
 777   1      }
 778          /*F**************************************************************************
 779          * NAME: usb_hid_set_report
 780          *----------------------------------------------------------------------------
 781          * PARAMS:
 782          *
 783          * return:
 784          *----------------------------------------------------------------------------
 785          * PURPOSE: 
 786          * This function manages the SET_REPORT request (HID Class)
 787          *----------------------------------------------------------------------------
 788          * EXAMPLE:
 789          *----------------------------------------------------------------------------
 790          * NOTE:
 791          *----------------------------------------------------------------------------
 792          * REQUIREMENTS: 
 793          *****************************************************************************/
 794          void usb_hid_set_report (void)
 795          {
 796   1        Usb_clear_rx_setup();
 797   1        
 798   1        while(!Usb_rx_complete() );
C51 COMPILER V7.06   USB_KBD_ENUM                                                          01/29/2008 10:59:25 PAGE 14  

 799   1        Usb_clear_rx();
 800   1        Usb_set_tx_ready();                          /* send a ZLP for STATUS phase */
 801   1        while(!(Usb_tx_complete()));
 802   1        Usb_clear_tx_complete();
 803   1      }
 804          
 805          
 806          
 807          /*F**************************************************************************
 808          * NAME: usb_hid_set_idle
 809          *----------------------------------------------------------------------------
 810          * PARAMS:
 811          *
 812          * return:
 813          *----------------------------------------------------------------------------
 814          * PURPOSE: 
 815          * This function manages the HID_SET_IDLE request.
 816          *----------------------------------------------------------------------------
 817          * EXAMPLE:
 818          *----------------------------------------------------------------------------
 819          * NOTE:
 820          *----------------------------------------------------------------------------
 821          * REQUIREMENTS: 
 822          *****************************************************************************/
 823          void usb_hid_set_idle (void)
 824          {
 825   1        ACC = Usb_read_byte();
 826   1        hid_idle_duration = Usb_read_byte();      /* wValue contains the duration */
 827   1        Usb_clear_rx_setup();
 828   1      
 829   1        Usb_set_tx_ready();                          /* send a ZLP for STATUS phase */
 830   1        while(!(Usb_tx_complete()));
 831   1        Usb_clear_tx_complete();
 832   1      }
 833          
 834          /*F**************************************************************************
 835          * NAME: usb_hid_get_idle
 836          *----------------------------------------------------------------------------
 837          * PARAMS:
 838          *
 839          * return:
 840          *----------------------------------------------------------------------------
 841          * PURPOSE: 
 842          * This function manages the GET_IDLE request.
 843          *----------------------------------------------------------------------------
 844          * EXAMPLE:
 845          *----------------------------------------------------------------------------
 846          * NOTE:
 847          *----------------------------------------------------------------------------
 848          * REQUIREMENTS: 
 849          *****************************************************************************/
 850          void usb_hid_get_idle (void)
 851          {
 852   1        Usb_clear_rx_setup();
 853   1        Usb_set_DIR();
 854   1        Usb_write_byte(hid_idle_duration);
 855   1        Usb_set_tx_ready();                          /* send a ZLP for STATUS phase */
 856   1        while(!(Usb_tx_complete()));
 857   1        Usb_clear_tx_complete();
 858   1        
 859   1        while (!(Usb_rx_complete()));
 860   1        Usb_clear_rx();
C51 COMPILER V7.06   USB_KBD_ENUM                                                          01/29/2008 10:59:25 PAGE 15  

 861   1        Usb_clear_DIR();
 862   1      }
 863          
 864          /*_____ E N D  O F  F I L E  _________________________________________________*/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1135    ----
   CONSTANT SIZE    =    195    ----
   XDATA SIZE       =      8       3
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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