📄 sdio.src
字号:
; P2MDOUT&=~0x02;
; SOURCE LINE # 447
ANL P2MDOUT,#0FDH
; Slave_state=Initialization_State;
; SOURCE LINE # 448
MOV Slave_state,#01H
; }
; SOURCE LINE # 449
RET
; END OF Response_to_CMD5
;
; void Response_to_CMD7(void) //R1b Response
RSEG ?PR?Response_to_CMD7?SDIO
Response_to_CMD7:
USING 0
; SOURCE LINE # 451
; {
; SOURCE LINE # 452
; P2MDOUT=0x02;
; SOURCE LINE # 453
MOV P2MDOUT,#02H
; Buffer_send[0]=0x01; //command index
; SOURCE LINE # 454
MOV Buffer_send,#01H
; Buffer_send[1]=0x00; //card status
; SOURCE LINE # 455
CLR A
MOV Buffer_send+01H,A
; Buffer_send[2]=0x00;
; SOURCE LINE # 456
MOV Buffer_send+02H,A
; Buffer_send[3]=0x01; //ready for data
; SOURCE LINE # 457
MOV Buffer_send+03H,#01H
; Buffer_send[4]=0x00;
; SOURCE LINE # 458
MOV Buffer_send+04H,A
; Buffer_send[5]=0x7B;
; SOURCE LINE # 459
MOV Buffer_send+05H,#07BH
; Timing_Sync();
; SOURCE LINE # 460
; Write_Res_SD(Buffer_send[0]);
; SOURCE LINE # 461
; Write_Res_SD(Buffer_send[1]);
; SOURCE LINE # 462
; Write_Res_SD(Buffer_send[2]);
; SOURCE LINE # 463
; Write_Res_SD(Buffer_send[3]);
; SOURCE LINE # 464
; Write_Res_SD(Buffer_send[4]);
; SOURCE LINE # 465
; Write_Res_SD(Buffer_send[5]);
; SOURCE LINE # 466
LCALL L?0337
?C0131:
; while(SD_CLK_PIN==0);
; SOURCE LINE # 467
JNB SD_CLK_PIN,?C0131
?C0132:
; SD_CMD_PIN=1;
; SOURCE LINE # 468
SETB SD_CMD_PIN
; SD_CMD_PIN=1;
; SOURCE LINE # 469
SETB SD_CMD_PIN
; P2MDOUT&=~0x02;
; SOURCE LINE # 470
ANL P2MDOUT,#0FDH
; Slave_state=Command_State;
; SOURCE LINE # 471
MOV Slave_state,#03H
; }
; SOURCE LINE # 472
RET
; END OF Response_to_CMD7
;
; void Response_to_CMD15(void)
RSEG ?PR?Response_to_CMD15?SDIO
Response_to_CMD15:
; SOURCE LINE # 474
; {
; SOURCE LINE # 475
; Slave_state=Inactive_State;
; SOURCE LINE # 476
CLR A
MOV Slave_state,A
; }
; SOURCE LINE # 477
RET
; END OF Response_to_CMD15
;
; void Response_to_CMD52(void)
RSEG ?PR?Response_to_CMD52?SDIO
Response_to_CMD52:
USING 0
; SOURCE LINE # 479
; {
; SOURCE LINE # 480
; P2MDOUT=0x02;
; SOURCE LINE # 481
MOV P2MDOUT,#02H
; Reg_address=(CMD_R[3]+CMD_R[2]);
; SOURCE LINE # 482
MOV A,CMD_R+03H
ADD A,CMD_R+02H
MOV Reg_address+01H,A
CLR A
RLC A
MOV Reg_address,A
; if(((CMD_R[1]&0x80)==0)) //Data Read Command
; SOURCE LINE # 483
MOV A,CMD_R+01H
JNB ACC.7,$ + 6H
LJMP ?C0135
; {
; SOURCE LINE # 484
; switch (Reg_address)
; SOURCE LINE # 485
MOV A,Reg_address
JZ $ + 5H
LJMP ?C0249
MOV A,Reg_address+01H
LCALL ?C?CCASE
DW ?C0137
DB 00H
DW ?C0148
DB 02H
DW ?C0245
DB 04H
DW ?C0230
DB 06H
DW ?C0237
DB 08H
DW ?C0241
DB 0AH
DW ?C0141
DB 010H
DW ?C0156
DB 012H
DW ?C0160
DB 014H
DW ?C0171
DB 016H
DW ?C0214
DB 018H
DW ?C0218
DB 01AH
DW ?C0222
DB 01CH
DW ?C0226
DB 01EH
DW ?C0179
DB 020H
DW ?C0182
DB 022H
DW ?C0186
DB 024H
DW ?C0190
DB 026H
DW ?C0194
DB 028H
DW ?C0198
DB 02AH
DW ?C0202
DB 02CH
DW ?C0206
DB 02EH
DW ?C0210
DB 034H
DW 00H
DW ?C0249
; {
; SOURCE LINE # 486
; case 0x00: //GET CCRV 0X00
; SOURCE LINE # 487
?C0137:
; if((CMD_R[1]&0x70)==0x00)
; SOURCE LINE # 488
MOV A,CMD_R+01H
ANL A,#070H
JZ $ + 5H
LJMP ?C0249
; {
; SOURCE LINE # 489
; Buffer_send[0]=0x34; //command index
; SOURCE LINE # 490
MOV Buffer_send,#034H
; Buffer_send[1]=0x00;
; SOURCE LINE # 491
MOV Buffer_send+01H,A
; Buffer_send[2]=0x00;
; SOURCE LINE # 492
MOV Buffer_send+02H,A
; Buffer_send[3]=0x20;
; SOURCE LINE # 493
MOV Buffer_send+03H,#020H
; Buffer_send[4]=0x11;
; SOURCE LINE # 494
MOV Buffer_send+04H,#011H
; Buffer_send[5]=0x81;
; SOURCE LINE # 495
MOV Buffer_send+05H,#081H
; Timing_Sync();
; SOURCE LINE # 496
; Write_Res_SD(Buffer_send[0]);
; SOURCE LINE # 497
; Write_Res_SD(Buffer_send[1]);
; SOURCE LINE # 498
; Write_Res_SD(Buffer_send[2]);
; SOURCE LINE # 499
; Write_Res_SD(Buffer_send[3]);
; SOURCE LINE # 500
; Write_Res_SD(Buffer_send[4]);
; SOURCE LINE # 501
; Write_Res_SD(Buffer_send[5]);
; SOURCE LINE # 502
LCALL L?0337
?C0139:
; while(SD_CLK_PIN==0);
; SOURCE LINE # 503
JNB SD_CLK_PIN,?C0139
?C0140:
; SD_CMD_PIN=1;
; SOURCE LINE # 504
SETB SD_CMD_PIN
; }
; SOURCE LINE # 505
; break;
; SOURCE LINE # 506
LJMP ?C0249
; case 0x10: //GET CCRV 0X08 CARD CAPACITY REG
; SOURCE LINE # 507
?C0141:
; if((CMD_R[1]&0x70)==0x00)
; SOURCE LINE # 508
MOV A,CMD_R+01H
ANL A,#070H
JNZ ?C0142
; {
; SOURCE LINE # 509
; Buffer_send[0]=0x34; //command index
; SOURCE LINE # 510
MOV Buffer_send,#034H
; Buffer_send[1]=0x00;
; SOURCE LINE # 511
MOV Buffer_send+01H,A
; Buffer_send[2]=0x00;
; SOURCE LINE # 512
MOV Buffer_send+02H,A
; Buffer_send[3]=0x20;
; SOURCE LINE # 513
MOV Buffer_send+03H,#020H
; Buffer_send[4]=0x40;
; SOURCE LINE # 514
MOV Buffer_send+04H,#040H
; Buffer_send[5]=0x69;
; SOURCE LINE # 515
MOV Buffer_send+05H,#069H
; //Buffer_send[4]=0x42;
; //Buffer_send[5]=0x4d;
; Timing_Sync();
; SOURCE LINE # 518
; Write_Res_SD(Buffer_send[0]);
; SOURCE LINE # 519
; Write_Res_SD(Buffer_send[1]);
; SOURCE LINE # 520
; Write_Res_SD(Buffer_send[2]);
; SOURCE LINE # 521
; Write_Res_SD(Buffer_send[3]);
; SOURCE LINE # 522
; Write_Res_SD(Buffer_send[4]);
; SOURCE LINE # 523
; Write_Res_SD(Buffer_send[5]);
; SOURCE LINE # 524
LCALL L?0337
?C0143:
; while(SD_CLK_PIN==0);
; SOURCE LINE # 525
JNB SD_CLK_PIN,?C0143
?C0144:
; SD_CMD_PIN=1;
; SOURCE LINE # 526
SETB SD_CMD_PIN
; }
; SOURCE LINE # 527
LJMP ?C0249
?C0142:
; else //read 0x08 of function 1,DLL set
; {
; SOURCE LINE # 529
; Buffer_send[0]=0x34; //command index
; SOURCE LINE # 530
MOV Buffer_send,#034H
; Buffer_send[1]=0x00;
; SOURCE LINE # 531
CLR A
MOV Buffer_send+01H,A
; Buffer_send[2]=0x00;
; SOURCE LINE # 532
MOV Buffer_send+02H,A
; Buffer_send[3]=0x20;
; SOURCE LINE # 533
MOV Buffer_send+03H,#020H
; Buffer_send[4]=0x01;
; SOURCE LINE # 534
MOV Buffer_send+04H,#01H
; Buffer_send[5]=crc7_CMD52[1];
; SOURCE LINE # 535
MOV DPTR,#crc7_CMD52+01H
; Timing_Sync();
; SOURCE LINE # 536
; Write_Res_SD(Buffer_send[0]);
; SOURCE LINE # 537
; Write_Res_SD(Buffer_send[1]);
; SOURCE LINE # 538
; Write_Res_SD(Buffer_send[2]);
; SOURCE LINE # 539
; Write_Res_SD(Buffer_send[3]);
; SOURCE LINE # 540
; Write_Res_SD(Buffer_send[4]);
; SOURCE LINE # 541
; Write_Res_SD(Buffer_send[5]);
; SOURCE LINE # 542
LCALL L?0336
?C0146:
; while(SD_CLK_PIN==0);
; SOURCE LINE # 543
JNB SD_CLK_PIN,?C0146
?C0147:
; SD_CMD_PIN=1;
; SOURCE LINE # 544
SETB SD_CMD_PIN
; }
; SOURCE LINE # 545
; break;
; SOURCE LINE # 546
LJMP ?C0249
; case 0x02:
; SOURCE LINE # 547
?C0148:
; if((CMD_R[1]&0x70)==0x00)
; SOURCE LINE # 548
MOV A,CMD_R+01H
ANL A,#070H
JZ $ + 5H
LJMP ?C0249
; {
; SOURCE LINE # 549
; if(CMD_R[2]==0x00) //GET CCRV 0X01 SD REV
; SOURCE LINE # 550
MOV A,CMD_R+02H
JNZ ?C0150
; {
; SOURCE LINE # 551
; Buffer_send[0]=0x34; //command index
; SOURCE LINE # 552
MOV Buffer_send,#034H
; Buffer_send[1]=0x00;
; SOURCE LINE # 553
MOV Buffer_send+01H,A
; Buffer_send[2]=0x00;
; SOURCE LINE # 554
MOV Buffer_send+02H,A
; Buffer_send[3]=0x20;
; SOURCE LINE # 555
MOV Buffer_send+03H,#020H
; Buffer_send[4]=0x01;
; SOURCE LINE # 556
MOV Buffer_send+04H,#01H
; Buffer_send[5]=0xb3;
; SOURCE LINE # 557
MOV Buffer_send+05H,#0B3H
; Timing_Sync();
; SOURCE LINE # 558
; Write_Res_SD(Buffer_send[0]);
; SOURCE LINE # 559
; Write_Res_SD(Buffer_send[1]);
; SOURCE LINE # 560
; Write_Res_SD(Buffer_send[2]);
; SOURCE LINE # 561
; Write_Res_SD(Buffer_send[3]);
; SOURCE LINE # 562
; Write_Res_SD(Buffer_send[4]);
; SOURCE LINE # 563
; Write_Res_SD(Buffer_send[5]);
; SOURCE LINE # 564
LCALL L?0337
?C0151:
; while(SD_CLK_PIN==0);
; SOURCE LINE # 565
JNB SD_CLK_PIN,?C0151
?C0152:
; SD_CMD_PIN=1;
; SOURCE LINE # 566
SETB SD_CMD_PIN
; }//endif if(CMD_R[2]==0x00)
; SOURCE LINE # 567
LJMP ?C0249
?C0150:
; else //GET FBR DEVICE CODE
; {
; SOURCE LINE # 569
; Buffer_send[0]=0x34; //command index
; SOURCE LINE # 570
MOV Buffer_send,#034H
; Buffer_send[1]=0x00;
; SOURCE LINE # 571
CLR A
MOV Buffer_send+01H,A
; Buffer_send[2]=0x00;
; SOURCE LINE # 572
MOV Buffer_send+02H,A
; Buffer_send[3]=0x20;
; SOURCE LINE # 573
MOV Buffer_send+03H,#020H
; //Buffer_send[4]=0x00;
; //Buffer_send[5]=0xa1;
; Buffer_send[4]=0x01; //support standard uart
; SOURCE LINE # 576
MOV Buffer_send+04H,#01H
; Buffer_send[5]=0xb3;
; SOURCE LINE # 577
MOV Buffer_send+05H,#0B3H
; Timing_Sync();
; SOURCE LINE # 578
; Write_Res_SD(Buffer_send[0]);
; SOURCE LINE # 579
; Write_Res_SD(Buffer_send[1]);
; SOURCE LINE # 580
; Write_Res_SD(Buffer_send[2]);
; SOURCE LINE # 581
; Write_Res_SD(Buffer_send[3]);
; SOURCE LINE # 582
; Write_Res_SD(Buffer_send[4]);
; SOURCE LINE # 583
; Write_Res_SD(Buffer_send[5]);
; SOURCE LINE # 584
LCALL L?0337
?C0154:
; while(SD_CLK_PIN==0);
; SOURCE LINE # 585
JNB SD_CLK_PIN,?C0154
?C0155:
; SD_CMD_PIN=1;
; SOURCE LINE # 586
SETB SD_CMD_PIN
; }//end else
; SOURCE LINE # 587
; }//end if((CMD_R[1]&0x70)==0x00)
; SOURCE LINE # 588
; break;
; SOURCE LINE # 589
LJMP ?C0249
; case 0x12: //GET CCRV 0X09 COMMON CIS BYTE1
; SOURCE LINE # 590
?C0156:
; if((CMD_R[1]&0x70)==0x00)
; SOURCE LINE # 591
MOV A,CMD_R+01H
ANL A,#070H
JZ $ + 5H
LJMP ?C0249
; {
; SOURCE LINE # 592
; Buffer_send[0]=0x34; //command index
; SOURCE LINE # 593
MOV Buffer_send,#034H
; Buffer_send[1]=0x00;
; SOURCE LINE # 594
MOV Buffer_send+01H,A
; Buffer_send[2]=0x00;
; SOURCE LINE # 595
MOV Buffer_send+02H,A
; Buffer_send[3]=0x20;
; SOURCE LINE # 596
MOV Buffer_send+03H,#020H
; Buffer_send[4]=0x00;
; SOURCE LINE # 597
MOV Buffer_send+04H,A
; Buffer_send[5]=0xa1;
; SOURCE LINE # 598
MOV Buffer_send+05H,#0A1H
; Timing_Sync();
; SOURCE LINE # 599
; Write_Res_SD(Buffer_send[0]);
; SOURCE LINE # 600
; Write_Res_SD(Buffer_send[1]);
; SOURCE LINE # 601
; Write_Res_SD(Buffer_send[2]);
; SOURCE LINE # 602
; Write_Res_SD(Buffer_send[3]);
; SOURCE LINE # 603
; Write_Res_SD(Buffer_send[4]);
; SOURCE LINE # 604
; Write_Res_SD(Buffer_send[5]);
; SOURCE LINE # 605
LCALL L?0337
?C0158:
; while(SD_CLK_PIN==0);
; SOURCE LINE # 606
JNB SD_CLK_PIN,?C0158
?C0159:
; SD_CMD_PIN=1;
; SOURCE LINE # 607
SETB SD_CMD_PIN
; }
; SOURCE LINE # 608
; break;
; SOURCE LINE # 609
LJMP ?C0249
; case 0x14: //GET CCRV 0X0A COMMON CIS BYTE2
; SOURCE LINE # 610
?C0160:
; if((CMD_R[1]&0x70)==0x00)
; SOURCE LINE # 611
MOV A,CMD_R+01H
ANL A,#070H
JNZ ?C0161
; {
; SOURCE LINE # 612
; if(CMD_R[2]==0x00)
; SOURCE LINE # 613
MOV A,CMD_R+02H
JNZ ?C0162
; {
; SOURCE LINE # 614
; Buffer_send[0]=0x34; //command index
; SOURCE LINE # 615
MOV Buffer_send,#034H
; Buffer_send[1]=0x00;
; SOURCE LINE # 616
MOV Buffer_send+01H,A
; Buffer_send[2]=0x00;
; SOURCE LINE # 617
MOV Buffer_send+02H,A
; Buffer_send[3]=0x20;
; SOURCE LINE # 618
MOV Buffer_send+03H,#020H
; Buffer_send[4]=0x10;
; SOURCE LINE # 619
MOV Buffer_send+04H,#010H
; Buffer_send[5]=0x93;
; SOURCE LINE # 620
MOV Buffer_send+05H,#093H
; Timing_Sync();
; SOURCE LINE # 621
; Write_Res_SD(Buffer_send[0]);
; SOURCE LINE # 622
; Write_Res_SD(Buffer_send[1]);
; SOURCE LINE # 623
; Write_Res_SD(Buffer_send[2]);
; SOURCE LINE # 624
; Write_Res_SD(Buffer_send[3]);
; SOURCE LINE # 625
; Write_Res_SD(Buffer_send[4]);
; SOURCE LINE # 626
; Write_Res_SD(Buffer_send[5]);
; SOURCE LINE # 627
LCALL L?0337
?C0163:
; while(SD_CLK_PIN==0);
; SOURCE LINE # 628
JNB SD_CLK_PIN,?C0163
?C0164:
; SD_CMD_PIN=1;
; SOURCE LINE # 629
SETB SD_CMD_PIN
; }//end if(CMD_R[2]==0x00)
; SOURCE LINE # 630
LJMP ?C0249
?C0162:
; else //0X02+0X12,GET FBR CIS BYTE 1
; {
; SOURCE LINE # 632
; Buffer_send[0]=0x34; //command index
; SOURCE LINE # 633
MOV Buffer_send,#034H
; Buffer_send[1]=0x00;
; SOURCE LINE # 634
CLR A
MOV Buffer_send+01H,A
; Buffer_send[2]=0x00;
; SOURCE LINE # 635
MOV Buffer_send+02H,A
; Buffer_send[3]=0x20;
; SOURCE LINE # 636
MOV Buffer_send+03H,#020H
; Buffer_send[4]=0x00;
; SOURCE LINE # 637
MOV Buffer_send+04H,A
; Buffer_send[5]=0xa1;
; SOURCE LINE # 638
MOV Buffer_send+05H,#0A1H
; Timing_Sync();
; SOURCE LINE # 639
; Write_Res_SD(Buffer_send[0]);
; SOURCE LINE # 640
; Write_Res_SD(Buffer_send[1]);
; SOURCE LINE # 641
; Write_Res_SD(Buffer_send[2]);
; SOURCE LINE # 642
; Write_Res_SD(Buffer_send[3]);
; SOURCE LINE # 643
; Write_Res_SD(Buffer_send[4]);
; SOURCE LINE # 644
; Write_Res_SD(Buffer_send[5]);
; SOURCE LINE # 645
LCALL L?0337
?C0166:
; while(SD_CLK_PIN==0);
; SOURCE LINE # 646
JNB SD_CLK_PIN,?C0166
?C0167:
; SD_CMD_PIN=1;
; SOURCE LINE # 647
SETB SD_CMD_PIN
; }//end else
; SOURCE LINE # 648
; }//end if((CMD_R[1]&0x70)==0x00)
; SOURCE LINE # 6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -