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

📄 usbex.lst

📁 使用ch375和stc 51写的usb鼠标的代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   USBEX                                                                 04/03/2006 15:21:51 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE USBEX
OBJECT MODULE PLACED IN E:\PROJECT\USB_MOUSE\USBEX.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\PROJECT\USB_MOUSE\USBEX.C DB SB OE

stmt level    source

   1          /*;CH372/CH375 USB device mode & external firmware
   2          ; U2(AT89C51) Program
   3          ;
   4          ; Website:  http://winchiphead.com
   5          ; Email:    tech@winchiphead.com
   6          ; Author:   W.ch 2003.12, 2005.03
   7          ;
   8          ;****************************************************************************
   9          CH375 外部固件方式范例
  10          这里仅处理标准请求和端点2的简单读写
  11          
  12          */
  13          
  14          /* MCS-51单片机C语言的示例程序 */
  15          #pragma NOAREGS
  16          #include <reg52.h>
  17          #include "CH375INC.H"
  18          
  19          typedef union _REQUEST_PACK{
  20                  unsigned char  buffer[8];
  21                  struct{
  22                          unsigned char    bmReuestType;           //标准请求字
  23                          unsigned char    bRequest;                      //请求代码
  24                          unsigned int     wValue;                        //特性选择高
  25                          unsigned int     wIndx;                         //索引
  26                          unsigned int     wLength;                               //数据长度
  27                  }r;
  28          } mREQUEST_PACKET,      *mpREQUEST_PACKET;
  29          
  30          //设备描述符
  31          unsigned char  code DevDes[]={
  32                                                          0x12                    //描述符大小                    
  33                                                    , 0x01                        //常数DEVICE
  34                                                   , 0x10                         //USB规范版本信息
  35                                               ,  0x01
  36                                                  ,   0xFF                        //类别码,
  37                                                  ,  0x80                         //子类别码      
  38                                                  ,   0x37                        //协议码
  39                                                  ,  0x08                         //端点0的最大信息包大小
  40                                                  ,  0x48                         //厂商ID
  41                                                  ,   0x43
  42                                                  ,   0x37                        //产品ID        
  43                                                  ,   0x55
  44                                                  ,   0x00                        //设备版本信息
  45                                                  ,   0x01
  46                                                  ,   0x00                        //索引值        
  47                                                  ,   0x00
  48                                                  ,   0x00
  49                                                  ,   0x01                        //可能配置的数目        
  50                                                  ,   00                          //无意义
  51                                                  ,   00
  52                                                  ,   00
  53                                                  ,       00
  54                                                  ,       00
  55                                                  ,       00
C51 COMPILER V7.06   USBEX                                                                 04/03/2006 15:21:51 PAGE 2   

  56                                                  };
  57          //配置描述符
  58          unsigned char   code ConDes[]={                 //配置描述符
  59                                                    0x09                                  //描述符大小
  60                                                  ,  0x02                                 //常数CONFIG
  61                                                  ,  0x27                                 //此配置传回所有数据大小
  62                                                  ,  0x00                                 //
  63                                                  ,  0x01                                 //接口数
  64                                                  ,  0x01                                 //配置值
  65                                                  ,  0x00                                 //索引
  66                                                  ,  0x80                                 //电源设置
  67                                                  ,  0x40                                 //需要总线电源
  68                                                                                          //接口描述符
  69                                                  ,  0x09                                 //描述符大小                                                            
  70                                                  ,  0x04                                 //常数INTERFACE                         
  71                                                  ,  0x00                                 //识别码
  72                                                  ,  0x00                                 //代替数值
  73                                                  ,  0x03                                 //支持的端点数
  74                                                  ,  0xFF                                 //类别码
  75                                                  ,  0x80                                 //子类别码
  76                                                  ,  0x37                                 //协议码
  77                                                  ,  0x00                                 //索引
  78                                                                                          //端点描述符
  79                                                  ,  0x07                                 //述符大小
  80                                                  ,  0x05                                 //常数ENDPOINT
  81                                                  ,  0x82                                 //端点数目及方向
  82                                                  ,  0x02                                 //支持的传输类型
  83                                                  ,  0x40                                 //支持的最大信息包大小
  84                                                  ,  0x00
  85                                                  ,  0x00                                 //
  86                                          
  87                                                  ,  0x07
  88                                                  ,  0x05
  89                                                  ,  0x02
  90                                                  ,  0x02
  91                                                  ,  0x40
  92                                                  ,  0x00
  93                                                  ,  0x00
  94                                                  
  95                                                  ,  0x07
  96                                                  ,  0x05
  97                                                  ,  0x81
  98                                                  ,  0x03
  99                                                  ,  0x08
 100                                                  ,  0x00
 101                                                  ,  0x01
 102          
 103                                                  ,  0x07
 104                                                  ,  0x05
 105                                                  ,  0x01
 106                                                  ,  0x02
 107                                                  ,  0x08
 108                                                  ,  0x00
 109                                                  ,  0x00
 110                                          };              //配置描述符
 111          unsigned char  code LangDes[]={0x04,0x03,0x09,0x04};            //语言描述符
 112          unsigned char  code SerDes[]={0x12,0x03,'C',0,'H',0,'3',0,'7',0,'5',0,'U',0,'S',0,'B',0};               //字符串描述符
 113          
 114          unsigned char mVarSetupRequest;                                         //      ;USB请求码
 115          unsigned char mVarSetupLength;                                  //              ;后续数据长度
 116          unsigned char  code * VarSetupDescr;                                            //      ;描述符偏移地址
 117          
C51 COMPILER V7.06   USBEX                                                                 04/03/2006 15:21:51 PAGE 3   

 118          unsigned char VarUsbAddress     ;                                       //
 119          
 120          bit CH375FLAGERR;                                               //错误清0
 121          bit     CH375CONFLAG;
 122                                                                       //配置标志
 123          
 124          unsigned char volatile xdata CH375_CMD_PORT _at_ 0x7fff;                /* CH375命令端口的I/O地址 */
 125          unsigned char volatile xdata CH375_DAT_PORT _at_ 0x3fff;                /* CH375数据端口的I/O地址 */
 126          
 127          mREQUEST_PACKET  request;
 128          sbit  CH375ACT  = P1^0;
 129          
 130          
 131          /* 延时2微秒,不精确 */
 132          void Delay1us(){
 133   1              ;
 134   1      }
 135          
 136          void    Delay2us( )
 137          {
 138   1              unsigned char i;
 139   1      #define DELAY_START_VALUE       1                                                               /* 根据单片机的时钟选择初值,20MHz以下为0,30MHz以上为2 */
 140   1              for ( i=DELAY_START_VALUE; i!=0; i-- );
 141   1      }
 142          
 143          /* 延时50毫秒,不精确 */
 144          void    Delay50ms( )
 145          {
 146   1              unsigned char i, j;
 147   1              for ( i=200; i!=0; i-- ) for ( j=250; j!=0; j-- );
 148   1      }
 149          
 150          /* 将PC机的低字节在前的16位字数据转换为C51的高字节在前的数据 */
 151          //unsigned int  BIG_ENDIAN( unsigned int value )
 152          //{
 153          //      unsigned int  in, out;
 154          //      in = value;

⌨️ 快捷键说明

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