📄 mmc.lst
字号:
634 .LM78:
635 025e 80E0 ldi r24,lo8(0)
636 0260 90E0 ldi r25,hi8(0)
637 .L55:
638 /* epilogue: frame size=0 */
639 0262 DF91 pop r29
640 0264 CF91 pop r28
641 0266 1F91 pop r17
642 0268 0895 ret
643 /* epilogue end (size=4) */
644 /* function Read_CID_MMC size 43 (36) */
650 .Lscope7:
653 .global Read_CSD_MMC
655 Read_CSD_MMC:
134:mmc.c **** }
135:mmc.c **** //-------------------------------------------------------------------------
136:mmc.c **** //Routine for reading CSD Registers from MMC/SD-Card (16Bytes)
137:mmc.c **** //Return 0 if no Error.
138:mmc.c **** uint8_t Read_CSD_MMC(uint8_t *buffer){
657 .LM79:
658 /* prologue: frame size=0 */
659 026a 1F93 push r17
660 026c CF93 push r28
661 026e DF93 push r29
662 /* prologue end (size=3) */
663 0270 EC01 movw r28,r24
139:mmc.c **** uint8_t r1,i;
140:mmc.c ****
141:mmc.c **** CSL; // assert chip select
665 .LM80:
666 0272 C498 cbi 56-0x20,4
142:mmc.c **** r1 = mmcCommand(MMC_SEND_CSD,0); // reading CSD Registers
668 .LM81:
669 0274 40E0 ldi r20,lo8(0)
670 0276 50E0 ldi r21,hi8(0)
671 0278 60E0 ldi r22,hlo8(0)
672 027a 70E0 ldi r23,hhi8(0)
673 027c 89E0 ldi r24,lo8(9)
674 027e 0E94 0000 call mmcCommand
143:mmc.c **** if(r1 != 0)return r1;
676 .LM82:
677 0282 8823 tst r24
678 0284 11F0 breq .L68
680 .LM83:
681 0286 9927 clr r25
682 0288 17C0 rjmp .L66
683 .L68:
144:mmc.c **** while(spiTransferByte(0xFF)!=MMC_STARTBLOCK_READ);// wait for block start
685 .LM84:
686 028a 8FEF ldi r24,lo8(-1)
687 028c 0E94 0000 call spiTransferByte
688 0290 8E3F cpi r24,lo8(-2)
689 0292 D9F7 brne .L68
690 0294 1FE0 ldi r17,lo8(15)
691 .L74:
145:mmc.c **** for(i=0; i<16; i++){
146:mmc.c **** *buffer++=spiTransferByte(0xFF); // read in data
693 .LM85:
694 0296 8FEF ldi r24,lo8(-1)
695 0298 0E94 0000 call spiTransferByte
696 029c 8993 st Y+,r24
698 .LM86:
699 029e 1150 subi r17,lo8(-(-1))
700 02a0 17FF sbrs r17,7
701 02a2 F9CF rjmp .L74
702 02a4 1FEF ldi r17,lo8(-1)
147:mmc.c **** }
148:mmc.c **** spiTransferByte(0xFF); // read 16-bit CRC
704 .LM87:
705 02a6 812F mov r24,r17
706 02a8 0E94 0000 call spiTransferByte
149:mmc.c **** spiTransferByte(0xFF);
708 .LM88:
709 02ac 812F mov r24,r17
710 02ae 0E94 0000 call spiTransferByte
150:mmc.c **** CSH;
712 .LM89:
713 02b2 C49A sbi 56-0x20,4
151:mmc.c ****
152:mmc.c **** return(0);
715 .LM90:
716 02b4 80E0 ldi r24,lo8(0)
717 02b6 90E0 ldi r25,hi8(0)
718 .L66:
719 /* epilogue: frame size=0 */
720 02b8 DF91 pop r29
721 02ba CF91 pop r28
722 02bc 1F91 pop r17
723 02be 0895 ret
724 /* epilogue end (size=4) */
725 /* function Read_CSD_MMC size 43 (36) */
731 .Lscope8:
733 .global MMC_get_volume_info
735 MMC_get_volume_info:
153:mmc.c **** }
154:mmc.c **** //-------------------------------------------------------------------------
155:mmc.c **** //returns the :
156:mmc.c **** // size of the card in MB ( ret * 1024^2) == bytes
157:mmc.c **** // sector count and multiplier MB are in u08 == C_SIZE / (2^(9-C_SIZE_MULT))
158:mmc.c **** // name of the media
159:mmc.c **** void MMC_get_volume_info(void){
737 .LM91:
738 /* prologue: frame size=31 */
739 02c0 0F93 push r16
740 02c2 1F93 push r17
741 02c4 CF93 push r28
742 02c6 DF93 push r29
743 02c8 CDB7 in r28,__SP_L__
744 02ca DEB7 in r29,__SP_H__
745 02cc 6F97 sbiw r28,31
746 02ce 0FB6 in __tmp_reg__,__SREG__
747 02d0 F894 cli
748 02d2 DEBF out __SP_H__,r29
749 02d4 0FBE out __SREG__,__tmp_reg__
750 02d6 CDBF out __SP_L__,r28
751 /* prologue end (size=12) */
752 02d8 8E01 movw r16,r28
753 02da 0F5F subi r16,lo8(-(1))
754 02dc 1F4F sbci r17,hi8(-(1))
755 02de F801 movw r30,r16
756 02e0 8FE0 ldi r24,lo8(15)
757 .L81:
160:mmc.c **** uint8_t i,buffer[16];
161:mmc.c **** struct MMC_VOLUME_INFO vinf;
162:mmc.c ****
163:mmc.c **** for(i=0;i<16;i++)buffer[i]=0;
759 .LM92:
760 02e2 1192 st Z+,__zero_reg__
761 02e4 8150 subi r24,lo8(-(-1))
762 02e6 87FF sbrs r24,7
763 02e8 FCCF rjmp .L81
164:mmc.c **** Read_CSD_MMC(buffer);
765 .LM93:
766 02ea CE01 movw r24,r28
767 02ec 0196 adiw r24,1
768 02ee 0E94 0000 call Read_CSD_MMC
165:mmc.c ****
166:mmc.c **** vinf.sector_count=buffer[6]&0x03;
770 .LM94:
771 02f2 8F81 ldd r24,Y+7
772 02f4 9927 clr r25
773 02f6 AA27 clr r26
774 02f8 BB27 clr r27
775 02fa 8370 andi r24,lo8(3)
776 02fc 9070 andi r25,hi8(3)
777 02fe A070 andi r26,hlo8(3)
778 0300 B070 andi r27,hhi8(3)
167:mmc.c **** vinf.sector_count<<=8;
780 .LM95:
781 0302 2227 clr r18
782 0304 382F mov r19,r24
783 0306 492F mov r20,r25
784 0308 5A2F mov r21,r26
168:mmc.c **** vinf.sector_count+=buffer[7];
786 .LM96:
787 030a 8885 ldd r24,Y+8
788 030c 280F add r18,r24
789 030e 311D adc r19,__zero_reg__
790 0310 411D adc r20,__zero_reg__
791 0312 511D adc r21,__zero_reg__
169:mmc.c **** vinf.sector_count<<=2;
793 .LM97:
794 0314 F2E0 ldi r31,2
795 0316 220F 1: lsl r18
796 0318 331F rol r19
797 031a 441F rol r20
798 031c 551F rol r21
799 031e FA95 dec r31
800 0320 D1F7 brne 1b
170:mmc.c **** vinf.sector_count+=(buffer[8]&0xc0)>>6;
802 .LM98:
803 0322 8985 ldd r24,Y+9
804 0324 9927 clr r25
805 0326 E6E0 ldi r30,6
806 0328 9695 1: lsr r25
807 032a 8795 ror r24
808 032c EA95 dec r30
809 032e E1F7 brne 1b
810 0330 AA27 clr r26
811 0332 97FD sbrc r25,7
812 0334 A095 com r26
813 0336 BA2F mov r27,r26
814 0338 280F add r18,r24
815 033a 391F adc r19,r25
816 033c 4A1F adc r20,r26
817 033e 5B1F adc r21,r27
818 0340 2E8B std Y+22,r18
819 0342 3F8B std Y+23,r19
820 0344 488F std Y+24,r20
821 0346 598F std Y+25,r21
171:mmc.c ****
172:mmc.c **** vinf.sector_multiply=buffer[9]&0x03;
823 .LM99:
824 0348 6A85 ldd r22,Y+10
825 034a 6370 andi r22,lo8(3)
173:mmc.c **** vinf.sector_multiply<<=1;
827 .LM100:
828 034c 660F lsl r22
174:mmc.c **** vinf.sector_multiply+=(buffer[10]&0x80)>>7;
830 .LM101:
831 034e 8B85 ldd r24,Y+11
832 0350 9927 clr r25
833 0352 880F lsl r24
834 0354 892F mov r24,r25
835 0356 881F rol r24
836 0358 990B sbc r25,r25
837 035a 9195 neg r25
838 035c 680F add r22,r24
839 035e 6D8B std Y+21,r22
175:mmc.c **** //SD的容量
176:mmc.c **** vinf.size_MB=vinf.sector_count>>(9-vinf.sector_multiply);
841 .LM102:
842 0360 89E0 ldi r24,lo8(9)
843 0362 90E0 ldi r25,hi8(9)
844 0364 861B sub r24,r22
845 0366 9109 sbc r25,__zero_reg__
846 0368 04C0 rjmp 2f
847 036a 5695 1: lsr r21
848 036c 4795 ror r20
849 036e 3795 ror r19
850 0370 2795 ror r18
851 0372 8A95 2: dec r24
852 0374 D2F7 brpl 1b
853 0376 298B std Y+17,r18
854 0378 3A8B std Y+18,r19
855 037a 4B8B std Y+19,r20
856 037c 5C8B std Y+20,r21
857 037e F801 movw r30,r16
858 0380 8FE0 ldi r24,lo8(15)
859 .L85:
177:mmc.c ****
178:mmc.c **** for(i=0;i<16;i++)buffer[i]=0;
861 .LM103:
862 0382 1192 st Z+,__zero_reg__
863 0384 8150 subi r24,lo8(-(-1))
864 0386 87FF sbrs r24,7
865 0388 FCCF rjmp .L85
179:mmc.c **** Read_CID_MMC(buffer);
867 .LM104:
868 038a CE01 movw r24,r28
869 038c 0196 adiw r24,1
870 038e 0E94 0000 call Read_CID_MMC
871 /* epilogue: frame size=31 */
872 0392 6F96 adiw r28,31
873 0394 0FB6 in __tmp_reg__,__SREG__
874 0396 F894 cli
875 0398 DEBF out __SP_H__,r29
876 039a 0FBE out __SREG__,__tmp_reg__
877 039c CDBF out __SP_L__,r28
878 039e DF91 pop r29
879 03a0 CF91 pop r28
880 03a2 1F91 pop r17
881 03a4 0F91 pop r16
882 03a6 0895 ret
883 /* epilogue end (size=11) */
884 /* function MMC_get_volume_info size 117 (94) */
891 .Lscope9:
892 .text
894 Letext:
895 /* File "mmc.c": code 470 = 0x01d6 ( 394), prologues 34, epilogues 42 */
DEFINED SYMBOLS
*ABS*:00000000 mmc.c
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:79 .text:00000000 mmcInit
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:104 .text:0000000a mmcCommand
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:192 .text:00000074 mmcSendCommand
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:222 .text:00000088 mmcReset_1
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:324 .text:000000fa mmcReset
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:366 .text:0000011a mmcRead
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:459 .text:00000186 mmcWrite
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:574 .text:00000214 Read_CID_MMC
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:655 .text:0000026a Read_CSD_MMC
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:735 .text:000002c0 MMC_get_volume_info
C:\Users\summer\AppData\Local\Temp/ccSGcaaa.s:894 .text:000003a8 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
spiInit
spiTransferByte
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -