📄 usb.lst
字号:
C51 COMPILER V8.02 USB 10/11/2007 16:35:10 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE USB
OBJECT MODULE PLACED IN usb.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE usb.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<USB.H>
3 #include<D12.H>
4 #include<MASS_STORAGE.H>
5 #include<serial.h>
6
7 #define USB_COMMAND_ADD 1
8 #define USB_DATA_ADD 0
9
10 #define USB_DATA P0
11 sbit USB_A0= P3^5;
12 sbit USB_WR= P3^6;
13 sbit USB_RD= P3^7;
14 sbit USB_INT= P3^2;
15 //加上片选
16 sbit USB_CS=P1^6;
17 #define ENDPOINT_NUMBER 2
18 #define MAX_CONTROL_DATA_SIZE 16
19 #define MAX_LUN 0
20 #define MAX_BULK_DATA_SIZE 64
21
22 CONTROL_DATA_BUFF Control_Data;
23
24 unsigned char idata buffer[64];
25
26 CBW cbw;
27 CSW csw;
28
29
30 union
31 {
32 unsigned char Register;
33 struct
34 {
35 unsigned char Command :1;
36 unsigned char Data :1;
37 }Status;
38 }SCSI;
39
40 unsigned char *pData;
41
42 code unsigned char DISK_INF[36]= //磁盘信息
43 {
44 0x00,
45 0x00,
46 0x02,
47 0x02,
48 0x1F,
49 0x00,0x00,0x00,
50 0xCC,0xB7,0XB3,0xAC,0xD7,0xD4,0xBC,0xBA,
51 0xD7,0xF6,0xB5,0xC4,0xBC,0xD9,0x55,0xC5,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
52 0x31,0x2E,0x30,0x31
53 };
54
55 code unsigned char DISK_CAPACITY[8]= //磁盘容量
C51 COMPILER V8.02 USB 10/11/2007 16:35:10 PAGE 2
56 {
57 0x00,0x01,0xff,0x00,
58 0x00,0x00,0x02,0x00
59 };
60
61 code unsigned char SENSE[0x12]= //模式探测返回数据
62 {
63 0x70, 0x00, 0x05, 0x00, 0x00, 0x00,
64 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00
65 };
66
67 code unsigned char DBR[512]= //DOS引导记录
68 {
69 0xeb, 0x3e, 0x90, //跳转指令
70 0x4d, 0x53, 0x44, 0x4f, 0x53, 0x35, 0x2e, 0x30, //文件系统版本信息
71 0x00, 0x02, //扇区字节数
72 0x20, //每簇扇区数
73 0x01, 0x00, //保留扇区数
74 0x02, //该分区的FAT副本数
75 0xF0, 0x01, //根目录项数
76 0x00, 0x00, //小扇区数
77 0xf8, //媒体描述符
78 0x10, 0x00, //每FAT扇区数
79 0x20, 0x00, //每道扇区数
80 0x40, 0x00, //磁头数
81 0x00, 0x00, 0x00, 0x00, //隐藏扇区数
82 0x40, 0xff, 0x01, 0x00, //大扇区数
83 0x80, //磁盘驱动器参数,80表示硬盘
84 0x00, //保留
85 0x29, //扩展引导标记,0x29表示后三个区可用
-
86 0x88, 0x09, 0x71, 0x20, //标卷序列号
87 0xCC, 0xB7, 0XB3, 0xAC, 0xB5, 0xC4, 0xBC, 0xD9, 0x55, 0xC5, 0xCC, //磁盘标卷
88 0x46, 0x41, 0x54, 0x31, 0x36, 0x20, 0x20, 0x20, //文件系统类型信息
89 0xf1, 0x7d,
90 0xfa, 0x33, 0xc9, 0x8e, 0xd1, 0xbc, 0xfc, 0x7b, 0x16, 0x07, 0xbd, 0x78, 0x00, 0xc5, 0x76, 0x00,
91 0x1e, 0x56, 0x16, 0x55, 0xbf, 0x22, 0x05, 0x89, 0x7e, 0x00, 0x89, 0x4e, 0x02, 0xb1, 0x0b, 0xfc,
92 0xf3, 0xa4, 0x06, 0x1f, 0xbd, 0x00, 0x7c, 0xc6, 0x45, 0xfe, 0x0f, 0x8b, 0x46, 0x18, 0x88, 0x45,
93 0xf9, 0xfb, 0x38, 0x66, 0x24, 0x7c, 0x04, 0xcd, 0x13, 0x72, 0x3c, 0x8a, 0x46, 0x10, 0x98, 0xf7,
94 0x66, 0x16, 0x03, 0x46, 0x1c, 0x13, 0x56, 0x1e, 0x03, 0x46, 0x0e, 0x13, 0xd1, 0x50, 0x52, 0x89,
95 0x46, 0xfc, 0x89, 0x56, 0xfe, 0xb8, 0x20, 0x00, 0x8b, 0x76, 0x11, 0xf7, 0xe6, 0x8b, 0x5e, 0x0b,
96 0x03, 0xc3, 0x48, 0xf7, 0xf3, 0x01, 0x46, 0xfc, 0x11, 0x4e, 0xfe, 0x5a, 0x58, 0xbb, 0x00, 0x07,
97 0x8b, 0xfb, 0xb1, 0x01, 0xe8, 0x94, 0x00, 0x72, 0x47, 0x38, 0x2d, 0x74, 0x19, 0xb1, 0x0b, 0x56,
98 0x8b, 0x76, 0x3e, 0xf3, 0xa6, 0x5e, 0x74, 0x4a, 0x4e, 0x74, 0x0b, 0x03, 0xf9, 0x83, 0xc7, 0x15,
99 0x3b, 0xfb, 0x72, 0xe5, 0xeb, 0xd7, 0x2b, 0xc9, 0xb8, 0xd8, 0x7d, 0x87, 0x46, 0x3e, 0x3c, 0xd8,
100 0x75, 0x99, 0xbe, 0x80, 0x7d, 0xac, 0x98, 0x03, 0xf0, 0xac, 0x84, 0xc0, 0x74, 0x17, 0x3c, 0xff,
101 0x74, 0x09, 0xb4, 0x0e, 0xbb, 0x07, 0x00, 0xcd, 0x10, 0xeb, 0xee, 0xbe, 0x83, 0x7d, 0xeb, 0xe5,
102 0xbe, 0x81, 0x7d, 0xeb, 0xe0, 0x33, 0xc0, 0xcd, 0x16, 0x5e, 0x1f, 0x8f, 0x04, 0x8f, 0x44, 0x02,
103 0xcd, 0x19, 0xbe, 0x82, 0x7d, 0x8b, 0x7d, 0x0f, 0x83, 0xff, 0x02, 0x72, 0xc8, 0x8b, 0xc7, 0x48,
104 0x48, 0x8a, 0x4e, 0x0d, 0xf7, 0xe1, 0x03, 0x46, 0xfc, 0x13, 0x56, 0xfe, 0xbb, 0x00, 0x07, 0x53,
105 0xb1, 0x04, 0xe8, 0x16, 0x00, 0x5b, 0x72, 0xc8, 0x81, 0x3f, 0x4d, 0x5a, 0x75, 0xa7, 0x81, 0xbf,
106 0x00, 0x02, 0x42, 0x4a, 0x75, 0x9f, 0xea, 0x00, 0x02, 0x70, 0x00, 0x50, 0x52, 0x51, 0x91, 0x92,
107 0x33, 0xd2, 0xf7, 0x76, 0x18, 0x91, 0xf7, 0x76, 0x18, 0x42, 0x87, 0xca, 0xf7, 0x76, 0x1a, 0x8a,
108 0xf2, 0x8a, 0x56, 0x24, 0x8a, 0xe8, 0xd0, 0xcc, 0xd0, 0xcc, 0x0a, 0xcc, 0xb8, 0x01, 0x02, 0xcd,
109 0x13, 0x59, 0x5a, 0x58, 0x72, 0x09, 0x40, 0x75, 0x01, 0x42, 0x03, 0x5e, 0x0b, 0xe2, 0xcc, 0xc3,
110 0x03, 0x18, 0x01, 0x27, 0x0d, 0x0a, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x73, 0x79,
111 0x73, 0x74, 0x65, 0x6d, 0x20, 0x64, 0x69, 0x73, 0x6b, 0xff, 0x0d, 0x0a, 0x44, 0x69, 0x73, 0x6b,
112 0x20, 0x49, 0x2f, 0x4f, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0xff, 0x0d, 0x0a, 0x52, 0x65, 0x70,
113 0x6c, 0x61, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x73, 0x6b, 0x2c, 0x20, 0x61,
114 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6e,
115 0x79, 0x20, 0x6b, 0x65, 0x79, 0x0d, 0x0a, 0x00, 0x49, 0x4f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
116 0x53, 0x59, 0x53, 0x4d, 0x53, 0x44, 0x4f, 0x53, 0x20, 0x20, 0x20, 0x53, 0x59, 0x53, 0x80, 0x01,
C51 COMPILER V8.02 USB 10/11/2007 16:35:10 PAGE 3
117 0x00, 0x57, 0x49, 0x4e, 0x42, 0x4f, 0x4f, 0x54, 0x20, 0x53, 0x59, 0x53, 0x00, 0x00, 0x55, 0xaa,
118 };
119
120 code unsigned char FAT[64]= //模拟的文件分配表
121 {
122 0xF8, 0xFF, 0xFF, 0xFF, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
123 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
124 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
125 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00
126 };
127
128 code unsigned char ZERO[64]= //填充0
129 {
130 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
131 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
132 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
133 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00
134 };
135
136 code unsigned char ROOT_DIR[64]= //根目录
137 {
138 0xCC, 0xB7, 0XB3, 0xAC, 0xB5, 0xC4, 0xBC, 0xD9, 0x55, 0xC5, 0xCC,// //磁盘标卷
139 0x08, //文件属性,表示磁盘标卷
140 0x00, //保留
141 0x00, //创建时间毫秒时间戳
142 0x00, 0x40, //文件创建时间
143 0x41, 0x31, //文件创建日期
144 0x42, 0x31, //最后访问日期
145 0x00, 0x00, //起始簇号高位字节,FAT12/16必须为0
146 0x00, 0x40, //最后写时间
147 0x42, 0x31, //最后写日期
148 0x00, 0x00, //起始簇低位字节
149 0x00, 0x00, 0x00, 0x00, //文件长度
150 'T', 'E', 'S', 'T', ' ', ' ', ' ', ' ', 'T', 'X', 'T', //文件名
151 0x01, //文件属性,表示磁盘标卷
152 0x00, //保留
153 0x00, //创建时间毫秒时间戳
154 0x00, 0x40, //文件创建时间
155 0x41, 0x31, //文件创建日期
156 0x42, 0x31, //最后访问日期
157 0x00, 0x00, //起始簇号高位字节,FAT12/16必须为0
158 0x00, 0x40, //最后写时间
159 0x42, 0x31, //最后写日期
160 0x02, 0x00, //起始簇低位字节
161 0xe9, 0x00, 0x00, 0x00, //文件长度
162 };
163
164 code unsigned char FILE_DATA[233]=
165 {"这是一个测试程序,用来测试文件系统是否工作正常。如果你能看到这些文字,那么说明你的电脑已经中了最无耻的10
-8病毒了,请马上把所有文件删除,并格式化硬盘后,将硬盘压碎,以免你也被感染!如果你在30秒内还未开始删除文件,你的电脑将会
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -