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

📄 ch375.lst

📁 使用ch375和stc 51写的usb鼠标的代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 393   5                                                              if(debug) uartPutStr("GET_CONFIG\n\r");
 394   5                                                              request.buffer[0]=0;                            //没有配置则传0
 395   5                                                              if( CH375CONFLAG )
 396   5                                                                      request.buffer[0]=1;                    //已经配置则传1, 这是在描述符里规定的
 397   5                                                              break;
 398   5      //标准请求, 6                                                   
 399   5                                                      case DEF_USB_SET_CONFIG:                        //设置配置
 400   5                                                              if(debug) uartPutStr("SET_CONFIG\n\r");
 401   5                                                              CH375CONFLAG=0;
 402   5                                                              if( request.buffer[2] != 0 )
 403   5                                                              {
 404   6                                                                      CH375CONFLAG=1;                                         //设置配置标志
 405   6                                                              }
 406   5                                                              break;
 407   5      //标准请求, 7                                                   
 408   5                                                      case DEF_USB_GET_INTERF:                        //获得接口
 409   5                                                              if(debug) uartPutStr("GET_INTERF\n");
 410   5                                                              request.buffer[0]=1;                            //上传接口数,本事例只支持一个接口
 411   5                                                              break;
 412   5                                                      default :
 413   5                                                              if(debug) uartPutStr("NAK_REQUEST\n");
 414   5                                                              CH375FLAGERR=1;                                                 //不支持的标准请求
 415   5                                                              break;
 416   5                                              }//分析标准请求结束
 417   4                                      }//标准请求处理结束
 418   3                                      //类请求
 419   3                                      else if(0x20==(request.r.bmReuestType&0x60))
 420   3                                      {
 421   4                                              if(debug) uartPutStr("Request class\n\r");
 422   4                                      }
 423   3                                      //非标准请求, 保留
 424   3                                      else
 425   3                                      {
 426   4                                              ;
C51 COMPILER V7.06   CH375                                                                 04/07/2006 09:06:59 PAGE 8   

 427   4                                      }               
 428   3                              }//长度是8的数据处理结束
 429   2                              else   //不支持的控制传输,不是8字节的控制传输
 430   2                              {
 431   3                                      CH375FLAGERR=1;
 432   3                              }
 433   2      
 434   2                              if( !CH375FLAGERR )
 435   2                                      mCh375Ep0Up(); //没有错误/调用数据上传,长度为0上传为状态
 436   2                              else
 437   2                              {
 438   3                                      CH375_WR_CMD_PORT( CMD_SET_ENDP3 ); //设置端点0发送器的工作方式, 为STALL,指示一个错误
 439   3                                      CH375_WR_DAT_PORT( 0x0F );
 440   3                                      if(debug&DBG_SETUP)     uartPutStr("error!\n\r");
 441   3                                      //flash_led();
 442   3                              }
 443   2                              break;
 444   2                      case   USB_INT_EP0_IN:                                                                                  //控制端点上传成功
 445   2                              if(1)   uartPutStr("0_IN\n\r");
 446   2                              if( mVarSetupRequest==DEF_USB_GET_DESCR ) //描述符上传
 447   2                              {
 448   3                                      mCh375DesUp();
 449   3                                      mCh375Ep0Up();
 450   3                              }
 451   2                              else
 452   2                              if( mVarSetupRequest==DEF_USB_SET_ADDRESS ) //设置地址
 453   2                              {
 454   3                                      CH375_WR_CMD_PORT( CMD_SET_USB_ADDR );
 455   3                                      CH375_WR_DAT_PORT( VarUsbAddress );                     //设置USB地址,设置下次事务的USB地址
 456   3                                      if(debug) uartPrint("SET_ADDRESS: %\n\r", &VarUsbAddress, 1);
 457   3                              }
 458   2                              CH375_WR_CMD_PORT(CMD_UNLOCK_USB);                      //释放缓冲区
 459   2                              break;
 460   2                      case   USB_INT_EP0_OUT:                                                                 //控制端点下传成功
 461   2                              if(debug&DBG_SETUP)     uartPutStr("EP0_OUT!\n\r");
 462   2                              /*
 463   2                              CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); //发出读数据命令
 464   2                              length=CH375_RD_DAT_PORT();
 465   2                              if( length>0 ) //长度为0跳出
 466   2                              {
 467   2                                      for( len=0;len!=length;len++ )
 468   2                                              CH375_RD_DAT_PORT(); //取出下传数据
 469   2                              }*/
 470   2                              len=rdData();
 471   2                              if(0==len)
 472   2                              {
 473   3                                      if(debug&DBG_SETUP)     uartPutStr("length 0x00!\n\r");
 474   3                              }
 475   2                              else
 476   2                              {       
 477   3                                      if(debug&DBG_SETUP)     uartPrint("EP0_OUT %\n\r", RECV_BUFFER, len);
 478   3                              }       
 479   2                              break;
 480   2                      default:
 481   2                              if(debug&DBG_SETUP) uartPrint("status defaut %!\n\r", &InterruptStatus, 1);
 482   2                              if( 0x03==(InterruptStatus&0x03) ) //总线复位
 483   2                              {
 484   3                                      CH375FLAGERR=0; //错误清0
 485   3                                      CH375CONFLAG=0; //配置清0
 486   3                                      mVarSetupLength=0;
 487   3                              }
 488   2                              else
C51 COMPILER V7.06   CH375                                                                 04/07/2006 09:06:59 PAGE 9   

 489   2                              { //命令不支持
 490   3                                      flash_led();
 491   3                              }
 492   2                              CH375_WR_CMD_PORT( CMD_UNLOCK_USB ); //释放缓冲区
 493   2                              break;
 494   2              }
 495   1      }
C51 COMPILER V7.06   CH375                                                                 04/07/2006 09:06:59 PAGE 10  

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


Class_Descriptor . . . . . . . . . . .  PUBLIC   CODE   ARRAY    01E6H  9
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
CH375_RD_DAT_PORT. . . . . . . . . . .  PUBLIC   CODE   PROC     0005H  -----
debug. . . . . . . . . . . . . . . . .  EXTERN   DATA   U_CHAR   -----  1
_REQUEST_PACK. . . . . . . . . . . . .  * TAG *  -----  UNION    -----  8
  buffer . . . . . . . . . . . . . . .  MEMBER   -----  ARRAY    0000H  8
  r. . . . . . . . . . . . . . . . . .  MEMBER   -----  STRUCT   0000H  8
request. . . . . . . . . . . . . . . .  EXTERN   DATA   UNION    -----  8
mCh375Interrupt. . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  InterruptStatus. . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  length . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  len. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0002H  1
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
disConnect . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
size_t . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
mVarSetupLength. . . . . . . . . . . .  EXTERN   DATA   U_CHAR   -----  1
_uartPutStr. . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
mVarSetupRequest . . . . . . . . . . .  EXTERN   DATA   U_CHAR   -----  1
mCh375DesUp. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
VarUsbAddress. . . . . . . . . . . . .  EXTERN   DATA   U_CHAR   -----  1
CH375_Init . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  k. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  RD_Data. . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
LangDes. . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    01D0H  4
hid_report_desc_table. . . . . . . . .  PUBLIC   CODE   ARRAY    015BH  50
ep1Buf . . . . . . . . . . . . . . . .  EXTERN   IDATA  ARRAY    -----  8
mpREQUEST_PACKET . . . . . . . . . . .  TYPEDEF  -----  PTR      -----  3
flash_led. . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
CH375CONFLAG . . . . . . . . . . . . .  EXTERN   DATA   BIT      -----  1
_ep1Up . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  len. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
_uartPrint . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
CH375FLAGERR . . . . . . . . . . . . .  EXTERN   DATA   BIT      -----  1
VarSetupDescr. . . . . . . . . . . . .  EXTERN   DATA   PTR      -----  3
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
mREQUEST_PACKET. . . . . . . . . . . .  TYPEDEF  -----  UNION    -----  8
  buffer . . . . . . . . . . . . . . .  MEMBER   -----  ARRAY    0000H  8
  r. . . . . . . . . . . . . . . . . .  MEMBER   -----  STRUCT   0000H  8
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
led. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0090H  1
delay1s. . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
DevDes . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    018DH  24
ConDes . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    01A5H  34
SerDes . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    01D4H  18
RECV_BUFFER. . . . . . . . . . . . . .  EXTERN   DATA   ARRAY    -----  64
rdData . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  length . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  ret_buf. . . . . . . . . . . . . . .  * REG *  DATA   PTR      0001H  3
hidDes . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    01C7H  9
delay50ms. . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
out. . . . . . . . . . . . . . . . . .  * TAG *  -----  STRUCT   -----  3
  flag . . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0000H  1
C51 COMPILER V7.06   CH375                                                                 04/07/2006 09:06:59 PAGE 11  

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


  count. . . . . . . . . . . . . . . .  MEMBER   -----  U_INT    0001H  2
_set_usb_mode. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  mode . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  RD_Data. . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
mCh375Ep0Up. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  len. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
RECV_LEN . . . . . . . . . . . . . . .  EXTERN   DATA   U_CHAR   -----  1
_CH375_WR_CMD_PORT . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  cmd. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
_CH375_WR_DAT_PORT . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  dat. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1234    ----
   CONSTANT SIZE    =    495    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   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 + -