📄 isr.lst
字号:
C51 COMPILER V6.20c ISR 05/19/2003 01:05:01 PAGE 1
C51 COMPILER V6.20c, COMPILATION OF MODULE ISR
OBJECT MODULE PLACED IN ISR.OBJ
COMPILER INVOKED BY: E:\WIN98\HARDWARE\KEILC\C51\BIN\C51.EXE ISR.C DB OE SMALL ROM(LARGE)
stmt level source
1 #include "stdio.h"
2 #include "HAL.H"
3 //#include "USBD12.H"
4 #include "SMPro.H"
5 //#include "USB110.H"
6 #include "USB.H"
7 #include "VDOR.H"
8 #include "Isp1581.h"
9 #include "main.h"
10 #include "Isr.h"
11 #include "Iso.h"
12 #include "Hal4sys.h"
13 /*
14 //*************************************************************************
15 // Public static data
16 //*************************************************************************
17 */
18
19 extern ZBOARDFLAGS bZBoardFlags;
20 extern CONTROL_XFER ControlData;
21 extern GLOBE_VARIABLE globe_variable;
22 extern IO_REQUEST idata ioRequest;
23 unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
24 /* ISR static vars */
25 unsigned long lClockTicks = 0;
26
27 /*
28 void ISR_Timer2(void) interrupt 5
29 {
30 }
31
32 void ISR_COMM(void) interrupt 4
33 {
34 }
35
36 void ISR_Timer1(void) interrupt 3
37 {
38 }
39
40 void ISR_INT1(void) interrupt 2
41 {
42 }
43 */
44 void ISR_Timer0(void) interrupt 1
45 {
46 1 DISABLE_INTERRUPTS;
47 1 lClockTicks ++;
48 1 bZBoardFlags.bits.bTimer = 1;
49 1 ENABLE_INTERRUPTS;
50 1 }
51
52
53 void ISR_INT0(void) interrupt 0
54 {
55 1 DISABLE_INTERRUPTS;
C51 COMPILER V6.20c ISR 05/19/2003 01:05:01 PAGE 2
56 1 ISRx_FN_USB();
57 1 ENABLE_INTERRUPTS;
58 1 }
59
60 void ISRx_FN_USB()
61 {
62 1 //unsigned int nST;
63 1 USHORT int_low, int_high;
64 1 unsigned char nosetup;
65 1 //bZBoardFlags.bits.bIN_ISR = 1;
66 1 bZBoardFlags.bits.At_IRQL1 = 1;
67 1
68 1 int_low = ISP1581_ReadInterruptRegisterLow();
69 1 int_high = ISP1581_ReadInterruptRegisterHigh();
70 1 if(int_low != 0 || int_high != 0)
71 1 {
72 2 if(int_low & int_busreset)
73 2 {
74 3 ISP1581_IntClearl(int_busreset);
75 3 if(int_low & int_hs_stat)
76 3 {
77 4 bZBoardFlags.bits.ConnectSpeed = HighSpeed;
78 4 bZBoardFlags.bits.bBus_Reset = 1;
79 4 int_low &= ~int_hs_stat;
80 4 ISP1581_IntClearl(int_hs_stat);
81 4
82 4 }
83 3 else
84 3 {
85 4 bZBoardFlags.bits.ConnectSpeed = FullSpeed;
86 4 bZBoardFlags.bits.bBus_Reset = 1;
87 4 MCU_LED1 = 1;
88 4 }
89 3 }
90 2 if(int_low & int_hs_stat)
91 2 {
92 3 ISP1581_IntClearl(int_hs_stat);
93 3 if(bZBoardFlags.bits.ConnectSpeed == FullSpeed)
94 3 {
95 4 bZBoardFlags.bits.ConnectSpeed = HighSpeed;
96 4 bZBoardFlags.bits.bBus_Reset = 1;
97 4 MCU_LED1 = 0;
98 4 }
99 3 }
100 2 else if(int_low & int_susp)
101 2 {Isr_SuspendChange();}
102 2 else if(int_low & int_resume)
103 2 {Isr_Resume();}
104 2 else if(int_low & int_dma)
105 2 {Isr_DmaEot();}
106 2 else if(int_low & (int_sof|int_psof))
107 2 {Isr_SOF();}
108 2 else {
109 3 if(int_low & int_ep0set)
110 3 {nosetup = 0x0;}
111 3 else
112 3 {nosetup = 0x1;}
113 3 if(int_low & int_ep1rx)
114 3 Isr_Ep01rxDone();
115 3 if(int_low & int_ep1tx)
116 3 Isr_Ep01txDone();
117 3 if(int_low & int_ep2rx)
C51 COMPILER V6.20c ISR 05/19/2003 01:05:01 PAGE 3
118 3 Isr_Ep02rxDone();
119 3 if(int_low & int_ep2tx)
120 3 Isr_Ep02txDone();
121 3 if(int_high & int_ep3rx)
122 3 Isr_Ep03rxDone();
123 3 if(int_high & int_ep3tx)
124 3 Isr_Ep03txDone();
125 3 // *************************** Control pipe *******************************
126 3 if(int_low & int_ep0tx)
127 3 Isr_Ep00TxDone(nosetup);
128 3
129 3 if(int_low & int_ep0rx) /*Keep Control Out of EP0 at Highest priority*/
130 3 Isr_Ep00RxDone(nosetup);
131 3
132 3 if(nosetup == 0)
133 3 Isr_EP0Setup();
134 3 //**************************** not used endpoints*************************
135 3 if(int_high & int_ep4rx)
136 3 Isr_Ep04rxDone();
137 3 if(int_high & int_ep4tx)
138 3 Isr_Ep04txDone();
139 3 }
140 2
141 2 }
142 1 bZBoardFlags.bits.At_IRQL1 = 0;
143 1
144 1 }
145 ///////////////////////////////////////////////////////////////////////////
146 void Isr_SuspendChange(void)
147 {
148 1 ISP1581_IntClearl(int_susp);
149 1 ISP1581_GoSuspend();
150 1 }
151
152 void Isr_Resume(void)
153 {
154 1 ISP1581_UnlockDevice();
155 1 ISP1581_SendResume();
156 1 ISP1581_IntClearl(int_resume);
157 1 }
158
159 void Isr_DmaEot(void)
160 {
161 1 unsigned short dmaeot_reason;// dma_width16, isp1581_dma_counter_remains;
162 1 unsigned int c;
163 1 dmaeot_reason = ISP1581_GetDMAInt();
164 1 ISP1581_SetDMAInt(dmaeot_reason);//clear DMA interrupt ;
165 1 ISP1581_IntClearl(int_dma);
166 1
167 1 //CPLD_ctl(dmactl_stop);
168 1 //ISP1581_SetDMACMD(dmacmd_reset);
169 1 //ISP1581_SetDMAIntMask(0);
170 1 //c = ISP1581_GetIntEnableLow();
171 1 //ISP1581_SetIntEnableLow(c|bulkinendpointinterrupt|bulkoutendpointinterrupt);
172 1
173 1 //清除中断标志
174 1
175 1 bZBoardFlags.bits.dma_state = DMA_IDLE;
176 1 }
*** WARNING C280 IN LINE 162 OF ISR.C: 'c': unreferenced local variable
177
178 //true iso
C51 COMPILER V6.20c ISR 05/19/2003 01:05:01 PAGE 4
179 void Isr_SOF(void)
180 {
181 1 ISP1581_IntClearl(int_sof|int_psof);
182 1 }
183
184 void Isr_EP0Setup(void)
185 {
186 1 // Getting Setup Packet
187 1 ISP1581_IntClearl(int_ep0set);
188 1 SetupToken_Handler();
189 1 }
190 void Isr_Ep00RxDone(unsigned char nosetup)
191 {
192 1 UCHAR i;
193 1 unsigned short len;
194 1
195 1 //ISP1581_IntClearl(int_ep0rx);
196 1 switch (bZBoardFlags.bits.DCP_state)
197 1 {
198 2 case USBFSM4DCP_DATAOUT:
199 2
200 2 if(ControlData.wLength >= ControlData.wCount)
201 2 len = ControlData.wLength - ControlData.wCount;
202 2 else
203 2 len = 0x0;
204 2
205 2 i =ISP1581_ReadControlEndpoint(ControlData.dataBuffer + ControlData.wCount, len);
206 2 ControlData.wCount += i;
207 2
208 2 if(ControlData.wCount <= ControlData.wLength && i <= EP0_PACKET_SIZE)
209 2 {
210 3 bZBoardFlags.bits.CONTROL_HANDLE_DONE = 1;
211 3 bZBoardFlags.bits.DCP_state = USBFSM4DCP_REQUESTPROC;
212 3 }
213 2 else // too much data out than expected
214 2 {
215 3 if(nosetup)
216 3 {
217 4 ISP1581_StallEP0InControlWrite();
218 4 bZBoardFlags.bits.DCP_state = USBFSM4DCP_STALL;
219 4 }
220 3 }
221 2 ISP1581_IntClearl(int_ep0rx);
222 2 break;
223 2 case USBFSM4DCP_CONTROLREADHANDSHAKE:
224 2 bZBoardFlags.bits.DCP_state = USBFSM4DCP_IDLE;
225 2 ISP1581_IntClearl(int_ep0rx);
226 2 break;
227 2 case USBFSM4DCP_IDLE:
228 2 bZBoardFlags.bits.DCP_state = USBFSM4DCP_IDLE;
229 2 if(nosetup)
230 2 {//MCU_LED0 = 0;
231 3 ISP1581_IntClearl(int_ep0rx);}
232 2 break;
233 2 case USBFSM4DCP_STALL:
234 2 if(nosetup)
235 2 ISP1581_IntClearl(int_ep0rx);
236 2 break;
237 2 default:
238 2 if(nosetup)
239 2 {
240 3
C51 COMPILER V6.20c ISR 05/19/2003 01:05:01 PAGE 5
241 3 ISP1581_StallEP0InControlWrite();
242 3 bZBoardFlags.bits.DCP_state = USBFSM4DCP_STALL;
243 3 }
244 2 break;
245 2 }
246 1 }
247 void Isr_Ep00TxDone(unsigned char nosetup)
248 {
249 1 short i;
250 1 ISP1581_IntClearl(int_ep0tx);
251 1 switch (bZBoardFlags.bits.DCP_state)
252 1 {
253 2 case USBFSM4DCP_CONTROLREADHANDSHAKE:
254 2 ISP1581_ControlReadHandshake();
255 2 bZBoardFlags.bits.DCP_state = USBFSM4DCP_CONTROLREADHANDSHAKE;
256 2 break;
257 2 case USBFSM4DCP_CONTROLWRITEHANDSHAKE:
258 2 bZBoardFlags.bits.DCP_state = USBFSM4DCP_IDLE;
259 2 break;
260 2 case USBFSM4DCP_DATAIN:
261 2 i = ControlData.wLength - ControlData.wCount;
262 2 if( i >= EP0_PACKET_SIZE)
263 2 {
264 3 ISP1581_WriteControlEndpoint(ControlData.pData + ControlData.wCount, EP0_PACKET_SIZE);
265 3 ControlData.wCount += EP0_PACKET_SIZE;
266 3 bZBoardFlags.bits.DCP_state = USBFSM4DCP_DATAIN;
267 3 }
268 2 else if( i != 0)
269 2 {
270 3 ISP1581_WriteControlEndpoint(ControlData.pData + ControlData.wCount, i);
271 3 ControlData.wCount += i;
272 3 bZBoardFlags.bits.DCP_state = USBFSM4DCP_CONTROLREADHANDSHAKE;
273 3 }
274 2 else if (i == 0)
275 2 {
276 3 ISP1581_WriteControlEndpoint(0, 0);
277 3 bZBoardFlags.bits.DCP_state = USBFSM4DCP_CONTROLREADHANDSHAKE;
278 3 }
279 2 break;
280 2 case USBFSM4DCP_STALL:
281 2 bZBoardFlags.bits.DCP_state = USBFSM4DCP_IDLE;
282 2 break;
283 2 case USBFSM4DCP_IDLE:
284 2 //MCU_LED0=0;
285 2 break;
286 2 case USBFSM4DCP_REQUESTPROC:
287 2
288 2 break;
289 2 case USBFSM4DCP_SETUPPROC:
290 2
291 2 break;
292 2 case USBFSM4DCP_DATAOUT:
293 2
294 2 break;
295 2 default:
296 2 // do nothing, maybe just 1st nak for control in.
297 2 if(nosetup)
298 2 {
299 3 //MCU_LED0=0;
300 3 ISP1581_StallEP0InControlRead();
301 3 bZBoardFlags.bits.DCP_state = USBFSM4DCP_STALL;
302 3 }
C51 COMPILER V6.20c ISR 05/19/2003 01:05:01 PAGE 6
303 2 break;
304 2
305 2 }
306 1 }
307
308 void Isr_Ep01rxDone(void)
309 {
310 1 unsigned short len;
311 1 ISP1581_IntClearl(int_ep1rx);
312 1 len= ISP1581_ReadBulkEndpoint(EPINDEX4EP01OUT,GenEpBuf,EP1_PACKET_SIZE);
313 1 }
314 void Isr_Ep01txDone(void)
315 {
316 1 ISP1581_IntClearl(int_ep1tx);
317 1 }
318 void Isr_Ep02rxDone(void)
319 {
320 1 unsigned short len;
321 1 ISP1581_IntClearl(int_ep2rx);
322 1 len= ISP1581_ReadBulkEndpoint(EPINDEX4EP02OUT,GenEpBuf,maxepsize_FS);
323 1
324 1 }
325 void Isr_Ep02txDone(void)
326 {
327 1 ISP1581_IntClearl(int_ep2tx);
328 1 }
329 void Isr_Ep03rxDone(void)
330 {
331 1 ISP1581_IntClearh(int_ep3rx);
332 1 }
333 void Isr_Ep03txDone(void)
334 {
335 1 ISP1581_IntClearh(int_ep3tx);
336 1 }
337 void Isr_Ep04rxDone(void)
338 {
339 1 unsigned short len;
340 1 ISP1581_IntClearh(int_ep4rx);
341 1 len= ISP1581_ReadBulkEndpoint(EPINDEX4EP04OUT,GenEpBuf,EP4_PACKET_SIZE);
342 1 ioRequest.bCommand=GenEpBuf[0];
343 1 bZBoardFlags.bits.bLED = 1;
344 1
345 1 }
346 void Isr_Ep04txDone(void)
347 {
348 1 ISP1581_IntClearh(int_ep4tx);
349 1 }
350
351
352 ///////////////////////////////////////////////////////////////////////////
353
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1011 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 19
IDATA SIZE = 64 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V6.20c ISR 05/19/2003 01:05:01 PAGE 7
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -