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

📄 usbcore.lst

📁 2010年新增TX-1C程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 754   5            
 755   5            case SYNCH_FRAME: //同步帧
 756   5             #ifdef DEBUG0
 757   5              Prints("同步帧。\r\n");
 758   5             #endif
 759   5            break;
 760   5            
 761   5            default:  //未定义的标准请求
 762   5             #ifdef DEBUG0
 763   5              Prints("错误:未定义的标准输入请求。\r\n");
 764   5             #endif       
 765   5            break;
 766   5           }
 767   4          break;
 768   4          
 769   4          case 1:  //类请求
 770   4           #ifdef DEBUG0
 771   4            Prints("USB类输入请求:\r\n");
 772   4           #endif
 773   4          break;
 774   4          
 775   4          case 2:  //厂商请求
 776   4           #ifdef DEBUG0
 777   4            Prints("USB厂商输入请求:\r\n");
 778   4           #endif
 779   4          break;
 780   4          
 781   4          default: //未定义的请求。这里只显示一个报错信息。
 782   4           #ifdef DEBUG0
 783   4            Prints("错误:未定义的输入请求。\r\n");
 784   4           #endif
 785   4          break;
 786   4         }
 787   3        }
 788   2        //否则说明是输出请求
 789   2        else //if(bmRequestType&0x80==0x80)之else
 790   2        {
 791   3         //根据bmRequestType的D6~5位散转,D6~5位表示请求的类型
 792   3         //0为标准请求,1为类请求,2为厂商请求。
 793   3         switch((bmRequestType>>5)&0x03)
 794   3         {
 795   4          case 0:  //标准请求
 796   4           #ifdef DEBUG0
 797   4            Prints("USB标准输出请求:");
 798   4           #endif
 799   4           //USB协议定义了几个标准输出请求,我们实现这些标准请求即可
C51 COMPILER V8.02   USBCORE                                                               06/17/2010 09:52:34 PAGE 14  

 800   4           //请求的代码在bRequest中,对不同的请求代码进行散转
 801   4           switch(bRequest)
 802   4           {
 803   5            case CLEAR_FEATURE: //清除特性
 804   5             #ifdef DEBUG0
 805   5              Prints("清除特性。\r\n");
 806   5             #endif
 807   5            break;
 808   5            
 809   5            case SET_ADDRESS:  //设置地址
 810   5             #ifdef DEBUG0
 811   5              Prints("设置地址。地址为:");
 812   5              PrintHex(wValue&0xFF); //显示所设置的地址
 813   5              Prints("\r\n");
 814   5             #endif
 815   5             D12SetAddress(wValue&0xFF); //wValue中的低字节是设置的地址值
 816   5             //设置地址没有数据过程,直接进入到状态过程,返回一个0长度的数据包
 817   5             SendLength=0;
 818   5             NeedZeroPacket=1;
 819   5             //将数据通过EP0返回
 820   5             UsbEp0SendData();
 821   5            break;
 822   5            
 823   5            case SET_CONFIGURATION: //设置配置
 824   5             #ifdef DEBUG0
 825   5              Prints("设置配置。\r\n");
 826   5             #endif
 827   5             //使能非0端点。非0端点只有在设置为非0的配置后才能使能。
 828   5             //wValue的低字节为配置的值,如果该值为非0,才能使能非0端点。
 829   5             //保存当前配置值
 830   5             ConfigValue=wValue&0xFF;
 831   5             D12SetEndpointEnable(ConfigValue);
 832   5             //返回一个0长度的状态数据包
 833   5             SendLength=0;
 834   5             NeedZeroPacket=1;
 835   5             //将数据通过EP0返回
 836   5             UsbEp0SendData();
 837   5            break;
 838   5            
 839   5            case SET_DESCRIPTOR: //设置描述符
 840   5             #ifdef DEBUG0
 841   5              Prints("设置描述符。\r\n");
 842   5             #endif
 843   5            break;
 844   5            
 845   5            case SET_FEATURE: //设置特性
 846   5             #ifdef DEBUG0
 847   5              Prints("设置特性。\r\n");
 848   5             #endif
 849   5            break;
 850   5      
 851   5            case SET_INTERFACE: //设置接口
 852   5             #ifdef DEBUG0
 853   5              Prints("设置接口。\r\n");
 854   5             #endif
 855   5            break;      
 856   5            
 857   5            default:  //未定义的标准请求
 858   5             #ifdef DEBUG0
 859   5              Prints("错误:未定义的标准输出请求。\r\n");
 860   5             #endif       
 861   5            break;
C51 COMPILER V8.02   USBCORE                                                               06/17/2010 09:52:34 PAGE 15  

 862   5           }
 863   4          break;
 864   4          
 865   4          case 1:  //类请求
 866   4           #ifdef DEBUG0
 867   4            Prints("USB类输出请求:");
 868   4           #endif
 869   4           switch(bRequest)
 870   4           {
 871   5            case SET_IDLE:
 872   5             #ifdef DEBUG0
 873   5              Prints("设置空闲。\r\n");
 874   5             #endif
 875   5             //只需要返回一个0长度的数据包即可
 876   5             SendLength=0;
 877   5             NeedZeroPacket=1;
 878   5             //将数据通过EP0返回
 879   5             UsbEp0SendData();
 880   5            break;
 881   5            
 882   5            default:
 883   5             #ifdef DEBUG0
 884   5              Prints("未知请求。\r\n");
 885   5             #endif
 886   5            break;
 887   5           }
 888   4          break;
 889   4          
 890   4          case 2:  //厂商请求
 891   4           #ifdef DEBUG0
 892   4            Prints("USB厂商输出请求:\r\n");
 893   4           #endif
 894   4          break;
 895   4          
 896   4          default: //未定义的请求。这里只显示一个报错信息。
 897   4           #ifdef DEBUG0
 898   4            Prints("错误:未定义的输出请求。\r\n");
 899   4           #endif
 900   4          break;
 901   4         }
 902   3        }
 903   2       }
 904   1       //普通数据输出
 905   1       else //if(D12ReadEndpointLastStatus(0)&0x20)之else
 906   1       {
 907   2        D12ReadEndpointBuffer(0,16,Buffer);
 908   2        D12ClearBuffer();
 909   2       }
 910   1      }
 911          ////////////////////////End of function//////////////////////////////
 912          
 913          /********************************************************************
 914          函数功能:端点0输入中断处理函数。
 915          入口参数:无。
 916          返    回:无。
 917          备    注:无。
 918          ********************************************************************/
 919          void UsbEp0In(void)
 920          {
 921   1      #ifdef DEBUG0
 922   1       Prints("USB端点0输入中断。\r\n");
 923   1      #endif
C51 COMPILER V8.02   USBCORE                                                               06/17/2010 09:52:34 PAGE 16  

 924   1       //读最后发送状态,这将清除端点0的中断标志位
 925   1       D12ReadEndpointLastStatus(1);
 926   1       //发送剩余的字节数
 927   1       UsbEp0SendData();
 928   1      }
 929          ////////////////////////End of function//////////////////////////////
 930          
 931          /********************************************************************
 932          函数功能:端点1输出中断处理函数。
 933          入口参数:无。
 934          返    回:无。
 935          备    注:无。
 936          ********************************************************************/
 937          void UsbEp1Out(void)
 938          {
 939   1      #ifdef DEBUG0
 940   1       Prints("USB端点1输出中断。\r\n");
 941   1      #endif
 942   1      }
 943          ////////////////////////End of function//////////////////////////////
 944          
 945          /********************************************************************
 946          函数功能:端点1输入中断处理函数。
 947          入口参数:无。
 948          返    回:无。
 949          备    注:无。
 950          ********************************************************************/
 951          void UsbEp1In(void)
 952          {
 953   1      #ifdef DEBUG0
 954   1       Prints("USB端点1输入中断。\r\n");
 955   1      #endif
 956   1       //读最后发送状态,这将清除端点1输入的中断标志位
 957   1       D12ReadEndpointLastStatus(3);
 958   1       //端点1输入处于空闲状态
 959   1       Ep1InIsBusy=0;
 960   1      }
 961          ////////////////////////End of function//////////////////////////////
 962          
 963          /********************************************************************
 964          函数功能:端点2输出中断处理函数。
 965          入口参数:无。
 966          返    回:无。
 967          备    注:无。
 968          ********************************************************************/
 969          void UsbEp2Out(void)
 970          {
 971   1      #ifdef DEBUG0
 972   1       Prints("USB端点2输出中断。\r\n");
 973   1      #endif
 974   1      }
 975          ////////////////////////End of function//////////////////////////////
 976          
 977          /********************************************************************
 978          函数功能:端点2输入中断处理函数。
 979          入口参数:无。
 980          返    回:无。
 981          备    注:无。
 982          ********************************************************************/
 983          void UsbEp2In(void)
 984          {
 985   1      #ifdef DEBUG0
C51 COMPILER V8.02   USBCORE                                                               06/17/2010 09:52:34 PAGE 17  

 986   1       Prints("USB端点2输入中断。\r\n");
 987   1      #endif
 988   1      }
 989          ////////////////////////End of function//////////////////////////////


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1257    ----
   CONSTANT SIZE    =    960    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16    ----
   IDATA SIZE       =     16    ----
   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 + -