📄 sdio.lst
字号:
448 1 while(SD_CLK_PIN==1);
449 1 while(SD_CLK_PIN==0);
450 1 while(SD_CLK_PIN==1);
451 1 }
452
453 void Data_Rv_Sync(void)
454 {
455 1 while(SD_DATA0_PIN==1);
C51 COMPILER V7.05 SDIO 06/14/2007 16:16:46 PAGE 9
456 1 while(SD_CLK_PIN==0);
457 1 while(SD_CLK_PIN==1);
458 1 while(SD_CLK_PIN==0);
459 1 //while(SD_CLK_PIN==1);
460 1 }
461
462 void Data_Wr_Sync(void)
463 {
464 1 while(SD_CLK_PIN==0);
465 1 while(SD_CLK_PIN==1);
466 1 while(SD_CLK_PIN==0);
467 1 while(SD_CLK_PIN==1);
468 1 while(SD_CLK_PIN==0);
469 1 SD_DATA0_PIN=0;
470 1 while(SD_CLK_PIN==1);
471 1 }
472
473 void Slave_Mode_Sel(void)
474 {
475 1 }
476
477 void Response_to_CMD0(void)
478 {
479 1 Slave_Mode_Sel();
480 1 }
481
482 void Response_to_CMD3(void) //R6 response
483 {
484 1 P2MDOUT=0x02;
485 1 Buffer_send[0]=0x03; //command index
486 1 Buffer_send[1]=RCA_REG[0];
487 1 Buffer_send[2]=RCA_REG[1];
488 1 Buffer_send[3]=0x00;
489 1 Buffer_send[4]=0x00;
490 1 Buffer_send[5]=0xeb;
491 1 Timing_Sync();
492 1 Write_Res_SD(Buffer_send[0]);
493 1 Write_Res_SD(Buffer_send[1]);
494 1 Write_Res_SD(Buffer_send[2]);
495 1 Write_Res_SD(Buffer_send[3]); //card status,0 stand for no error
496 1 Write_Res_SD(Buffer_send[4]);
497 1 Write_Res_SD(Buffer_send[5]);
498 1 while(SD_CLK_PIN==0);
499 1 SD_CMD_PIN=1;
500 1 SD_CMD_PIN=1;
501 1 P2MDOUT&=~0x02;
502 1 }
503
504 void Response_to_CMD5(void) //R4 response
505 {
506 1 P2MDOUT=0x02;
507 1 Buffer_send[0]=0x3f; //command index
508 1 Buffer_send[1]=0x90; //card status
509 1 Buffer_send[2]=OCR_REG[0];
510 1 Buffer_send[3]=OCR_REG[1]; //ready for data
511 1 Buffer_send[4]=OCR_REG[2];
512 1 Buffer_send[5]=0xff;
513 1 Timing_Sync();
514 1 Write_Res_SD(Buffer_send[0]);
515 1 Write_Res_SD(Buffer_send[1]);
516 1 Write_Res_SD(Buffer_send[2]); //0xff
517 1 Write_Res_SD(Buffer_send[3]); //0xC0
C51 COMPILER V7.05 SDIO 06/14/2007 16:16:46 PAGE 10
518 1 Write_Res_SD(Buffer_send[4]); //0xff
519 1 Write_Res_SD(Buffer_send[5]); //reserved bits
520 1 while(SD_CLK_PIN==0);
521 1 SD_CMD_PIN=1;
522 1 SD_CMD_PIN=1;
523 1 P2MDOUT&=~0x02;
524 1 Slave_state=Initialization_State;
525 1 }
526
527 void Response_to_CMD7(void) //R1b Response
528 {
529 1 P2MDOUT=0x02;
530 1 Buffer_send[0]=0x01; //command index
531 1 Buffer_send[1]=0x00; //card status
532 1 Buffer_send[2]=0x00;
533 1 Buffer_send[3]=0x01; //ready for data
534 1 Buffer_send[4]=0x00;
535 1 Buffer_send[5]=0x7B;
536 1 Timing_Sync();
537 1 Write_Res_SD(Buffer_send[0]);
538 1 Write_Res_SD(Buffer_send[1]);
539 1 Write_Res_SD(Buffer_send[2]);
540 1 Write_Res_SD(Buffer_send[3]);
541 1 Write_Res_SD(Buffer_send[4]);
542 1 Write_Res_SD(Buffer_send[5]);
543 1 while(SD_CLK_PIN==0);
544 1 SD_CMD_PIN=1;
545 1 SD_CMD_PIN=1;
546 1 P2MDOUT&=~0x02;
547 1 //Slave_state=Command_State;
548 1 }
549
550 void Response_to_CMD15(void)
551 {
552 1 Slave_state=Inactive_State;
553 1 }
554
555 void Response_to_CMD52(void)
556 {
557 1 //SD_BUSY_LED=0;
558 1 P2MDOUT=0x02;
559 1 Reg_address=(CMD_R[3]+CMD_R[2]);
560 1 if(((CMD_R[1]&0x80)==0)) //Data Read Command
561 1 {
562 2 switch (Reg_address)
563 2 {
564 3 case 0x00: //GET CCRV 0X00
565 3 if((CMD_R[1]&0x70)==0x00)
566 3 {
567 4 Buffer_send[0]=0x34; //command index
568 4 Buffer_send[1]=0x00;
569 4 Buffer_send[2]=0x00;
570 4 Buffer_send[3]=0x20;
571 4 Buffer_send[4]=0x11;
572 4 Buffer_send[5]=0x81;
573 4 Timing_Sync();
574 4 Write_Res_SD(Buffer_send[0]);
575 4 Write_Res_SD(Buffer_send[1]);
576 4 Write_Res_SD(Buffer_send[2]);
577 4 Write_Res_SD(Buffer_send[3]);
578 4 Write_Res_SD(Buffer_send[4]);
579 4 Write_Res_SD(Buffer_send[5]);
C51 COMPILER V7.05 SDIO 06/14/2007 16:16:46 PAGE 11
580 4 while(SD_CLK_PIN==0);
581 4 SD_CMD_PIN=1;
582 4 }
583 3 break;
584 3 case 0x10: //GET CCRV 0X08 CARD CAPACITY REG
585 3 if((CMD_R[1]&0x70)==0x00)
586 3 {
587 4 Buffer_send[0]=0x34; //command index
588 4 Buffer_send[1]=0x00;
589 4 Buffer_send[2]=0x00;
590 4 Buffer_send[3]=0x20;
591 4 Buffer_send[4]=0x40;
592 4 Buffer_send[5]=0x69;
593 4 //Buffer_send[4]=0x42;
594 4 //Buffer_send[5]=0x4d;
595 4 Timing_Sync();
596 4 Write_Res_SD(Buffer_send[0]);
597 4 Write_Res_SD(Buffer_send[1]);
598 4 Write_Res_SD(Buffer_send[2]);
599 4 Write_Res_SD(Buffer_send[3]);
600 4 Write_Res_SD(Buffer_send[4]);
601 4 Write_Res_SD(Buffer_send[5]);
602 4 while(SD_CLK_PIN==0);
603 4 SD_CMD_PIN=1;
604 4 }
605 3 else //read 0x08 of function 1,DLL set
606 3 {
607 4 Buffer_send[0]=0x34; //command index
608 4 Buffer_send[1]=0x00;
609 4 Buffer_send[2]=0x00;
610 4 Buffer_send[3]=0x20;
611 4 Buffer_send[4]=0x01;
612 4 Buffer_send[5]=crc7_CMD52[1];
613 4 Timing_Sync();
614 4 Write_Res_SD(Buffer_send[0]);
615 4 Write_Res_SD(Buffer_send[1]);
616 4 Write_Res_SD(Buffer_send[2]);
617 4 Write_Res_SD(Buffer_send[3]);
618 4 Write_Res_SD(Buffer_send[4]);
619 4 Write_Res_SD(Buffer_send[5]);
620 4 while(SD_CLK_PIN==0);
621 4 SD_CMD_PIN=1;
622 4 }
623 3 break;
624 3 case 0x02:
625 3 if((CMD_R[1]&0x70)==0x00)
626 3 {
627 4 if(CMD_R[2]==0x00) //GET CCRV 0X01 SD REV
628 4 {
629 5 Buffer_send[0]=0x34; //command index
630 5 Buffer_send[1]=0x00;
631 5 Buffer_send[2]=0x00;
632 5 Buffer_send[3]=0x20;
633 5 Buffer_send[4]=0x01;
634 5 Buffer_send[5]=0xb3;
635 5 Timing_Sync();
636 5 Write_Res_SD(Buffer_send[0]);
637 5 Write_Res_SD(Buffer_send[1]);
638 5 Write_Res_SD(Buffer_send[2]);
639 5 Write_Res_SD(Buffer_send[3]);
640 5 Write_Res_SD(Buffer_send[4]);
641 5 Write_Res_SD(Buffer_send[5]);
C51 COMPILER V7.05 SDIO 06/14/2007 16:16:46 PAGE 12
642 5 while(SD_CLK_PIN==0);
643 5 SD_CMD_PIN=1;
644 5 }//endif if(CMD_R[2]==0x00)
645 4 else //GET FBR DEVICE CODE
646 4 {
647 5 Buffer_send[0]=0x34; //command index
648 5 Buffer_send[1]=0x00;
649 5 Buffer_send[2]=0x00;
650 5 Buffer_send[3]=0x20;
651 5 //Buffer_send[4]=0x00;
652 5 //Buffer_send[5]=0xa1;
653 5 Buffer_send[4]=0x01; //support standard uart
654 5 Buffer_send[5]=0xb3;
655 5 Timing_Sync();
656 5 Write_Res_SD(Buffer_send[0]);
657 5 Write_Res_SD(Buffer_send[1]);
658 5 Write_Res_SD(Buffer_send[2]);
659 5 Write_Res_SD(Buffer_send[3]);
660 5 Write_Res_SD(Buffer_send[4]);
661 5 Write_Res_SD(Buffer_send[5]);
662 5 while(SD_CLK_PIN==0);
663 5 SD_CMD_PIN=1;
664 5 }//end else
665 4 }//end if((CMD_R[1]&0x70)==0x00)
666 3 break;
667 3 case 0x12: //GET CCRV 0X09 COMMON CIS BYTE1
668 3 if((CMD_R[1]&0x70)==0x00)
669 3 {
670 4 Buffer_send[0]=0x34; //command index
671 4 Buffer_send[1]=0x00;
672 4 Buffer_send[2]=0x00;
673 4 Buffer_send[3]=0x20;
674 4 Buffer_send[4]=0x00;
675 4 Buffer_send[5]=0xa1;
676 4 Timing_Sync();
677 4 Write_Res_SD(Buffer_send[0]);
678 4 Write_Res_SD(Buffer_send[1]);
679 4 Write_Res_SD(Buffer_send[2]);
680 4 Write_Res_SD(Buffer_send[3]);
681 4 Write_Res_SD(Buffer_send[4]);
682 4 Write_Res_SD(Buffer_send[5]);
683 4 while(SD_CLK_PIN==0);
684 4 SD_CMD_PIN=1;
685 4 }
686 3 break;
687 3 case 0x14: //GET CCRV 0X0A COMMON CIS BYTE2
688 3 if((CMD_R[1]&0x70)==0x00)
689 3 {
690 4
691 4 if(CMD_R[2]==0x00)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -