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

📄 pdiusbd12.lst

📁 HID 设备测试程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 713   3                              bEPPflags.bits.first_get_descriptor = 0;
 714   3                      }
 715   2                      else
 716   2                      {
 717   3                              bEPPflags.bits.control_state = USB_TRANSMIT;
 718   3                      }
 719   2                      Control_Data.wCount += EP0_PACKET_SIZE;
 720   2              }
 721   1              else
 722   1              {       
 723   2                      if (i != 0)
 724   2                      {
 725   3                              write_endpoint_buff(1, i, Control_Data.pData + Control_Data.wCount);
 726   3                              Control_Data.wCount += i;
 727   3                              bEPPflags.bits.control_state = USB_IDLE;        //== 发送完后
 728   3                      }
 729   2                      else
 730   2                      {       
 731   3                              if (i == 0)
 732   3                              {
 733   4                                      write_endpoint_buff(1, 0, 0);                   //== Send zero packet at the end ???
 734   4                                      bEPPflags.bits.control_state = USB_IDLE;
 735   4                              }
 736   3                      }
C51 COMPILER V7.50   PDIUSBD12                                                             11/24/2008 09:12:37 PAGE 13  

 737   2              }
 738   1              return 0;       
 739   1      }
 740          
 741          //===============================================================================//
 742          //== 函 数 名:endp1_out
 743          //== 功    能:端点1输出
 744          //== 说    明:
 745          //== 时    间:2008.8.13 创建函数
 746          //== 入口参数:无
 747          //== 返 回 值:0
 748          //===============================================================================//
 749          unsigned char endp1_out(void)
 750          {
 751   1              #ifdef __DEBUG__        //== 打印调试信息
 752   1                      Print_Msg("Runing endp1_out()!\r\n");
 753   1              #endif
 754   1              D12_last_status.Register = read_last_status(2);         //== Clear interrupt flag
 755   1              Print_Msg("端点1输出................................\r\n");
 756   1              return 0;
 757   1      }
 758          
 759          //===============================================================================//
 760          //== 函 数 名:endp1_in
 761          //== 功    能:端点1输入
 762          //== 说    明:
 763          //== 时    间:2008.8.13 创建函数
 764          //== 入口参数:无
 765          //== 返 回 值:0
 766          //===============================================================================//
 767          unsigned char endp1_in(void)
 768          {
 769   1              unsigned char code buff[8] = {1,8,3,4,5,6,7,8,};
 770   1              #ifdef __DEBUG__        //== 打印调试信息
 771   1                      Print_Msg("Runing endp1_in()!\r\n");
 772   1              #endif
 773   1      
 774   1              D12_last_status.Register = read_last_status(3);         //== Clear interrupt flag
 775   1      
 776   1              Print_Msg("端点1输入................................\r\n");
 777   1      
 778   1                      write_endpoint_buff(3, 8, buff);
 779   1              return 0;
 780   1      }
 781          
 782          //===============================================================================//
 783          //== 函 数 名:endp2_out
 784          //== 功    能:端点2输出
 785          //== 说    明:
 786          //== 时    间:2008.8.13 创建函数
 787          //== 入口参数:无
 788          //== 返 回 值:0
 789          //===============================================================================//
 790          unsigned char endp2_out(void)
 791          {
 792   1              unsigned char i, j;
 793   1              unsigned char buffer[10];
 794   1      
 795   1              #ifdef __DEBUG__        //== 打印调试信息
 796   1                      Print_Msg("Runing endp2_out()!\r\n");
 797   1              #endif
 798   1              D12_last_status.Register = read_last_status(4);         //== Clear interrupt flag
C51 COMPILER V7.50   PDIUSBD12                                                             11/24/2008 09:12:37 PAGE 14  

 799   1      
 800   1              bEPPflags.bits.usb_endp2_out = 1;
 801   1              j = read_main_endpoint_buff(buffer);
 802   1      
 803   1              #ifdef __DEBUG__        //== 打印调试信息
 804   1                      Print_Msg("端点2输出................................\r\n");
 805   1                      Print_Msg("     端点2的数据是:");
 806   1                      Print_Msg("!\r\n");
 807   1      
 808   1                      for (i=0; i<j; i+=8)
 809   1                      {
 810   2                              Print_Hex(buffer, 8);
 811   2                              Print_Msg(" ");
 812   2                              if ((i%16)==0) Print_Msg("!\r\n"); 
 813   2                      }
 814   1      
 815   1                      Print_Msg("!\r\n");
 816   1              #endif
 817   1      
 818   1              return 0;
 819   1      }
 820          
 821          //===============================================================================//
 822          //== 函 数 名:endp2_in
 823          //== 功    能:主端点输入处理
 824          //== 说    明:
 825          //== 时    间:2008.8.13 创建函数
 826          //== 入口参数:无
 827          //== 返 回 值:0
 828          //===============================================================================//
 829          unsigned char endp2_in(void)                                      
 830          {
 831   1      //      unsigned char i;
 832   1              unsigned char code buff[64] = {1,21,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,
 833   1                                                                         22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
 834   1                                                                         41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,
 835   1                                                                         60,61,62,63,64};
 836   1      
 837   1              #ifdef __DEBUG__        //== 打印调试信息
 838   1                      Print_Msg("Runing endp2_in()!\r\n");
 839   1              #endif
 840   1      
 841   1              #ifdef __DEBUG__        //== 打印调试信息
 842   1                      Print_Msg("端点2输入................................\r\n");
 843   1              #endif
 844   1              bEPPflags.bits.usb_endp2_in = 1;
 845   1      
 846   1              D12_last_status.Register = read_last_status(5);         //== Clear interrupt flag
 847   1      
 848   1      //      for (i=0; i<8; i++)
 849   1      //              usb_transmit_buf[i] = i;
 850   1      
 851   1      //      usb_transmit_buf[0] = 0x01;
 852   1      //      usb_transmit_buf[1] = 0x08;
 853   1      //      write_endpoint_buff(5, 8, usb_transmit_buf);
 854   1              write_endpoint_buff(5, 64, buff);
 855   1              return 0;
 856   1      }
 857          
 858          //===============================================================================//
 859          //== 函 数 名:D12_isr
 860          //== 功    能:D12 中断处理
C51 COMPILER V7.50   PDIUSBD12                                                             11/24/2008 09:12:37 PAGE 15  

 861          //== 说    明:
 862          //== 时    间:2008.8.20 创建函数
 863          //== 入口参数:无
 864          //== 返 回 值:0
 865          //===============================================================================//
 866          unsigned char D12_isr(void)
 867          {
 868   1              Print_Msg("\r\n");
 869   1              bEPPflags.bits.int_isr = 1;
 870   1              read_interrupt_register();
 871   1      
 872   1              if (D12_interrupt_register.int_Register != 0) 
 873   1              {
 874   2                      if (D12_interrupt_register.Interrupt.bus_reset)                         //== usb 总线复位
 875   2                      {
 876   3                              usb_bus_reset();
 877   3                      }
 878   2                      else
 879   2                      {
 880   3                              if (D12_interrupt_register.Interrupt.DMA_EOT)                   //== dma 传输
 881   3                              {
 882   4                                      //dma_eot();
 883   4                              }
 884   3                              if (D12_interrupt_register.Interrupt.suspend_change)    //== 总线挂起
 885   3                              {
 886   4                                      usb_bus_suspend();
 887   4                              }
 888   3                              if (D12_interrupt_register.Interrupt.control_in_port)   //== 控制端点0输入
 889   3                              {
 890   4                                      endp0_in();
 891   4                              }
 892   3                              if (D12_interrupt_register.Interrupt.control_out_port)  //== 控制端点0输出
 893   3                              {
 894   4                                      endp0_out();
 895   4                              }
 896   3                              if (D12_interrupt_register.Interrupt.port_in_1)                 //== 端点1输入
 897   3                              {
 898   4                                      endp1_in();
 899   4                              }
 900   3                              if (D12_interrupt_register.Interrupt.port_out_1)                //== 端点1输出
 901   3                              {
 902   4                                      endp1_out();
 903   4                              }
 904   3                              if (D12_interrupt_register.Interrupt.main_in_port)              //== 端点2输入
 905   3                              {
 906   4                                      endp2_in();
 907   4                              }
 908   3                              if (D12_interrupt_register.Interrupt.main_out_port)             //== 端点2输出
 909   3                              {
 910   4                                      endp2_out();
 911   4                              }
 912   3                      }
 913   2              }
 914   1              bEPPflags.bits.int_isr = 0;
 915   1              return 0;
 916   1      }
 917          
 918          //===============================================================================//
 919          //== 函 数 名:usb_init
 920          //== 功    能:D12 初始化
 921          //== 说    明:
 922          //== 时    间:2008.8.13 创建函数
C51 COMPILER V7.50   PDIUSBD12                                                             11/24/2008 09:12:37 PAGE 16  

 923          //== 入口参数:无
 924          //== 返 回 值:0
 925          //===============================================================================//
 926          unsigned char usb_init(void)
 927          {
 928   1              #ifdef __DEBUG__        //== 打印调试信息
 929   1                      Print_Msg("Init D12!\r\n");
 930   1              #endif
 931   1              disconnect_usb();       //== 断开USB连接
 932   1              init_usb();                     //== 初始化USB芯片
 933   1              D12_ReadChipID();
 934   1              connect_usb();          //== 连接USB
 935   1              return 0;
 936   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1884    ----
   CONSTANT SIZE    =   1246    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3      43
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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