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

📄 usbcore.lst

📁 2010年新增TX-1C程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 806   5              Prints("获取接口。\r\n");
 807   5             #endif
 808   5            break;
 809   5            
 810   5            case GET_STATUS: //获取状态
 811   5             #ifdef DEBUG0
 812   5              Prints("获取状态。\r\n");
 813   5             #endif
 814   5            break;
 815   5            
 816   5            case SYNCH_FRAME: //同步帧
 817   5             #ifdef DEBUG0
 818   5              Prints("同步帧。\r\n");
 819   5             #endif
 820   5            break;
 821   5            
 822   5            default:  //未定义的标准请求
 823   5             #ifdef DEBUG0
 824   5              Prints("错误:未定义的标准输入请求。\r\n");
 825   5             #endif       
 826   5            break;
 827   5           }
 828   4          break;
 829   4          
 830   4          case 1:  //类请求
 831   4           #ifdef DEBUG0
 832   4            Prints("USB类输入请求:\r\n");
 833   4           #endif
 834   4          break;
 835   4          
 836   4          case 2:  //厂商请求
 837   4           #ifdef DEBUG0
 838   4            Prints("USB厂商输入请求:\r\n");
 839   4           #endif
 840   4          break;
 841   4          
 842   4          default: //未定义的请求。这里只显示一个报错信息。
 843   4           #ifdef DEBUG0
 844   4            Prints("错误:未定义的输入请求。\r\n");
 845   4           #endif
 846   4          break;
 847   4         }
 848   3        }
 849   2        //否则说明是输出请求
 850   2        else //if(bmRequestType&0x80==0x80)之else
 851   2        {
 852   3         //根据bmRequestType的D6~5位散转,D6~5位表示请求的类型
 853   3         //0为标准请求,1为类请求,2为厂商请求。
 854   3         switch((bmRequestType>>5)&0x03)
 855   3         {
 856   4          case 0:  //标准请求
 857   4           #ifdef DEBUG0
 858   4            Prints("USB标准输出请求:");
 859   4           #endif
 860   4           //USB协议定义了几个标准输出请求,我们实现这些标准请求即可
 861   4           //请求的代码在bRequest中,对不同的请求代码进行散转
C51 COMPILER V8.02   USBCORE                                                               06/17/2010 09:51:39 PAGE 15  

 862   4           switch(bRequest)
 863   4           {
 864   5            case CLEAR_FEATURE: //清除特性
 865   5             #ifdef DEBUG0
 866   5              Prints("清除特性。\r\n");
 867   5             #endif
 868   5            break;
 869   5            
 870   5            case SET_ADDRESS:  //设置地址
 871   5             #ifdef DEBUG0
 872   5              Prints("设置地址。地址为:");
 873   5              PrintHex(wValue&0xFF); //显示所设置的地址
 874   5              Prints("\r\n");
 875   5             #endif
 876   5             D12SetAddress(wValue&0xFF); //wValue中的低字节是设置的地址值
 877   5             //设置地址没有数据过程,直接进入到状态过程,返回一个0长度的数据包
 878   5             SendLength=0;
 879   5             NeedZeroPacket=1;
 880   5             //将数据通过EP0返回
 881   5             UsbEp0SendData();
 882   5            break;
 883   5            
 884   5            case SET_CONFIGURATION: //设置配置
 885   5             #ifdef DEBUG0
 886   5              Prints("设置配置。\r\n");
 887   5             #endif
 888   5             //使能非0端点。非0端点只有在设置为非0的配置后才能使能。
 889   5             //wValue的低字节为配置的值,如果该值为非0,才能使能非0端点。
 890   5             //保存当前配置值
 891   5             ConfigValue=wValue&0xFF;
 892   5             D12SetEndpointEnable(ConfigValue);
 893   5             //返回一个0长度的状态数据包
 894   5             SendLength=0;
 895   5             NeedZeroPacket=1;
 896   5             //将数据通过EP0返回
 897   5             UsbEp0SendData();
 898   5            break;
 899   5            
 900   5            case SET_DESCRIPTOR: //设置描述符
 901   5             #ifdef DEBUG0
 902   5              Prints("设置描述符。\r\n");
 903   5             #endif
 904   5            break;
 905   5            
 906   5            case SET_FEATURE: //设置特性
 907   5             #ifdef DEBUG0
 908   5              Prints("设置特性。\r\n");
 909   5             #endif
 910   5            break;
 911   5      
 912   5            case SET_INTERFACE: //设置接口
 913   5             #ifdef DEBUG0
 914   5              Prints("设置接口。\r\n");
 915   5             #endif
 916   5            break;      
 917   5            
 918   5            default:  //未定义的标准请求
 919   5             #ifdef DEBUG0
 920   5              Prints("错误:未定义的标准输出请求。\r\n");
 921   5             #endif       
 922   5            break;
 923   5           }
C51 COMPILER V8.02   USBCORE                                                               06/17/2010 09:51:39 PAGE 16  

 924   4          break;
 925   4          
 926   4          case 1:  //类请求
 927   4           #ifdef DEBUG0
 928   4            Prints("USB类输出请求:");
 929   4           #endif
 930   4           switch(bRequest)
 931   4           {
 932   5            case SET_IDLE:
 933   5             #ifdef DEBUG0
 934   5              Prints("设置空闲。\r\n");
 935   5             #endif
 936   5             //只需要返回一个0长度的数据包即可
 937   5             SendLength=0;
 938   5             NeedZeroPacket=1;
 939   5             //将数据通过EP0返回
 940   5             UsbEp0SendData();
 941   5            break;
 942   5            
 943   5            default:
 944   5             #ifdef DEBUG0
 945   5              Prints("未知请求。\r\n");
 946   5             #endif
 947   5            break;
 948   5           }
 949   4          break;
 950   4          
 951   4          case 2:  //厂商请求
 952   4           #ifdef DEBUG0
 953   4            Prints("USB厂商输出请求:\r\n");
 954   4           #endif
 955   4          break;
 956   4          
 957   4          default: //未定义的请求。这里只显示一个报错信息。
 958   4           #ifdef DEBUG0
 959   4            Prints("错误:未定义的输出请求。\r\n");
 960   4           #endif
 961   4          break;
 962   4         }
 963   3        }
 964   2       }
 965   1       //普通数据输出
 966   1       else //if(D12ReadEndpointLastStatus(0)&0x20)之else
 967   1       {
 968   2        D12ReadEndpointBuffer(0,16,Buffer);
 969   2        D12ClearBuffer();
 970   2       }
 971   1      }
 972          ////////////////////////End of function//////////////////////////////
 973          
 974          /********************************************************************
 975          函数功能:端点0输入中断处理函数。
 976          入口参数:无。
 977          返    回:无。
 978          备    注:无。
 979          ********************************************************************/
 980          void UsbEp0In(void)
 981          {
 982   1      #ifdef DEBUG0
 983   1       Prints("USB端点0输入中断。\r\n");
 984   1      #endif
 985   1       //读最后发送状态,这将清除端点0的中断标志位
C51 COMPILER V8.02   USBCORE                                                               06/17/2010 09:51:39 PAGE 17  

 986   1       D12ReadEndpointLastStatus(1);
 987   1       //发送剩余的字节数
 988   1       UsbEp0SendData();
 989   1      }
 990          ////////////////////////End of function//////////////////////////////
 991          
 992          /********************************************************************
 993          函数功能:端点1输出中断处理函数。
 994          入口参数:无。
 995          返    回:无。
 996          备    注:无。
 997          ********************************************************************/
 998          void UsbEp1Out(void)
 999          {
1000   1       uint8 Buf[1]; //用来保存1字节的输出报告,控制LED。
1001   1      #ifdef DEBUG0
1002   1       Prints("USB端点1输出中断。\r\n");
1003   1      #endif
1004   1       //读端点最后状态,这将清除端点1输出的中断标志位
1005   1       D12ReadEndpointLastStatus(2);
1006   1       //从端点1输出缓冲读回1字节数据
1007   1       D12ReadEndpointBuffer(2,1,Buf);
1008   1       //清除端点缓冲区
1009   1       D12ClearBuffer();
1010   1       //输出报告1字节为LED状态,某位为1时,表示LED亮。
1011   1       LEDs=~Buf[0];
1012   1      }
1013          ////////////////////////End of function//////////////////////////////
1014          
1015          /********************************************************************
1016          函数功能:端点1输入中断处理函数。
1017          入口参数:无。
1018          返    回:无。
1019          备    注:无。
1020          ********************************************************************/
1021          void UsbEp1In(void)
1022          {
1023   1      #ifdef DEBUG0
1024   1       Prints("USB端点1输入中断。\r\n");
1025   1      #endif
1026   1       //读最后发送状态,这将清除端点1输入的中断标志位
1027   1       D12ReadEndpointLastStatus(3);
1028   1       //端点1输入处于空闲状态
1029   1       Ep1InIsBusy=0;
1030   1      }
1031          ////////////////////////End of function//////////////////////////////
1032          
1033          /********************************************************************
1034          函数功能:端点2输出中断处理函数。
1035          入口参数:无。
1036          返    回:无。
1037          备    注:无。
1038          ********************************************************************/
1039          void UsbEp2Out(void)
1040          {
1041   1      #ifdef DEBUG0
1042   1       Prints("USB端点2输出中断。\r\n");
1043   1      #endif
1044   1      }
1045          ////////////////////////End of function//////////////////////////////
1046          
1047          /********************************************************************
C51 COMPILER V8.02   USBCORE                                                               06/17/2010 09:51:39 PAGE 18  

1048          函数功能:端点2输入中断处理函数。
1049          入口参数:无。
1050          返    回:无。
1051          备    注:无。
1052          ********************************************************************/
1053          void UsbEp2In(void)
1054          {
1055   1      #ifdef DEBUG0
1056   1       Prints("USB端点2输入中断。\r\n");
1057   1      #endif
1058   1      }
1059          ////////////////////////End of function//////////////////////////////


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1284    ----
   CONSTANT SIZE    =    988    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16       1
   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 + -