📄 usb.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 + -