📄 mmc.lst
字号:
A 435 ; Aggregate Stack Size: -1 (words)
A 436
A 437
A 438 SEGMENT mmc_TEXT
A 439 ; 57
A 440 ; 58 unsigned char WaitResponseMMC(void)
A 441 ; 59 //waits for the card抯 response
A 442 ; 60 {
00009C A 443 _WaitResponseMMC:
A 444 .define "_WaitResponseMMC"
A 445 .value _WaitResponseMMC
A 446 .class 2
A 447 .type 76
A 448 .type 0
A 449 .endef
A 450 .begfunc "WaitResponseMMC",60,"_WaitResponseMMC"
A 451 .define "response"
A 452 .class 1
A 453 .value -1
A 454 .type 12
A 455 .type 0
00009C 9C01 A 456 LD R9,#1
00009E D6 0000 A 457 CALL __b_frameset0
A 458 .endef
A 459 ; 61 unsigned char response;
A 460 ; 62
A 461 ; 63 do
0000A1 A 462 _2_L_8:
A 463 .line 63
A 464 ; 64 response = TransferSPI(0xFF);
A 465 .line 64
0000A1 1F70FF A 466 PUSH #255
0000A4 D6 0000 A 467 CALL _TransferSPI
0000A7 50E1 A 468 POP R1
ZiLOG Z8 Encore! Macro Assembler Version 2.45 (06120402) 14-Jan-09 10:50:23 page: 10
PC Object I Line Source mmc.src
0000A9 89E0FF A 469 LDX -1(RR14),R0
A 470 ; 65 while(response == 0xFF);
A 471 .line 65
0000AC 880EFF A 472 LDX R0,-1(RR14)
0000AF 60E0 A 473 COM R0
0000B1 6B EE A 474 JR Z,_2_L_8
A 475 ; 66 return response;
A 476 .line 66
0000B3 880EFF A 477 LDX R0,-1(RR14)
A 478 ; 67 }
A 479 .line 67
0000B6 D6 0000 A 480 CALL __b_framereset
0000B9 AF A 481 RET
A 482 .endfunc "WaitResponseMMC",67,"_WaitResponseMMC"
A 483 SEGMENT ROM_DATA
A 484
A 485
A 486 ;**************************** _InitMMC ***************************
A 487 ;Name Addr/Register Size Type
A 488 ;_DeassertSS IMPORT ----- function
A 489 ;_WaitResponseMMC IMPORT ----- function
A 490 ;_CommandMMC IMPORT ----- function
A 491 ;_TransferSPI IMPORT ----- function
A 492 ;_AssertSS IMPORT ----- function
A 493 ;_InitSPI IMPORT ----- function
A 494 ;R1 R15-1 0 variable
A 495
A 496
A 497 ; Aggregate Stack Size: -1 (words)
A 498
A 499
A 500 SEGMENT mmc_TEXT
A 501 ; 68
A 502 ; 69 unsigned char InitMMC(void)
A 503 ; 70 //initializes the MMC to operate in SPI mode, puts it out of the idle state and temporarily
A 504 ; 71 {
0000BA A 505 _InitMMC:
A 506 .define "_InitMMC"
A 507 .value _InitMMC
A 508 .class 2
A 509 .type 76
A 510 .type 0
A 511 .endef
A 512 .begfunc "InitMMC",71,"_InitMMC"
A 513 .define "R1"
A 514 .class 1
A 515 .value -1
A 516 .type 12
A 517 .type 0
A 518 .endef
0000BA 9C01 A 519 LD R9,#1
0000BC D6 0000 A 520 CALL __b_frameset0
ZiLOG Z8 Encore! Macro Assembler Version 2.45 (06120402) 14-Jan-09 10:50:23 page: 11
PC Object I Line Source mmc.src
A 521 ; 72 unsigned char R1;
A 522 ; 73
A 523 ; 74 InitSPI(); //initialize SPI
A 524 .line 74
0000BF D6 0000 A 525 CALL _InitSPI
A 526 ; 75 AssertSS();
A 527 .line 75
0000C2 D6 0000 A 528 CALL _AssertSS
A 529 ; 76 TransferSPI(0xFF);
A 530 .line 76
0000C5 1F70FF A 531 PUSH #255
0000C8 D6 0000 A 532 CALL _TransferSPI
0000CB 50E0 A 533 POP R0
A 534 ; 77 CommandMMC(CMMC_Reset,0); //send reset command
A 535 .line 77
0000CD 1F7000 A 536 PUSH #0
0000D0 1F7000 A 537 PUSH #0
0000D3 1F7000 A 538 PUSH #0
0000D6 1F7000 A 539 PUSH #0
0000D9 1F7000 A 540 PUSH #0
0000DC D6 0000 A 541 CALL _CommandMMC
0000DF 50E0 A 542 POP R0
0000E1 50E0 A 543 POP R0
0000E3 50E0 A 544 POP R0
0000E5 50E0 A 545 POP R0
0000E7 50E0 A 546 POP R0
A 547 ; 78 R1 = WaitResponseMMC();
A 548 .line 78
0000E9 D6 009C A 549 CALL _WaitResponseMMC
0000EC 89E0FF A 550 LDX -1(RR14),R0
A 551 ; 79 TransferSPI(0xFF);
A 552 .line 79
0000EF 1F70FF A 553 PUSH #255
0000F2 D6 0000 A 554 CALL _TransferSPI
0000F5 50E0 A 555 POP R0
A 556 ; 80
A 557 ; 81 while(R1==0x01) //put MMC out of idle state
A 558 .line 81
0000F7 8B 2A A 559 JR _3_L_12
0000F9 A 560 _3_L_13:
A 561 ; 82 {
A 562 ; 83 CommandMMC(CMMC_SendOPCond,0);
A 563 .line 83
0000F9 1F7000 A 564 PUSH #0
0000FC 1F7000 A 565 PUSH #0
0000FF 1F7000 A 566 PUSH #0
000102 1F7000 A 567 PUSH #0
000105 1F7001 A 568 PUSH #1
000108 D6 0000 A 569 CALL _CommandMMC
00010B 50E0 A 570 POP R0
00010D 50E0 A 571 POP R0
00010F 50E0 A 572 POP R0
ZiLOG Z8 Encore! Macro Assembler Version 2.45 (06120402) 14-Jan-09 10:50:23 page: 12
PC Object I Line Source mmc.src
000111 50E0 A 573 POP R0
000113 50E0 A 574 POP R0
A 575 ; 84 R1 = WaitResponseMMC();
A 576 .line 84
000115 D6 009C A 577 CALL _WaitResponseMMC
000118 89E0FF A 578 LDX -1(RR14),R0
A 579 ; 85 TransferSPI(0xFF);
A 580 .line 85
00011B 1F70FF A 581 PUSH #255
00011E D6 0000 A 582 CALL _TransferSPI
000121 50E0 A 583 POP R0
A 584 ; 86 }
000123 A 585 _3_L_12:
A 586 .line 86
000123 880EFF A 587 LDX R0,-1(RR14)
000126 A6E001 A 588 CP R0,#1
000129 6B CE A 589 JR Z,_3_L_13
A 590 ; 87
A 591 ; 88 CommandMMC(CMMC_DisableCRC,0); //disable CRC7
A 592 .line 88
00012B 1F7000 A 593 PUSH #0
00012E 1F7000 A 594 PUSH #0
000131 1F7000 A 595 PUSH #0
000134 1F7000 A 596 PUSH #0
000137 1F703B A 597 PUSH #59
00013A D6 0000 A 598 CALL _CommandMMC
00013D 50E0 A 599 POP R0
00013F 50E0 A 600 POP R0
000141 50E0 A 601 POP R0
000143 50E0 A 602 POP R0
000145 50E0 A 603 POP R0
A 604 ; 89 if (R1)return R1;
A 605 .line 89
000147 880EFF A 606 LDX R0,-1(RR14)
00014A 4200 A 607 OR R0,R0
00014C 6B 05 A 608 JR Z,_3_L_16
00014E 880EFF A 609 LDX R0,-1(RR14)
000151 8B 13 A 610 JR _3_L_17
000153 A 611 _3_L_16:
A 612 ; 90 R1=WaitResponseMMC();
A 613 .line 90
000153 D6 009C A 614 CALL _WaitResponseMMC
000156 89E0FF A 615 LDX -1(RR14),R0
A 616 ; 91 TransferSPI(0xFF);
A 617 .line 91
000159 1F70FF A 618 PUSH #255
00015C D6 0000 A 619 CALL _TransferSPI
00015F 50E0 A 620 POP R0
A 621 ; 92
A 622 ; 93 DeassertSS();
A 623 .line 93
000161 D6 0000 A 624 CALL _DeassertSS
ZiLOG Z8 Encore! Macro Assembler Version 2.45 (06120402) 14-Jan-09 10:50:23 page: 13
PC Object I Line Source mmc.src
A 625 ; 94 return 0;
A 626 .line 94
000164 B0E0 A 627 CLR R0
A 628 ; 95 }
000166 A 629 _3_L_17:
A 630 .line 95
000166 D6 0000 A 631 CALL __b_framereset
000169 AF A 632 RET
A 633 .endfunc "InitMMC",95,"_InitMMC"
A 634 SEGMENT ROM_DATA
A 635
A 636
A 637 ;**************************** _GetDataResponseMMC ***************************
A 638 ;Name Addr/Register Size Type
A 639 ;_TransferSPI IMPORT ----- function
A 640 ;dataresponse R15-1 0 variable
A 641
A 642
A 643 ; Aggregate Stack Size: -1 (words)
A 644
A 645
A 646 SEGMENT mmc_TEXT
A 647 ; 96
A 648 ; 97 unsigned char GetDataResponseMMC(void)
A 649 ; 98 //waits for the data response token sent by the card
A 650 ; 99 //used after writing a block of data to the card
A 651 ; 100 //returns the status bits which indicate status of write operation
A 652 ; 101 {
00016A A 653 _GetDataResponseMMC:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -