📄 isr.lst
字号:
C51 COMPILER V7.00 ISR 12/15/2004 13:45:56 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE ISR
OBJECT MODULE PLACED IN ISR.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ISR.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "declare.h"
2 #include "isr.h"
3
4 //#pragma disable
5 void extern0_ISR(void) interrupt 0
6 {
7 1 d12comm(0xf4);
8 1 s = d12read();
9 1 d12read();
10 1
11 1 if (sb7 == 1) //SuspendChange
12 1 {
13 2 }
14 1 else if (sb6 == 1) //BusReset
15 1 {
16 2 Configured = 0;
17 2 }
18 1 else if (sb0 == 1) //EP0Out
19 1 {
20 2 d12comm(0x40);
21 2 d12read();
22 2 SetupPacketReceived();
23 2 }
24 1 else if (sb1 == 1) //EP0In
25 1 {
26 2 d12comm(0x41);
27 2 d12read();
28 2
29 2 if (SaveLength != 0)
30 2 {
31 3 PTR = SavePTR;
32 3 SendNextPieceOfDescriptor(SaveLength);
33 3 }
34 2 }
35 1 else if (sb2 == 1) //EP1Out
36 1 {
37 2 d12comm(0x42);
38 2 d12read();
39 2 }
40 1 else if (sb3 == 1) //EP1In
41 1 {
42 2 d12comm(0x43);
43 2 d12read();
44 2
45 2 IsListening = 1;
46 2
47 2 if (mode == D12TEST) Output(Counter);
48 2 }
49 1 else if (sb4 == 1) //EP2Out
50 1 {
51 2 d12comm(0x44);
52 2 d12read();
53 2 }
54 1 else if (sb5 == 1) //EP2In
55 1 {
C51 COMPILER V7.00 ISR 12/15/2004 13:45:56 PAGE 2
56 2 d12comm(0x45);
57 2 d12read();
58 2 }
59 1 else //SOF
60 1 {
61 2 if (Configured == 1)
62 2 {
63 3
64 3 if (--MSecCounter == 0)
65 3 {
66 4 MSecCounter = 125;
67 4 Counter++;
68 4
69 4 ReplyCount = 1;
70 4 ReplyBuffer[0] = Counter;
71 4
72 4 IsListening = 0;
73 4
74 4 d12comm(0x03);
75 4
76 4 SendReplyBuffer();
77 4 }
78 3
79 3 }
80 2 }
81 1 }
82
83 void timer0_ISR (void) interrupt 1{} /* not used */
84 void extern1_ISR(void) interrupt 2{} /* not used */
85 void timer1_ISR (void) interrupt 3{} /* not used */
86 void serial_ISR (void) interrupt 4{} /* not used */
87
88 void SetupPacketReceived(void)
89 {
90 1 SaveLength = 0;
91 1
92 1 d12comm(0x00);
93 1
94 1 d12comm (0xf0);
95 1 SetupDataResv = d12read();
96 1 SetupDataLen = d12read();
97 1 RequestType = d12read();
98 1 Request = d12read();
99 1 wValueLow = d12read();
100 1 wValueHigh = d12read();
101 1 wIndexLow = d12read();
102 1 wIndexHigh = d12read();
103 1 wLengthLow = d12read();
104 1 wLengthHigh = d12read();
105 1 /*
106 1 #define tttt 0
107 1 if (++temp == tttt)//////////////////////////////////////////////////////////////////////////////////
108 1 {
109 1 Output(SetupDataLen);
110 1 delay(4000);
111 1 Output(RequestType);
112 1 delay(4000);
113 1 Output(Request);
114 1 delay(4000);
115 1 Output(wValueLow);
116 1 delay(4000);
117 1 Output(wValueHigh);
C51 COMPILER V7.00 ISR 12/15/2004 13:45:56 PAGE 3
118 1 delay(4000);
119 1 Output(wIndexLow);
120 1 delay(4000);
121 1 Output(wIndexHigh);
122 1 delay(4000);
123 1 Output(wLengthLow);
124 1 delay(4000);
125 1 Output(wLengthHigh);
126 1 delay(4000);
127 1 }*/
128 1
129 1 d12comm(0xf1);
130 1 d12comm(0xf2);
131 1 d12comm(0x01);
132 1 d12comm(0xf1);
133 1
134 1 if (SetupDataLen != 0)
135 1 {
136 2 ServiceSetupPacket();
137 2 if (STALL == 1)
138 2 {
139 3 d12comm(0x40); //SendStall
140 3 d12write(0x01);
141 3
142 3 d12comm(0x41);
143 3 d12write(0x01);
144 3 }
145 2 else
146 2 {
147 3 if (SetAddr == 1)
148 3 {
149 4 SetD12Address();
150 4 }
151 3 else if (SendData == 0)
152 3 {
153 4 HandShake();
154 4 }
155 3 else if (IsDescriptor == 0)
156 3 {
157 4 SendReplyBuffer();
158 4 }
159 3 else
160 3 {
161 4 SendDescriptor();
162 4 }
163 3 }
164 2 }
165 1 }
166
167 void SendDescriptor(void)
168 {
169 1 if (wLengthHigh == 0)
170 1 {
171 2 if (ReturnLength < wLengthLow)
172 2 {
173 3 SendNextPieceOfDescriptor(ReturnLength);
174 3 }
175 2 else
176 2 {
177 3 SendNextPieceOfDescriptor(wLengthLow);
178 3 }
179 2 }
C51 COMPILER V7.00 ISR 12/15/2004 13:45:56 PAGE 4
180 1 else
181 1 {
182 2 SendNextPieceOfDescriptor(ReturnLength);
183 2 }
184 1 }
185
186 void SendNextPieceOfDescriptor(unsigned char Len)
187 {
188 1 if (Len > EP0Size)
189 1 {
190 2 SaveLength = Len - EP0Size;
191 2 SavePTR = PTR + EP0Size;
192 2 SendPacketToD12(EP0Size);
193 2 }
194 1 else
195 1 {
196 2 SaveLength = 0;
197 2 SendPacketToD12(Len);
198 2 }
199 1 }
200
201 void SendPacketToD12(unsigned char Len)
202 {
203 1 /*
204 1 if(temp++==2)
205 1 {
206 1 Output(Len);
207 1 delay(5000);
208 1 }
209 1 *///to send but not sending
210 1 ReplyCount = Len;
211 1 if (Len != 0)
212 1 {
213 2 for (i=0;i<Len;i++)
214 2 {
215 3 ReplyBuffer[i] = *(PTR++);//CBYTE[PTR++];
216 3 }
217 2 }
218 1 SendReplyBuffer();
219 1 }
220
221 void SendReplyBuffer(void)
222 {
223 1 d12comm(0xf0);
224 1 d12write(0x00);
225 1 d12write(ReplyCount);
226 1
227 1 if (ReplyCount != 0)
228 1 {
229 2 for (i=0;i<ReplyCount;i++)
230 2 {
231 3 d12write(ReplyBuffer[i]);
232 3 ReplyBuffer[i] = 0;///////////////////////////////////////////////////////////
233 3 }
234 2 }
235 1
236 1 d12comm(0xfa);
237 1 /*
238 1 if (temp == tttt)///////////////////////////////////////////////////////////////////
239 1 {
240 1 Output(ReplyCount);
241 1 delay(4000);
C51 COMPILER V7.00 ISR 12/15/2004 13:45:56 PAGE 5
242 1 for (i=0;i<ReplyCount;i++)
243 1 {
244 1 Output(ReplyBuffer[i]);
245 1 delay(4000);
246 1 }
247 1 }
248 1 */
249 1 }
250
251 void SetD12Address(void)
252 {
253 1 d12comm(0xd0);
254 1 s = wValueLow;
255 1 sb7 = 1;
256 1 d12write(s);
257 1
258 1 d12comm(0xd8);
259 1 d12write(0x01);
260 1
261 1 if (mode == D12TEST)
262 1 {
263 2 d12comm(0xfb);
264 2 d12write(0x20);
265 2 }
266 1
267 1 HandShake();
268 1 }
269
270 void HandShake(void)
271 {
272 1 SendPacketToD12(0);
273 1 }
274
275 void Wait4D(void)
276 {
277 1 do {
278 2 d12comm(0xf4);
279 2 s = d12read();
280 2 d12read();
281 2 } while (s^0 == 0);
282 1
283 1 d12comm(0x00);
284 1
285 1 d12comm(0xf0);
286 1 d12read();
287 1 d12read();
288 1
289 1
290 1 i = d12read();
291 1 if (i == 0xff)
292 1 {
293 2 Counter = Input();
294 2 }
295 1 else
296 1 {
297 2 Counter = i;
298 2 }
299 1
300 1
301 1
302 1 d12comm(0xf1);
303 1 d12comm(0xf2);
C51 COMPILER V7.00 ISR 12/15/2004 13:45:56 PAGE 6
304 1 d12comm(0x01);
305 1 d12comm(0xf1);
306 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 625 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 34 1
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -