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

📄 usb.lst

📁 D12 的一些 开发资料 对开发D12相当有用
💻 LST
字号:
C51 COMPILER V7.06   USB                                                                   09/24/2006 18:34:43 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE USB
OBJECT MODULE PLACED IN USB.OBJ
COMPILER INVOKED BY: D:\keil c51\C51\BIN\C51.EXE USB.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /******************************************************************
   2             本程序只供学习使用,未经作者许可,不得用于其它任何用途
   3                我的邮箱:computer-lov@tom.com
   4                  欢迎访问我的blog:  http://computer00.21ic.org
   5          
   6          USB.C  file
   7          
   8          Created by Computer-lov
   9          Date: 2004.9.21
  10          
  11          Edit date:2006.3.2
  12          
  13          Version V1.1
  14          Copyright(C) Computer-lov 2004-2014
  15          All rigths reserved
  16                       
  17          *******************************************************************/
  18          
  19          #include<Atmel/AT89x52.H>
  20          #include<USB.H>
  21          #include<PDIUSBD12.H>
  22          #include<MASS_STORAGE.H>
  23          //#include<serial.h>
  24          
  25          
  26          #define USB_COMMAND_ADD           1
  27          #define USB_DATA_ADD              0
  28          
  29          #define USB_DATA                  P0
  30          #define USB_A0                    P3_5
  31          #define USB_WR                    P3_6
  32          #define USB_RD                    P3_7
  33          #define USB_INT                   P3_2
  34          
  35          
  36          #define ENDPOINT_NUMBER           2
  37          #define MAX_CONTROL_DATA_SIZE     16
  38          #define MAX_LUN                    0
  39          #define MAX_BULK_DATA_SIZE        64
  40          
  41          CONTROL_DATA_BUFF Control_Data;
  42          
  43          unsigned char idata buffer[64];
  44          
  45          CBW cbw;
  46          CSW csw;
  47          
  48          
  49          union 
  50          {
  51           unsigned char Register;
  52           struct
  53            {
  54             unsigned char Command                :1;
  55             unsigned char Data                   :1;
C51 COMPILER V7.06   USB                                                                   09/24/2006 18:34:43 PAGE 2   

  56            }Status;
  57          }SCSI;
  58          
  59          unsigned char *pData;
  60          
  61          code unsigned char DISK_INF[36]=                                      //磁盘信息
  62          {
  63           0x00,
  64           0x00,
  65           0x02,
  66           0x02,
  67           0x1F,
  68           0x00,0x00,0x00,
  69           0xB5,0xE7,0XC4,0xD4,0xC8,0xA6,0xC8,0xA6, 
  70           0xD7,0xD4,0xBC,0xBA,0xD7,0xF6,0xB5,0xC4,0xBC,0xD9,0x55,0xC5,0xCC,0x00,0x00,0x00,
  71           0x31,0x2E,0x30,0x31
  72          };
  73          
  74          code unsigned char DISK_CAPACITY[8]=                                  //磁盘容量
  75          {
  76           0x00,0x01,0xff,0x00,
  77           0x00,0x00,0x02,0x00
  78          };
  79          
  80          code unsigned char SENSE[0x12]=                                      //模式探测返回数据
  81          {
  82          0x70, 0x00, 0x05, 0x00, 0x00, 0x00,
  83          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00
  84          };
  85          
  86          code unsigned char DBR[512]=                                          //DOS引导记录
  87          {
  88           0xeb, 0x3e, 0x90,                                                    //跳转指令
  89           0x4d, 0x53, 0x44, 0x4f, 0x53, 0x35, 0x2e, 0x30,                      //文件系统版本信息
  90           0x00, 0x02,                                                          //扇区字节数
  91           0x20,                                                                //每簇扇区数
  92           0x01, 0x00,                                                          //保留扇区数
  93           0x02,                                                                //该分区的FAT副本数
  94           0xF0, 0x01,                                                          //根目录项数
  95           0x00, 0x00,                                                          //小扇区数
  96           0xf8,                                                                //媒体描述符
  97           0x10, 0x00,                                                          //每FAT扇区数
  98           0x20, 0x00,                                                          //每道扇区数
  99           0x40, 0x00,                                                          //磁头数
 100           0x00, 0x00, 0x00, 0x00,                                              //隐藏扇区数
 101           0x40, 0xff, 0x01, 0x00,                                              //大扇区数
 102           0x80,                                                                //磁盘驱动器参数,80表示硬盘
 103           0x00,                                                                //保留
 104           0x29,                                                                //扩展引导标记,0x29表示后三个区可用
             - 
 105           0x88, 0x09, 0x71, 0x20,                                              //标卷序列号
 106           0xBC, 0xD9, 0x55, 0xC5, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    //磁盘标卷
 107           0x46, 0x41, 0x54, 0x31, 0x36, 0x20,  0x20, 0x20,                     //文件系统类型信息
 108           0xf1, 0x7d,
 109           0xfa, 0x33, 0xc9, 0x8e,  0xd1, 0xbc, 0xfc, 0x7b,  0x16, 0x07, 0xbd, 0x78,  0x00, 0xc5, 0x76, 0x00,
 110           0x1e, 0x56, 0x16, 0x55,  0xbf, 0x22, 0x05, 0x89,  0x7e, 0x00, 0x89, 0x4e,  0x02, 0xb1, 0x0b, 0xfc,
 111           0xf3, 0xa4, 0x06, 0x1f,  0xbd, 0x00, 0x7c, 0xc6,  0x45, 0xfe, 0x0f, 0x8b,  0x46, 0x18, 0x88, 0x45,
 112           0xf9, 0xfb, 0x38, 0x66,  0x24, 0x7c, 0x04, 0xcd,  0x13, 0x72, 0x3c, 0x8a,  0x46, 0x10, 0x98, 0xf7,
 113           0x66, 0x16, 0x03, 0x46,  0x1c, 0x13, 0x56, 0x1e,  0x03, 0x46, 0x0e, 0x13,  0xd1, 0x50, 0x52, 0x89,
 114           0x46, 0xfc, 0x89, 0x56,  0xfe, 0xb8, 0x20, 0x00,  0x8b, 0x76, 0x11, 0xf7,  0xe6, 0x8b, 0x5e, 0x0b,
 115           0x03, 0xc3, 0x48, 0xf7,  0xf3, 0x01, 0x46, 0xfc,  0x11, 0x4e, 0xfe, 0x5a,  0x58, 0xbb, 0x00, 0x07,
 116           0x8b, 0xfb, 0xb1, 0x01,  0xe8, 0x94, 0x00, 0x72,  0x47, 0x38, 0x2d, 0x74,  0x19, 0xb1, 0x0b, 0x56,
C51 COMPILER V7.06   USB                                                                   09/24/2006 18:34:43 PAGE 3   

 117           0x8b, 0x76, 0x3e, 0xf3,  0xa6, 0x5e, 0x74, 0x4a,  0x4e, 0x74, 0x0b, 0x03,  0xf9, 0x83, 0xc7, 0x15,
 118           0x3b, 0xfb, 0x72, 0xe5,  0xeb, 0xd7, 0x2b, 0xc9,  0xb8, 0xd8, 0x7d, 0x87,  0x46, 0x3e, 0x3c, 0xd8,
 119           0x75, 0x99, 0xbe, 0x80,  0x7d, 0xac, 0x98, 0x03,  0xf0, 0xac, 0x84, 0xc0,  0x74, 0x17, 0x3c, 0xff,
 120           0x74, 0x09, 0xb4, 0x0e,  0xbb, 0x07, 0x00, 0xcd,  0x10, 0xeb, 0xee, 0xbe,  0x83, 0x7d, 0xeb, 0xe5,
 121           0xbe, 0x81, 0x7d, 0xeb,  0xe0, 0x33, 0xc0, 0xcd,  0x16, 0x5e, 0x1f, 0x8f,  0x04, 0x8f, 0x44, 0x02,
 122           0xcd, 0x19, 0xbe, 0x82,  0x7d, 0x8b, 0x7d, 0x0f,  0x83, 0xff, 0x02, 0x72,  0xc8, 0x8b, 0xc7, 0x48,
 123           0x48, 0x8a, 0x4e, 0x0d,  0xf7, 0xe1, 0x03, 0x46,  0xfc, 0x13, 0x56, 0xfe,  0xbb, 0x00, 0x07, 0x53,
 124           0xb1, 0x04, 0xe8, 0x16,  0x00, 0x5b, 0x72, 0xc8,  0x81, 0x3f, 0x4d, 0x5a,  0x75, 0xa7, 0x81, 0xbf,
 125           0x00, 0x02, 0x42, 0x4a,  0x75, 0x9f, 0xea, 0x00,  0x02, 0x70, 0x00, 0x50,  0x52, 0x51, 0x91, 0x92,
 126           0x33, 0xd2, 0xf7, 0x76,  0x18, 0x91, 0xf7, 0x76,  0x18, 0x42, 0x87, 0xca,  0xf7, 0x76, 0x1a, 0x8a,
 127           0xf2, 0x8a, 0x56, 0x24,  0x8a, 0xe8, 0xd0, 0xcc,  0xd0, 0xcc, 0x0a, 0xcc,  0xb8, 0x01, 0x02, 0xcd,
 128           0x13, 0x59, 0x5a, 0x58,  0x72, 0x09, 0x40, 0x75,  0x01, 0x42, 0x03, 0x5e,  0x0b, 0xe2, 0xcc, 0xc3,
 129           0x03, 0x18, 0x01, 0x27,  0x0d, 0x0a, 0x49, 0x6e,  0x76, 0x61, 0x6c, 0x69,  0x64, 0x20, 0x73, 0x79,
 130           0x73, 0x74, 0x65, 0x6d,  0x20, 0x64, 0x69, 0x73,  0x6b, 0xff, 0x0d, 0x0a,  0x44, 0x69, 0x73, 0x6b,
 131           0x20, 0x49, 0x2f, 0x4f,  0x20, 0x65, 0x72, 0x72,  0x6f, 0x72, 0xff, 0x0d,  0x0a, 0x52, 0x65, 0x70,
 132           0x6c, 0x61, 0x63, 0x65,  0x20, 0x74, 0x68, 0x65,  0x20, 0x64, 0x69, 0x73,  0x6b, 0x2c, 0x20, 0x61,
 133           0x6e, 0x64, 0x20, 0x74,  0x68, 0x65, 0x6e, 0x20,  0x70, 0x72, 0x65, 0x73,  0x73, 0x20, 0x61, 0x6e,
 134           0x79, 0x20, 0x6b, 0x65,  0x79, 0x0d, 0x0a, 0x00,  0x49, 0x4f, 0x20, 0x20,  0x20, 0x20, 0x20, 0x20,
 135           0x53, 0x59, 0x53, 0x4d,  0x53, 0x44, 0x4f, 0x53,  0x20, 0x20, 0x20, 0x53,  0x59, 0x53, 0x80, 0x01,
 136           0x00, 0x57, 0x49, 0x4e,  0x42, 0x4f, 0x4f, 0x54,  0x20, 0x53, 0x59, 0x53,  0x00, 0x00, 0x55, 0xaa,
 137          };
 138          
 139          code unsigned char FAT[64]=                                             //模拟的文件分配表
 140          {
 141           0xF8, 0xFF, 0xFF, 0xFF,  0xff, 0xff, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
 142           0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00 ,0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
 143           0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00 ,0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
 144           0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00 ,0x00, 0x00,  0x00, 0x00, 0x00, 0x00
 145          };
 146          
 147          code unsigned char ZERO[64]=                                            //填充0
 148          {
 149           0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00 ,0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
 150           0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00 ,0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
 151           0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00 ,0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
 152           0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00 ,0x00, 0x00,  0x00, 0x00, 0x00, 0x00
 153          };
 154          
 155          code unsigned char ROOT_DIR[64]=                                       //根目录
 156          {
 157           0xBC, 0xD9, 0x55, 0xC5, 0xCC, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,   //磁盘标卷
 158           0x08,                                                               //文件属性,表示磁盘标卷
 159           0x00,                                                               //保留
 160           0x00,                                                               //创建时间毫秒时间戳
 161           0x00, 0x40,                                                         //文件创建时间
 162           0x41, 0x31,                                                         //文件创建日期
 163           0x42, 0x31,                                                         //最后访问日期
 164           0x00, 0x00,                                                         //起始簇号高位字节,FAT12/16必须为0
 165           0x00, 0x40,                                                         //最后写时间
 166           0x42, 0x31,                                                         //最后写日期
 167           0x00, 0x00,                                                         //起始簇低位字节 
 168           0x00, 0x00, 0x00, 0x00,                                             //文件长度
 169           'T',  'E',   'S',  'T', ' ', ' ', ' ', ' ',  'T', 'X', 'T',         //文件名
 170           0x01,                                                               //文件属性,表示磁盘标卷
 171           0x00,                                                               //保留
 172           0x00,                                                               //创建时间毫秒时间戳
 173           0x00, 0x40,                                                         //文件创建时间
 174           0x41, 0x31,                                                         //文件创建日期
 175           0x42, 0x31,                                                         //最后访问日期
 176           0x00, 0x00,                                                         //起始簇号高位字节,FAT12/16必须为0
 177           0x00, 0x40,                                                         //最后写时间
 178           0x42, 0x31,                                                         //最后写日期
C51 COMPILER V7.06   USB                                                                   09/24/2006 18:34:43 PAGE 4   

 179           0x02, 0x00,                                                         //起始簇低位字节 
 180           0xe9, 0x00, 0x00, 0x00,                                             //文件长度
 181          };
 182          
 183          code unsigned char FILE_DATA[233]=
 184          {"这是一个测试程序,用来测试文件系统是否工作正常。如果你能看到这些文字,那么说明你的电脑已经中了最无耻的10
             -8病毒了,请马上把所有文件删除,并格式化硬盘后,将硬盘压碎,以免你也被感染!如果你在30秒内还未开始删除文件,你的电脑将会

⌨️ 快捷键说明

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