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

📄 usb.lst

📁 一款硬盘MP3的源代码
💻 LST
字号:
C51 COMPILER V7.50   USB                                                                   11/27/2005 23:13:40 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE USB
OBJECT MODULE PLACED IN USB.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE USB.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /* USB.C File
   2             Created by Computer-lov. Date: 2004.9.27
   3             Last edited date: 2005.5.31
   4             Copyright (c) 2005 Computer-lov
   5             version 1.1
   6          */
   7          
   8          #include "AT89C51SND1C.H"
   9          #include "USB.H"
  10          #include "MASS_STORAGE.H"
  11          #include "IDE.h"
  12          #include "LCD.H"
  13          #include "hardware.h"
  14          #include "keyboard.h"
  15          #include "mp3.h"
  16          
  17          
  18          CONTROL_DATA_BUFF xdata Control_Data;
  19          
  20          CBW xdata cbw;
  21          CSW xdata csw;
  22          
  23          unsigned char bdata SCSI_Register;
  24          sbit SCSI_Command    =   SCSI_Register^0;
  25          sbit SCSI_Data       =   SCSI_Register^1;
  26          
  27          
  28          unsigned char *pData;
  29          
  30          unsigned char code DISK_INF[36]
  31          =                                      //磁盘信息
  32          {
  33          0x00,
  34          0x00,
  35          0x02,
  36          0x02,
  37          0x1F,
  38          0x00,0x00,0x00,
  39          0x49,0x44,0x45,0xA1,0xFA,0x55,0x53,0x42, 
  40          0xC1,0xF5,0xC8,0xD9,0xD7,0xD4,0xBC,0xBA,0xD7,0xF6,0xB5,0xC4,0x4D,0x50,0x33,0x20,
  41          0x31,0x2E,0x30,0x31
  42          };
  43          
  44          
  45          code unsigned char SENSE[0x12]=                                      //模式探测返回数据
  46          {
  47          0x70, 0x00, 0x05, 0x00, 0x00, 0x00,
  48          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00
  49          };
  50          
  51          unsigned int SWAP(unsigned int temp)                                //高低字节交换
  52          {
  53   1      unsigned char i;
  54   1      i=((unsigned char *)&temp)[0];
  55   1      ((unsigned char *)&temp)[0]=((unsigned char *)&temp)[1];
C51 COMPILER V7.50   USB                                                                   11/27/2005 23:13:40 PAGE 2   

  56   1      ((unsigned char *)&temp)[1]=i;
  57   1      return temp;
  58   1      }
  59          
  60          unsigned char LSB(unsigned int temp)                                //取一个整数的低字节
  61          {
  62   1      return (unsigned char)temp;
  63   1      }
  64          
  65          unsigned char MSB(unsigned int temp)                                //取一个整数的高字节
  66          {
  67   1      return (unsigned char)(temp>>8);
  68   1      }
  69          
  70          code unsigned char LANGUAGE_ID[4]={0x04,0x03,0x09,0x04};            //字符串描述符所用的语言种类        
  71          
  72          code unsigned char device_serial_number[18]=                         //设备序列号
  73          {0x12,0x03,0x32,0x00,0x30,0x00,0x37,0x00,0x31,0x00,0x30,0x00,0x39,0x00,0x38,0x00,0x32,0x00};
  74          
  75          code DEVICE_DESCRIPTOR_STRUCT device_descriptor=     //设备描述符
  76          {
  77          sizeof(DEVICE_DESCRIPTOR_STRUCT),                   //设备描述符的字节数大小
  78          DEVICE_DESCRIPTOR,                                     //设备描述符类型编号
  79          0x1001,                                             //USB版本号
  80          0x00,                                               //USB分配的设备类代码
  81          0x00,                                               //USB分配的子类代码
  82          0x00,                                               //USB分配的设备协议代码
  83          MAX_CONTROL_DATA_SIZE,                              //端点0的最大包大小
  84          0x7111,                                             //厂商编号
  85          0xf0ff,                                             //产品编号
  86          0x0100,                                             //设备出厂编号
  87          0x00,                                               //设备厂商字符串的索引
  88          0x00,                                               //描述产品字符串的索引
  89          0x02,                                               //描述设备序列号字符串的索引
  90          0x01                                                //可能的配置数量
  91          };
  92          
  93          typedef struct _CON_INT_ENDP_DESCRIPTOR_STRUCT
  94          {
  95          CONFIGURATION_DESCRIPTOR_STRUCT configuration_descriptor;
  96          INTERFACE_DESCRIPTOR_STRUCT  interface_descritor;
  97          ENDPOINT_DESCRIPTOR_STRUCT  endpoint_descriptor[ENDPOINT_NUMBER];
  98          }CON_INT_ENDP_DESCRIPTOR_STRUCT;
  99          
 100          code CON_INT_ENDP_DESCRIPTOR_STRUCT con_int_endp_descriptor=
 101          {
 102          //configuration_descriptor                                          //配置描述符
 103          {
 104          sizeof(CONFIGURATION_DESCRIPTOR_STRUCT),                           //配置描述符的字节数大小
 105          CONFIGURATION_DESCRIPTOR,                                          //配置描述符类型编号
 106          (sizeof(CONFIGURATION_DESCRIPTOR_STRUCT)+sizeof(INTERFACE_DESCRIPTOR_STRUCT)+sizeof(ENDPOINT_DESCRIPTOR_ST
             -RUCT)*ENDPOINT_NUMBER)*256+
 107          (sizeof(CONFIGURATION_DESCRIPTOR_STRUCT)+sizeof(INTERFACE_DESCRIPTOR_STRUCT)+sizeof(ENDPOINT_DESCRIPTOR_ST
             -RUCT)*ENDPOINT_NUMBER)/256,
 108          0x01,                                                            //只包含一个接口
 109          0x01,                                                            //该配置的编号
 110          0x00,                                                            //iConfiguration字段
 111          0x80,                                                            //采用总线供电,不支持远程唤醒
 112          0xC8                                                            //从总线获取最大电流400mA
 113          },
 114          //interface_descritor                                             //接口描述符
 115          {
C51 COMPILER V7.50   USB                                                                   11/27/2005 23:13:40 PAGE 3   

 116          sizeof(INTERFACE_DESCRIPTOR_STRUCT),                             //接口描述符的字节数大小
 117          INTERFACE_DESCRIPTOR,                                            //接口描述符类型编号
 118          0x00,                                                            //接口编号为0
 119          0x00,                                                            //该接口描述符的编号
 120          ENDPOINT_NUMBER,                                                 //非0端点数量为2,只使用端点主端点输入和

⌨️ 快捷键说明

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