📄 periph.lst
字号:
242 3 // Is this an upload command ?
243 3 if(SETUPDAT[0] == VR_UPLOAD)//信号从单片机到计算机
244 3 {
245 4 while(len) // Move requested data through EP0IN
246 4
247 4 //把请求的数据通过EP0IN传给计算机
248 4 { // one packet at a time.一次一包数据。
249 5 if(len < 64)
250 5 bc = len; //把LEN的值传给BC
251 5 else
252 5 bc = 64;
253 5 // Is this a RAM upload ?
254 5 if(SETUPDAT[1] == ZSUSB20DDB_VENDOR_REQUEST_SRAM_ACCESS)//如果是SRAM通道
255 5 {
256 6 for(i=0; i<bc; i++)
257 6 *(EP0BUF+i) = *((BYTE xdata *)addr+i);//意思 是把SRAM里的数据通过EP0BUF传给计算机
258 6 }
259 5 else
260 5 {
261 6 EEPROMRead(addr,bc,(WORD)EP0BUF);//否则调用EEPROMRead函数。把EEPROM里的数据给计算机
262 6 }
263 5 EP0BCH = 0;
264 5 EP0BCL = (BYTE)bc; // Arm endpoint,表示要传输的数据长度。
265 5 addr += bc; //每次发送64个字,地址增加
266 5 len -= bc; //每次发送64个字,剩余的数据减小。
267 5
268 5 while(EP0CS & bmEPBUSY); //如果数据没有发送完,就等待。
269 5 }
270 4 }
271 3 // Is this a download command ?
272 3 else if(SETUPDAT[0] == VR_DOWNLOAD) //信号从计算机到单片机
273 3 {
274 4 while(len) // Move new data through EP0OUT
275 4 { // one packet at a time.
276 5 // Arm endpoint - do it here to clear (after sud avail)
277 5 EP0BCH = 0;
278 5 EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
279 5 //使OUT端点有效,表示主机可以发送数据了
280 5
281 5 while(EP0CS & bmEPBUSY);
282 5 //等待主机发送数据
283 5
284 5 bc = EP0BCL; // Get the new bytecount//数据的长度保存在EP0BCL中。
285 5 // Is this a RAM download ?
286 5 if(SETUPDAT[1] == ZSUSB20DDB_VENDOR_REQUEST_SRAM_ACCESS)
287 5 {
288 6 for(i=0; i<bc; i++)
289 6 *((BYTE xdata *)addr+i) = *(EP0BUF+i);
290 6 }
291 5 else
292 5 EEPROMWrite(addr,bc,(WORD)EP0BUF);
293 5 addr += bc;
294 5 len -= bc;
295 5 }
296 4 }
297 3 break;
298 3 }
299 2
300 2
301 2
302 2 default:return(TRUE);
303 2 }
C51 COMPILER V7.09 PERIPH 04/03/2007 16:19:05 PAGE 6
304 1 return(FALSE);
305 1
306 1
307 1
308 1
309 1 }
310
311 //-----------------------------------------------------------------------------
312 // USB Interrupt Handlers
313 // The following functions are called by the USB interrupt jump table.
314 //-----------------------------------------------------------------------------
315
316 // Setup Data Available Interrupt Handler
317 void ISR_Sudav(void) interrupt 0
318 {
319 1 GotSUD = TRUE; // Set flag
320 1 EZUSB_IRQ_CLEAR();
321 1 USBIRQ = bmSUDAV; // Clear SUDAV IRQ
322 1 }
323
324 // Setup Token Interrupt Handler
325 void ISR_Sutok(void) interrupt 0
326 {
327 1 EZUSB_IRQ_CLEAR();
328 1 USBIRQ = bmSUTOK; // Clear SUTOK IRQ
329 1 }
330
331 void ISR_Sof(void) interrupt 0
332 {
333 1 EZUSB_IRQ_CLEAR();
334 1 USBIRQ = bmSOF; // Clear SOF IRQ
335 1 }
336
337 void ISR_Ures(void) interrupt 0
338 {
339 1 // whenever we get a USB reset, we should revert to full speed mode
340 1 pConfigDscr = pFullSpeedConfigDscr;
341 1 ((CONFIGDSCR xdata *) pConfigDscr)->type = CONFIG_DSCR;
342 1 pOtherConfigDscr = pHighSpeedConfigDscr;
343 1 ((CONFIGDSCR xdata *) pOtherConfigDscr)->type = OTHERSPEED_DSCR;
344 1
345 1 EZUSB_IRQ_CLEAR();
346 1 USBIRQ = bmURES; // Clear URES IRQ
347 1 }
348
349 void ISR_Susp(void) interrupt 0
350 {
351 1 Sleep = TRUE;
352 1 EZUSB_IRQ_CLEAR();
353 1 USBIRQ = bmSUSP;
354 1 }
355
356 void ISR_Highspeed(void) interrupt 0
357 {
358 1 if (EZUSB_HIGHSPEED())
359 1 {
360 2 pConfigDscr = pHighSpeedConfigDscr;
361 2 ((CONFIGDSCR xdata *) pConfigDscr)->type = CONFIG_DSCR;
362 2 pOtherConfigDscr = pFullSpeedConfigDscr;
363 2 ((CONFIGDSCR xdata *) pOtherConfigDscr)->type = OTHERSPEED_DSCR;
364 2 }
365 1
C51 COMPILER V7.09 PERIPH 04/03/2007 16:19:05 PAGE 7
366 1 EZUSB_IRQ_CLEAR();
367 1 USBIRQ = bmHSGRANT;
368 1 }
369 void ISR_Ep0ack(void) interrupt 0
370 {
371 1 }
372 void ISR_Stub(void) interrupt 0
373 {
374 1 }
375 void ISR_Ep0in(void) interrupt 0
376 {
377 1 }
378 void ISR_Ep0out(void) interrupt 0
379 {
380 1 }
381 void ISR_Ep1in(void) interrupt 0
382 {
383 1 }
384 void ISR_Ep1out(void) interrupt 0
385 {
386 1 }
387 void ISR_Ep2inout(void) interrupt 0
388 {
389 1 }
390 void ISR_Ep4inout(void) interrupt 0
391 {
392 1 }
393 void ISR_Ep6inout(void) interrupt 0
394 {
395 1 }
396 void ISR_Ep8inout(void) interrupt 0
397 {
398 1 }
399 void ISR_Ibn(void) interrupt 0
400 {
401 1 }
402 void ISR_Ep0pingnak(void) interrupt 0
403 {
404 1 }
405 void ISR_Ep1pingnak(void) interrupt 0
406 {
407 1 }
408 void ISR_Ep2pingnak(void) interrupt 0
409 {
410 1 }
411 void ISR_Ep4pingnak(void) interrupt 0
412 {
413 1 }
414 void ISR_Ep6pingnak(void) interrupt 0
415 {
416 1 }
417 void ISR_Ep8pingnak(void) interrupt 0
418 {
419 1 }
420 void ISR_Errorlimit(void) interrupt 0
421 {
422 1 }
423 void ISR_Ep2piderror(void) interrupt 0
424 {
425 1 }
426 void ISR_Ep4piderror(void) interrupt 0
427 {
C51 COMPILER V7.09 PERIPH 04/03/2007 16:19:05 PAGE 8
428 1 }
429 void ISR_Ep6piderror(void) interrupt 0
430 {
431 1 }
432 void ISR_Ep8piderror(void) interrupt 0
433 {
434 1 }
435 void ISR_Ep2pflag(void) interrupt 0
436 {
437 1 }
438 void ISR_Ep4pflag(void) interrupt 0
439 {
440 1 }
441 void ISR_Ep6pflag(void) interrupt 0
442 {
443 1 }
444 void ISR_Ep8pflag(void) interrupt 0
445 {
446 1 }
447 void ISR_Ep2eflag(void) interrupt 0
448 {
449 1 }
450 void ISR_Ep4eflag(void) interrupt 0
451 {
452 1 }
453 void ISR_Ep6eflag(void) interrupt 0
454 {
455 1 }
456 void ISR_Ep8eflag(void) interrupt 0
457 {
458 1 }
459 void ISR_Ep2fflag(void) interrupt 0
460 {
461 1 }
462 void ISR_Ep4fflag(void) interrupt 0
463 {
464 1 }
465 void ISR_Ep6fflag(void) interrupt 0
466 {
467 1 }
468 void ISR_Ep8fflag(void) interrupt 0
469 {
470 1 }
471 void ISR_GpifComplete(void) interrupt 0
472 {
473 1 }
474 void ISR_GpifWaveform(void) interrupt 0
475 {
476 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 788 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 9
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 + -