📄 vend_ax.lst
字号:
259 2 {
260 3 while(len) // Move new data through EP0OUT
261 3 { // one packet at a time.
262 4 // Arm endpoint - do it here to clear (after sud avail)
263 4 EP0BCH = 0;
264 4 EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
265 4
266 4 while(EP0CS & bmEPBUSY);
267 4
268 4 bc = EP0BCL; // Get the new bytecount
269 4
270 4 // Is this a RAM download ?
271 4 if(SETUPDAT[1] == VR_RAM)
272 4 {
273 5 for(i=0; i<bc; i++)
274 5 *((BYTE xdata *)addr+i) = *(EP0BUF+i);
275 5 }
276 4 else
277 4 EEPROMWrite(addr,bc,(WORD)EP0BUF);
278 4
279 4 addr += bc;
280 4 len -= bc;
281 4 }
282 3 }
283 2 break;
284 2 }
285 1 return(FALSE); // no error; command handled OK
286 1 }
287
288 //-----------------------------------------------------------------------------
289 // USB Interrupt Handlers
290 // The following functions are called by the USB interrupt jump table.
291 //-----------------------------------------------------------------------------
292
293 // Setup Data Available Interrupt Handler
294 void ISR_Sudav(void) interrupt 0
295 {
296 1 // enable the automatic length feature of the Setup Data Autopointer
297 1 // in case a previous transfer disbaled it
298 1 SUDPTRCTL |= bmSDPAUTO;
299 1
300 1 GotSUD = TRUE; // Set flag
301 1 EZUSB_IRQ_CLEAR();
302 1 USBIRQ = bmSUDAV; // Clear SUDAV IRQ
303 1 }
C51 COMPILER V7.50 VEND_AX 06/04/2006 20:12:23 PAGE 6
304
305 // Setup Token Interrupt Handler
306 void ISR_Sutok(void) interrupt 0
307 {
308 1 EZUSB_IRQ_CLEAR();
309 1 USBIRQ = bmSUTOK; // Clear SUTOK IRQ
310 1 }
311
312 void ISR_Sof(void) interrupt 0
313 {
314 1 EZUSB_IRQ_CLEAR();
315 1 USBIRQ = bmSOF; // Clear SOF IRQ
316 1 }
317
318 void ISR_Ures(void) interrupt 0
319 {
320 1 if (EZUSB_HIGHSPEED())
321 1 {
322 2 pConfigDscr = pHighSpeedConfigDscr;
323 2 pOtherConfigDscr = pFullSpeedConfigDscr;
324 2 }
325 1 else
326 1 {
327 2 pConfigDscr = pFullSpeedConfigDscr;
328 2 pOtherConfigDscr = pHighSpeedConfigDscr;
329 2 }
330 1
331 1 EZUSB_IRQ_CLEAR();
332 1 USBIRQ = bmURES; // Clear URES IRQ
333 1 }
334
335 void ISR_Susp(void) interrupt 0
336 {
337 1 Sleep = TRUE;
338 1 EZUSB_IRQ_CLEAR();
339 1 USBIRQ = bmSUSP;
340 1 }
341
342 void ISR_Highspeed(void) interrupt 0
343 {
344 1 if (EZUSB_HIGHSPEED())
345 1 {
346 2 pConfigDscr = pHighSpeedConfigDscr;
347 2 pOtherConfigDscr = pFullSpeedConfigDscr;
348 2 }
349 1 else
350 1 {
351 2 pConfigDscr = pFullSpeedConfigDscr;
352 2 pOtherConfigDscr = pHighSpeedConfigDscr;
353 2 }
354 1
355 1 EZUSB_IRQ_CLEAR();
356 1 USBIRQ = bmHSGRANT;
357 1 }
358
359 void ISR_Ep0ack(void) interrupt 0
360 {
361 1 }
362 void ISR_Stub(void) interrupt 0
363 {
364 1 }
365 void ISR_Ep0in(void) interrupt 0
C51 COMPILER V7.50 VEND_AX 06/04/2006 20:12:23 PAGE 7
366 {
367 1 }
368 void ISR_Ep0out(void) interrupt 0
369 {
370 1 }
371 void ISR_Ep1in(void) interrupt 0
372 {
373 1 }
374 void ISR_Ep1out(void) interrupt 0
375 {
376 1 }
377 void ISR_Ep2inout(void) interrupt 0
378 {
379 1 }
380 void ISR_Ep4inout(void) interrupt 0
381 {
382 1 }
383 void ISR_Ep6inout(void) interrupt 0
384 {
385 1 }
386 void ISR_Ep8inout(void) interrupt 0
387 {
388 1 }
389 void ISR_Ibn(void) interrupt 0
390 {
391 1 }
392 void ISR_Ep0pingnak(void) interrupt 0
393 {
394 1 }
395 void ISR_Ep1pingnak(void) interrupt 0
396 {
397 1 }
398 void ISR_Ep2pingnak(void) interrupt 0
399 {
400 1 }
401 void ISR_Ep4pingnak(void) interrupt 0
402 {
403 1 }
404 void ISR_Ep6pingnak(void) interrupt 0
405 {
406 1 }
407 void ISR_Ep8pingnak(void) interrupt 0
408 {
409 1 }
410 void ISR_Errorlimit(void) interrupt 0
411 {
412 1 }
413 void ISR_Ep2piderror(void) interrupt 0
414 {
415 1 }
416 void ISR_Ep4piderror(void) interrupt 0
417 {
418 1 }
419 void ISR_Ep6piderror(void) interrupt 0
420 {
421 1 }
422 void ISR_Ep8piderror(void) interrupt 0
423 {
424 1 }
425 void ISR_Ep2pflag(void) interrupt 0
426 {
427 1 }
C51 COMPILER V7.50 VEND_AX 06/04/2006 20:12:23 PAGE 8
428 void ISR_Ep4pflag(void) interrupt 0
429 {
430 1 }
431 void ISR_Ep6pflag(void) interrupt 0
432 {
433 1 }
434 void ISR_Ep8pflag(void) interrupt 0
435 {
436 1 }
437 void ISR_Ep2eflag(void) interrupt 0
438 {
439 1 }
440 void ISR_Ep4eflag(void) interrupt 0
441 {
442 1 }
443 void ISR_Ep6eflag(void) interrupt 0
444 {
445 1 }
446 void ISR_Ep8eflag(void) interrupt 0
447 {
448 1 }
449 void ISR_Ep2fflag(void) interrupt 0
450 {
451 1 }
452 void ISR_Ep4fflag(void) interrupt 0
453 {
454 1 }
455 void ISR_Ep6fflag(void) interrupt 0
456 {
457 1 }
458 void ISR_Ep8fflag(void) interrupt 0
459 {
460 1 }
461 void ISR_GpifComplete(void) interrupt 0
462 {
463 1 }
464 void ISR_GpifWaveform(void) interrupt 0
465 {
466 1 }
467
468 void EEPROMWriteByte(WORD addr, BYTE value)
469 {
470 1 BYTE i = 0;
471 1 BYTE xdata ee_str[3];
472 1
473 1 if(DB_Addr)
474 1 ee_str[i++] = MSB(addr);
475 1
476 1 ee_str[i++] = LSB(addr);
477 1 ee_str[i++] = value;
478 1
479 1 EZUSB_WriteI2C(I2C_Addr, i, ee_str);
480 1 EZUSB_WaitForEEPROMWrite(I2C_Addr);
481 1 }
482
483
484 void EEPROMWrite(WORD addr, BYTE length, BYTE xdata *buf)
485 {
486 1 BYTE i;
487 1 for(i=0;i<length;++i)
488 1 EEPROMWriteByte(addr++,buf[i]);
489 1 }
C51 COMPILER V7.50 VEND_AX 06/04/2006 20:12:23 PAGE 9
490
491 void EEPROMRead(WORD addr, BYTE length, BYTE xdata *buf)
492 {
493 1 BYTE i = 0;
494 1 BYTE j = 0;
495 1 BYTE xdata ee_str[2];
496 1
497 1 if(DB_Addr)
498 1 ee_str[i++] = MSB(addr);
499 1
500 1 ee_str[i++] = LSB(addr);
501 1
502 1 EZUSB_WriteI2C(I2C_Addr, i, ee_str);
503 1
504 1 // for(j=0; j < length; j++)
505 1 // *(buf+j) = 0xcd;
506 1
507 1 EZUSB_ReadI2C(I2C_Addr, length, buf);
508 1 }
509
510
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1289 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 5
PDATA SIZE = ---- ----
DATA SIZE = 4 20
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 + -