📄 usbtest.lst
字号:
298 1 //check the test no
299 1 if (bTestNo != 2)
300 1 {
301 2 display_err(USBERR_WRONGTEST);
302 2 return;
303 2 }
C51 COMPILER V7.01 USBTEST 06/30/2007 11:42:51 PAGE 6
304 1
305 1 DeleteFile(*g_pData);
306 1 }
307
308 void _add_file()
309 {
310 1 u8 u8FileNo = *(g_pData+sizeof(FILESTRUCT));
311 1 //check the test no
312 1 if (bTestNo != 2)
313 1 {
314 2 display_err(USBERR_WRONGTEST);
315 2 return;
316 2 }
317 1
318 1 memcpy(&File[u8FileNo], g_pData, sizeof(FILESTRUCT));
319 1 AddFile(u8FileNo);
320 1 }
321
322 void _open_file()
323 {
324 1 //check the test no
325 1 if (bTestNo != 2)
326 1 {
327 2 display_err(USBERR_WRONGTEST);
328 2 return;
329 2 }
330 1
331 1 mmc_fopen(*g_pData);
332 1 }
333
334 void _close_file()
335 {
336 1 //check the test no
337 1 if (bTestNo != 2)
338 1 {
339 2 display_err(USBERR_WRONGTEST);
340 2 return;
341 2 }
342 1
343 1 mmc_fclose();
344 1 }
345
346 code void (*Dispatch[])() =
347 {
348 reserved,
349 _set_reg,
350 _get_reg,
351 _change_dir,
352 _read_file,
353 _write_file,
354 _delete_file,
355 _add_file, //add file & dir use the same func
356 _add_file,
357 _delete_file, //delete file & dir use the same func
358 _connect_mmc,
359 _open_file,
360 _close_file,
361 _change_dir //refresh & change_dir use the same func
362 };
363
364 /* initialize interrupt system */
365 /*
C51 COMPILER V7.01 USBTEST 06/30/2007 11:42:51 PAGE 7
366 void Init()
367 {
368
369 }
370 */
371
372 void Uninit()
373 {
374 1 EX0 = 0;
375 1 // ES0 = 0;
376 1 EIE2 &=0xfe;
377 1 }
378
379 void USB_test1(void)
380 {
381 1 CMD_HEADER *g_pCmd = (CMD_HEADER*)Ep2Buf;
382 1 bTestNo = 1;
383 1 // reset event flags
384 1 bEppflags.value = 0;
385 1
386 1 SetUSBTest1Data(&usbtest1);
387 1
388 1 IT0 = 0; //set int0 trigger mode
389 1 EX0 = 1; //ENABLE int0
390 1 EA = 1; //ENABLE interrupt system
391 1
392 1 // set timer3 interval to 1s
393 1 Timer3_INIT();
394 1
395 1 Init_D12();
396 1
397 1 D12_Connect();
398 1
399 1 while(1)
400 1 {
401 2 if (bEppflags.flags.bus_reset)
402 2 {
403 3 DISABLE_INTERRUPT;
404 3 bEppflags.flags.bus_reset = 0;
405 3 ENABLE_INTERRUPT;
406 3
407 3 // Release D12's SUSPEND pin after bus reset
408 3 D12_SUSP = D12_SUSP_SLEEP;
409 3
410 3 }
411 2 if (bEppflags.flags.suspend)
412 2 {
413 3 DISABLE_INTERRUPT;
414 3 bEppflags.flags.suspend = 0;
415 3 ENABLE_INTERRUPT;
416 3 }
417 2 if (bEppflags.flags.setup_packet)
418 2 {
419 3 DISABLE_INTERRUPT;
420 3 bEppflags.flags.setup_packet = 0;
421 3 ENABLE_INTERRUPT;
422 3 control_handler();
423 3 }
424 2
425 2 if (bEppflags.flags.ep2_out)
426 2 {
427 3 // DISABLE_INTERRUPT; //the int was disabled in ep2 out interrupt,
C51 COMPILER V7.01 USBTEST 06/30/2007 11:42:51 PAGE 8
428 3 //we need open it after process the data
429 3 bEppflags.flags.ep2_out = 0;
430 3 // process(Ep2OutLen);
431 3 ENABLE_INTERRUPT;
432 3 if (g_pCmd->wTag != USBCMD_BEGIN)
433 3 {
434 4 display_err(USBERR_WRONGTEST);
435 4 }
436 3
437 3 Dispatch[g_pCmd->bCmd]();
438 3 }
439 2
440 2 if (CheckKeyF == 1)
441 2 {
442 3 CheckKey();
443 3 CheckKeyF = 0;
444 3 }
445 2
446 2 if (Key[0].pressed == 1) //key0 set trans mode
447 2 {
448 3 if (usbtest1.bTransMode == TRANSMODE_CONTROL)
449 3 usbtest1.bTransMode = TRANSMODE_INT;
450 3 else
451 3 usbtest1.bTransMode = TRANSMODE_CONTROL;
452 3 bNeedRefresh = true;
453 3 Key[0].pressed = 0;
454 3 }
455 2 if (Key[1].pressed == 1)//key1 set auto echo
456 2 {
457 3 if (usbtest1.bAutoEcho == AUTOECHO_ON)
458 3 usbtest1.bAutoEcho = AUTOECHO_OFF;
459 3 else
460 3 usbtest1.bAutoEcho = AUTOECHO_ON;
461 3 bNeedRefresh = true;
462 3 Key[1].pressed = 0;
463 3
464 3 // D12_WriteEndpointBuffer(5, InData, 64);
465 3 }
466 2 if (Key[6].pressed == 1) //key6 clear byte count
467 2 {
468 3 usbtest1.wSendCount = 0;
469 3 usbtest1.wRecvCount = 0;
470 3 bNeedRefresh = true;
471 3 Key[6].pressed = 0;
472 3 }
473 2 if (Key[7].pressed == 1) //exit usb test1
474 2 {
475 3 Uninit();
476 3 D12_Disconnect();
477 3 bTestNo = 0;
478 3
479 3 SFRPAGE=TMR3_PAGE;
480 3 TR3=0;
481 3 SFRPAGE=CONFIG_PAGE;
482 3 ClearKey(); //清按键
483 3 Clear(0,240); //清屏幕
484 3 return;
485 3 }
486 2
487 2 if (bNeedRefresh == true || bTimerRefresh == true)
488 2 {
489 3 if (usbtest1.bAutoEcho == AUTOECHO_ON
C51 COMPILER V7.01 USBTEST 06/30/2007 11:42:51 PAGE 9
490 3 && bTimerRefresh==true)
491 3 _get_reg();
492 3
493 3 SetUSBTest1Data(&usbtest1);
494 3 bNeedRefresh = false;
495 3 bTimerRefresh = false;
496 3 }
497 2 }
498 1 }
499
500
501 void USB_test2(void)
502 {
503 1 // CMD_HEADER xdata *g_pCmd = (CMD_HEADER*)Ep2Buf;
504 1
505 1 // char Selected; //返回的目录选择项(0-12),-1表示退出MMC模块
506 1
507 1 bTestNo = 2;
508 1
509 1 // reset event flags
510 1 bEppflags.value = 0;
511 1
512 1 DEPTH=1;
513 1 Clear(0,240);
514 1 MMCDataBuf[512]=0; //缓冲区第513个字节清零,防止显示时溢出
515 1 strcpy(PATH,"路径:根目录");
516 1
517 1 //open root
518 1 CurF.firstcluster=0; //首先打开根目录(firstcluster=0判断为根目录)
519 1 CurF.attribute=0; //首先打开根目录(firstcluster=0判断为根目录)
520 1 OpenDir(&CurF);
521 1
522 1 IT0 = 0; //set int0 trigger mode
523 1 EX0 = 1; //ENABLE int0
524 1 EA = 1; //ENABLE interrupt system
525 1 Init_D12();
526 1
527 1 D12_Connect();
528 1
529 1 while(1)
530 1 {
531 2 if (bEppflags.flags.bus_reset)
532 2 {
533 3 DISABLE_INTERRUPT;
534 3 bEppflags.flags.bus_reset = 0;
535 3 ENABLE_INTERRUPT;
536 3
537 3 // Release D12's SUSPEND pin after bus reset
538 3 D12_SUSP = D12_SUSP_SLEEP;
539 3
540 3 }
541 2 if (bEppflags.flags.suspend)
542 2 {
543 3 DISABLE_INTERRUPT;
544 3 bEppflags.flags.suspend = 0;
545 3 ENABLE_INTERRUPT;
546 3 }
547 2 if (bEppflags.flags.setup_packet)
548 2 {
549 3 DISABLE_INTERRUPT;
550 3 bEppflags.flags.setup_packet = 0;
551 3 ENABLE_INTERRUPT;
C51 COMPILER V7.01 USBTEST 06/30/2007 11:42:51 PAGE 10
552 3 control_handler();
553 3 }
554 2
555 2 if (bEppflags.flags.ep2_out)
556 2 {
557 3 // DISABLE_INTERRUPT; //the int was disabled in ep2 out interrupt,
558 3 //we need open it after process the data
559 3 bEppflags.flags.ep2_out = 0;
560 3 // process(Ep2OutLen);
561 3 ENABLE_INTERRUPT;
562 3 if (g_pCmd->wTag != USBCMD_BEGIN)
563 3 {
564 4 display_err(USBERR_WRONGTEST);
565 4 }
566 3
567 3 Dispatch[g_pCmd->bCmd]();
568 3 }
569 2
570 2 if (CheckKeyF == 1)
571 2 {
572 3 CheckKey();
573 3 CheckKeyF = 0;
574 3 }
575 2 if (Key[7].pressed == 1) //exit usb test2
576 2 {
577 3 EX0 = 0;
578 3 D12_Disconnect();
579 3 bTestNo = 0;
580 3
581 3 ClearKey(); //清按键
582 3 Clear(0,240); //清屏幕
583 3 return;
584 3 }
585 2 }
586 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2295 ----
CONSTANT SIZE = 54 ----
XDATA SIZE = 25 12
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -