?? usb.lst
字號:
C51 COMPILER V7.06 USB 03/03/2006 14:04:25 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE USB
OBJECT MODULE PLACED IN USB.OBJ
COMPILER INVOKED BY: C:\Keil\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 03/03/2006 14:04:25 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 03/03/2006 14:04:25 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,
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 0xC2, 0xC3, 0xD3, 0xCE, 0xB5, 0xBC, 0xB2, 0xA5, 0xBB, 0xFA, 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, //最后訪問日期
177 0x00, 0x40, //最后寫時間
178 0x42, 0x31, //最后寫日期
C51 COMPILER V7.06 USB 03/03/2006 14:04:25 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 + -