📄 mem_task.lst
字号:
307 4 func_state = mmc_setup_card(MMC_CARD2);
308 4 if (func_state == MMC_ERROR)
309 4 {
310 5 mem_state = MEM_MMC2_ERROR;
311 5 }
312 4 else
313 4 {
314 5 if (func_state == MMC_END) /* end of execution */
315 5 {
316 6 gl_memory = MEM_MMC;
317 6 if (File_mount() == OK) /* mount file system */
318 6 {
319 7 mem_state = MEM_MMC2_IDLE;
320 7 }
321 6 else
322 6 {
323 7 mem_state = MEM_MMC2_ERR_FMT; /* memory not formatted */
324 7 }
325 6 print_mem(SYMB_MMC2); /* print MMC2 symbol */
326 6 }
327 5 gl_mem_tick = MEM_FUNCT_TIME; /* init delay timer */
328 5 }
329 4 }
330 3 break;
331 3 }
332 2
333 2 case MEM_MMC2_IDLE:
334 2 {
335 3 break;
336 3 }
337 2
338 2 case MEM_MMC1_ERROR:
339 2 {
340 3 if (mem_force_mmc)
341 3 {
342 4 mem_state = MEM_MMC1_INIT;
343 4 }
344 3 else
345 3 {
346 4 Mmc_disable();
347 4 mem_state = MEM_MMC2_INIT;
348 4 }
349 3 break;
350 3 }
351 2
352 2 case MEM_MMC2_ERROR:
353 2 {
354 3 if (mem_force_mmc)
355 3 {
356 4 mem_state = MEM_MMC2_INIT;
357 4 }
358 3 else
359 3 {
360 4 Mmc_disable();
361 4 mem_state = MEM_DF_INIT;
362 4 }
363 3 break;
364 3 }
C51 COMPILER V6.20c MEM_TASK 07/10/2002 15:17:40 PAGE 7
365 2
366 2 case MEM_DF_ERR_FMT:
367 2 {
368 3 break;
369 3 }
370 2
371 2 case MEM_MMC1_ERR_FMT:
372 2 {
373 3 break;
374 3 }
375 2
376 2 case MEM_MMC2_ERR_FMT:
377 2 {
378 3 break;
379 3 }
380 2 }
381 1 }
382
383
384 /*F**************************************************************************
385 * NAME: mem_status
386 *----------------------------------------------------------------------------
387 * PARAMS:
388 *
389 * return:
390 * memory status: MEM_BUSY: install in progress
391 * MEM_READY: install done
392 * MEM_FORMAT: install done but memory not formated
393 *----------------------------------------------------------------------------
394 * PURPOSE:
395 * Return memory status
396 *----------------------------------------------------------------------------
397 * EXAMPLE:
398 *----------------------------------------------------------------------------
399 * NOTE:
400 *----------------------------------------------------------------------------
401 * REQUIREMENTS:
402 *****************************************************************************/
403 Byte mem_status (void)
404 {
405 1 if ((mem_state == MEM_DF_IDLE) ||
406 1 (mem_state == MEM_MMC1_IDLE) ||
407 1 (mem_state == MEM_MMC2_IDLE))
408 1 {
409 2 return (MEM_READY);
410 2 }
411 1 if ((mem_state == MEM_DF_ERR_FMT) ||
412 1 (mem_state == MEM_MMC1_ERR_FMT) ||
413 1 (mem_state == MEM_MMC2_ERR_FMT))
414 1 {
415 2 return (MEM_FORMAT);
416 2 }
417 1 else
418 1 {
419 2 return (MEM_BUSY);
420 2 }
421 1 }
422
423
424 /*F**************************************************************************
425 * NAME: mem_check_card
426 *----------------------------------------------------------------------------
C51 COMPILER V6.20c MEM_TASK 07/10/2002 15:17:40 PAGE 8
427 * PARAMS:
428 *
429 * return:
430 * OK: card present or on-board memory
431 * KO: card not present
432 *----------------------------------------------------------------------------
433 * PURPOSE:
434 * Start card status checking
435 *----------------------------------------------------------------------------
436 * EXAMPLE:
437 *----------------------------------------------------------------------------
438 * NOTE:
439 *----------------------------------------------------------------------------
440 * REQUIREMENTS:
441 *****************************************************************************/
442 bit mem_check_card (void)
443 {
444 1 switch (mem_state)
445 1 {
446 2 case MEM_MMC1_IDLE:
447 2 case MEM_MMC1_ERR_FMT:
448 2 {
449 3 return (mmc_check_presence(MMC_CARD1));
450 3 }
451 2
452 2 case MEM_MMC2_IDLE:
453 2 case MEM_MMC2_ERR_FMT:
454 2 {
455 3 return (mmc_check_presence(MMC_CARD2));
456 3 }
457 2
458 2 default:
459 2 {
460 3 return OK;
461 3 }
462 2 }
463 1 }
464
465
466 /*F**************************************************************************
467 * NAME: mem_card_select
468 *----------------------------------------------------------------------------
469 * PARAMS:
470 * force: - TRUE: continue selecting MMC1 in case of error
471 * - FALSE: select next device in case of error
472 *
473 * return:
474 *----------------------------------------------------------------------------
475 * PURPOSE:
476 * Mass storage memory selection
477 *----------------------------------------------------------------------------
478 * EXAMPLE:
479 *----------------------------------------------------------------------------
480 * NOTE:
481 * Call from mass storage routines:
482 * - when Test_Unit returns not ready
483 * - when exiting download mode for mounting new FAT
484 *----------------------------------------------------------------------------
485 * REQUIREMENTS:
486 *****************************************************************************/
487 void mem_card_select (bit force)
488 {
C51 COMPILER V6.20c MEM_TASK 07/10/2002 15:17:40 PAGE 9
489 1 mem_force_mmc = force;
490 1 mem_state = MEM_MMC1_INIT;
491 1 }
492
493
494 /*F**************************************************************************
495 * NAME: mem_select_next
496 *----------------------------------------------------------------------------
497 * PARAMS:
498 *
499 * return:
500 *----------------------------------------------------------------------------
501 * PURPOSE:
502 * Select next on-board or card memory
503 *----------------------------------------------------------------------------
504 * EXAMPLE:
505 *----------------------------------------------------------------------------
506 * NOTE:
507 *----------------------------------------------------------------------------
508 * REQUIREMENTS:
509 *****************************************************************************/
510 void mem_select_next (void)
511 {
512 1 switch (mem_state)
513 1 {
514 2 case MEM_DF_IDLE:
515 2 case MEM_DF_ERR_FMT:
516 2 {
517 3 mem_state = MEM_MMC1_INIT;
518 3 break;
519 3 }
520 2 case MEM_MMC1_IDLE:
521 2 case MEM_MMC1_ERR_FMT:
522 2 {
523 3 mem_state = MEM_MMC2_INIT;
524 3 break;
525 3 }
526 2 case MEM_MMC2_IDLE:
527 2 case MEM_MMC2_ERR_FMT:
528 2 {
529 3 mem_state = MEM_DF_INIT;
530 3 break;
531 3 }
532 2 }
533 1 }
534
535
536 /*F**************************************************************************
537 * NAME: mem_select_format
538 *----------------------------------------------------------------------------
539 * PARAMS:
540 *
541 * return:
542 * File system mount status
543 *----------------------------------------------------------------------------
544 * PURPOSE:
545 * Re-mount memory after format or mass storage update
546 *----------------------------------------------------------------------------
547 * EXAMPLE:
548 *----------------------------------------------------------------------------
549 * NOTE:
550 *----------------------------------------------------------------------------
C51 COMPILER V6.20c MEM_TASK 07/10/2002 15:17:40 PAGE 10
551 * REQUIREMENTS:
552 *****************************************************************************/
553 bit mem_select_format (void)
554 {
555 1 gl_mem_tick = MEM_WRITE_TIME;
556 1
557 1 switch (mem_state)
558 1 {
559 2 case MEM_DF_ERR_FMT:
560 2 case MEM_DF_IDLE:
561 2 {
562 3 while (gl_mem_tick != MEM_TIME_OUT)
563 3 {
564 4 if (File_mount() == OK) /* check if format ok */
565 4 {
566 5 mem_state = MEM_DF_IDLE;
567 5 return OK;
568 5 }
569 4 }
570 3 return KO;
571 3 }
572 2
573 2 case MEM_MMC1_ERR_FMT:
574 2 case MEM_MMC1_IDLE:
575 2 {
576 3 while (gl_mem_tick != MEM_TIME_OUT)
577 3 {
578 4 if (File_mount() == OK) /* check if format ok */
579 4 {
580 5 mem_state = MEM_MMC1_IDLE;
581 5 return OK;
582 5 }
583 4 }
584 3 return KO;
585 3 }
586 2
587 2 case MEM_MMC2_ERR_FMT:
588 2 case MEM_MMC2_IDLE:
589 2 {
590 3 while (gl_mem_tick != MEM_TIME_OUT)
591 3 {
592 4 if (File_mount() == OK) /* check if format ok */
593 4 {
594 5 mem_state = MEM_MMC2_IDLE;
595 5 return OK;
596 5 }
597 4 }
598 3 return KO;
599 3 }
600 2
601 2 default:
602 2 {
603 3 return KO;
604 3 }
605 2 }
606 1 }
607
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 628 ----
CONSTANT SIZE = 32 ----
C51 COMPILER V6.20c MEM_TASK 07/10/2002 15:17:40 PAGE 11
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 1
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -