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

📄 usbex.lst

📁 使用ch375和stc 51写的usb鼠标的代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 313   5                                                                      VarSetupDescr=DevDes;
 314   5                                                              else if(request.buffer[3]==2)                                                   //配置描述符上传
 315   5                                                                      VarSetupDescr=ConDes;
 316   5                                                              else if(request.buffer[3]==3) {
 317   6                                                                      if ( request.buffer[2]== 0 ) VarSetupDescr=LangDes;
 318   6                                                                      else VarSetupDescr=SerDes;                                              //做字符串处理
 319   6                                                              }
 320   5                                                              mCh375DesUp();                                                                                  //其余描述符不支持                                                                                                      
 321   5                                                              break;
 322   5                                                      case DEF_USB_GET_CONFIG:                                                                        //获得配置
 323   5                                                              request.buffer[0]=0;                                                                    //没有配置则传0
 324   5                                                              if(CH375CONFLAG) request.buffer[0]=1;                                                                   //已经配置则传1;这是在描述符里规定的
 325   5                                                              break;
 326   5                                                      case DEF_USB_SET_CONFIG:                                                        //设置配置
 327   5                                                              CH375CONFLAG=0;
 328   5                                                              CH375ACT=1;
 329   5                                                              if ( request.buffer[2] != 0 ) {
 330   6                                                                      CH375CONFLAG=1;                                                                                 //设置配置标志
 331   6                                                                      CH375ACT=0;                                                                                             //输出配置完成信号
 332   6                                                              }
 333   5                                                              break;
 334   5                                                      case DEF_USB_GET_INTERF:                                                                                //得到接口
 335   5                                                              request.buffer[0]=1;                                                                    //上传接口数,本事例只支持一个接口
 336   5                                                              break;
 337   5                                                      default :
 338   5                                                              CH375FLAGERR=1;                                                                                 //不支持的标准请求
 339   5                                                              break;
 340   5                                              }
 341   4                                      }
 342   3                              }
 343   2                              else {  //不支持的控制传输,不是8字节的控制传输
 344   3                                      CH375FLAGERR=1;
 345   3                              }
 346   2                              if(!CH375FLAGERR) mCh375Ep0Up();                                                                                //没有错误/调用数据上传,,长度为0上传为状态
 347   2                              else {
 348   3                                      CH375_WR_CMD_PORT(CMD_SET_ENDP3);                                                               //设置端点1为STALL,指示一个错误
 349   3                                      CH375_WR_DAT_PORT(0x0F);
 350   3                              }
 351   2                              break;
 352   2                      case   USB_INT_EP0_IN:                                                                                                  //控制端点上传成功
 353   2                              if(mVarSetupRequest==DEF_USB_GET_DESCR){                                                                //描述符上传
 354   3                                      mCh375DesUp();
 355   3                                      mCh375Ep0Up();                                                                                                                  
 356   3                              }
 357   2                              else if(mVarSetupRequest==DEF_USB_SET_ADDRESS){                                                 //设置地址
 358   3                                      CH375_WR_CMD_PORT(CMD_SET_USB_ADDR);
 359   3                                      CH375_WR_DAT_PORT(VarUsbAddress);                                                               //设置USB地址,设置下次事务的USB地址
 360   3                              }
 361   2                              CH375_WR_CMD_PORT (CMD_UNLOCK_USB);                                                             //释放缓冲区
 362   2                              break;
C51 COMPILER V7.06   USBEX                                                                 04/03/2006 15:21:51 PAGE 7   

 363   2                      case   USB_INT_EP0_OUT:                                                                                                 //控制端点下传成功
 364   2                              CH375_WR_CMD_PORT(CMD_RD_USB_DATA);                                                                     //发出读数据命令
 365   2                              if(length=CH375_RD_DAT_PORT()){                                                                         //长度为0跳出
 366   3                                      for(len=0;len!=length;len++)c1=CH375_RD_DAT_PORT();                                     //取出下传数据
 367   3                              }
 368   2                              break;
 369   2                      default:
 370   2                              if((InterruptStatus&0x03)==0x03){                                                                       //总线复位
 371   3                                      CH375FLAGERR=0;                                                                                                 //错误清0
 372   3                                      CH375CONFLAG=0;                                                                                                 //配置清0
 373   3                                      mVarSetupLength=0;
 374   3                                      CH375ACT=1;                                                                                                             //清配置完成输出
 375   3                              }
 376   2                              else{                                                                                                                           //命令不支持
 377   3                                      ;
 378   3                              }
 379   2                              CH375_WR_CMD_PORT (CMD_UNLOCK_USB);                                                                     //释放缓冲区
 380   2                              break;
 381   2              }
 382   1      }
 383          
 384          main( ) {
 385   1              Delay50ms( );   /* 延时等待CH375初始化完成,如果单片机由CH375提供复位信号则不必延时 */
 386   1              CH375_WR_CMD_PORT( CMD_RESET_ALL );                     //似乎是他模拟了一次插拔
 387   1              Delay50ms( );Delay50ms( );Delay50ms( );Delay50ms( );Delay50ms( );
 388   1              CH375_Init( );  /* 初始化CH375 */
 389   1          EA=1;
 390   1          while(1);           /* 主程序 */
 391   1      }
C51 COMPILER V7.06   USBEX                                                                 04/03/2006 15:21:51 PAGE 8   

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


P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
CH375_RD_DAT_PORT. . . . . . . . . . .  PUBLIC   CODE   PROC     0005H  -----
CH375ACT . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0090H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
CH375_CMD_PORT . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   7FFFH  1
Delay1us . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
CH375_DAT_PORT . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   3FFFH  1
_REQUEST_PACK. . . . . . . . . . . . .  * TAG *  -----  UNION    -----  8
  buffer . . . . . . . . . . . . . . .  MEMBER   -----  ARRAY    0000H  8
  r. . . . . . . . . . . . . . . . . .  MEMBER   -----  STRUCT   0000H  8
Delay2us . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
request. . . . . . . . . . . . . . . .  PUBLIC   DATA   UNION    0000H  8
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
mVarSetupLength. . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0008H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
mVarSetupRequest . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0009H  1
mCh375DesUp. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
CH375_Init . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
VarUsbAddress. . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   000AH  1
LangDes. . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0046H  4
mpREQUEST_PACKET . . . . . . . . . . .  TYPEDEF  -----  PTR      -----  3
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
CH375CONFLAG . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0000H  1
CH375FLAGERR . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0001H  1
VarSetupDescr. . . . . . . . . . . . .  PUBLIC   DATA   PTR      000BH  2
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
Delay50ms. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0003H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  j. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
DevDes . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0000H  24
IE0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0089H  1
ConDes . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0018H  46
SerDes . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    004AH  18
EX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A8H  1
IT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0088H  1
mCh375Ep0Up. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  len. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
mCH375Interrupt. . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  InterruptStatus. . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  length . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  c1 . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0002H  1
  len. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0003H  1
  pBuf . . . . . . . . . . . . . . . .  * REG *  DATA   PTR      0009H  3
  mBuf . . . . . . . . . . . . . . . .  AUTO     DATA   ARRAY    0004H  64
_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
C51 COMPILER V7.06   USBEX                                                                 04/03/2006 15:21:51 PAGE 9   

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


PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    741    ----
   CONSTANT SIZE    =     92    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13      68
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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