📄 mmc.lst
字号:
286 00d2 89F7 brne .L17
288 .LM32:
289 00d4 40E0 ldi r20,lo8(0)
290 00d6 50E0 ldi r21,hi8(0)
291 00d8 60E0 ldi r22,hlo8(0)
292 00da 70E0 ldi r23,hhi8(0)
293 00dc 8BE3 ldi r24,lo8(59)
294 00de 0E94 0000 call mmcSendCommand
296 .LM33:
297 00e2 40E0 ldi r20,lo8(512)
298 00e4 52E0 ldi r21,hi8(512)
299 00e6 60E0 ldi r22,hlo8(512)
300 00e8 70E0 ldi r23,hhi8(512)
301 00ea 80E1 ldi r24,lo8(16)
302 00ec 0E94 0000 call mmcSendCommand
304 .LM34:
305 00f0 80E0 ldi r24,lo8(0)
306 00f2 90E0 ldi r25,hi8(0)
307 .L8:
308 /* epilogue: frame size=0 */
309 00f4 CF91 pop r28
310 00f6 1F91 pop r17
311 00f8 0895 ret
312 /* epilogue end (size=3) */
313 /* function mmcReset_1 size 57 (52) */
320 .Lscope3:
322 .global mmcReset
324 mmcReset:
326 .LM35:
327 /* prologue: frame size=0 */
328 00fa CF93 push r28
329 /* prologue end (size=1) */
331 .LM36:
332 00fc C0E0 ldi r28,lo8(0)
333 .L29:
335 .LM37:
336 00fe 0E94 0000 call mmcReset_1
337 0102 8823 tst r24
338 0104 19F4 brne .L27
339 0106 80E0 ldi r24,lo8(0)
340 0108 90E0 ldi r25,hi8(0)
341 010a 05C0 rjmp .L24
342 .L27:
343 010c CF5F subi r28,lo8(-(1))
344 010e C233 cpi r28,lo8(50)
345 0110 B0F3 brlo .L29
347 .LM38:
348 0112 8FEF ldi r24,lo8(255)
349 0114 90E0 ldi r25,hi8(255)
350 .L24:
351 /* epilogue: frame size=0 */
352 0116 CF91 pop r28
353 0118 0895 ret
354 /* epilogue end (size=2) */
355 /* function mmcReset size 16 (13) */
360 .Lscope4:
364 .global mmcRead
366 mmcRead:
368 .LM39:
369 /* prologue: frame size=0 */
370 011a 0F93 push r16
371 011c 1F93 push r17
372 011e CF93 push r28
373 0120 DF93 push r29
374 /* prologue end (size=4) */
375 0122 DC01 movw r26,r24
376 0124 CB01 movw r24,r22
377 0126 8A01 movw r16,r20
379 .LM40:
380 0128 C498 cbi 56-0x20,4
382 .LM41:
383 012a 39E0 ldi r19,9
384 012c 880F 1: lsl r24
385 012e 991F rol r25
386 0130 AA1F rol r26
387 0132 BB1F rol r27
388 0134 3A95 dec r19
389 0136 D1F7 brne 1b
390 0138 AC01 movw r20,r24
391 013a BD01 movw r22,r26
392 013c 81E1 ldi r24,lo8(17)
393 013e 0E94 0000 call mmcCommand
395 .LM42:
396 0142 8823 tst r24
397 0144 11F0 breq .L34
399 .LM43:
400 0146 9927 clr r25
401 0148 19C0 rjmp .L32
402 .L34:
404 .LM44:
405 014a 8FEF ldi r24,lo8(-1)
406 014c 0E94 0000 call spiTransferByte
407 0150 8E3F cpi r24,lo8(-2)
408 0152 D9F7 brne .L34
409 0154 CFEF ldi r28,lo8(511)
410 0156 D1E0 ldi r29,hi8(511)
411 .L40:
413 .LM45:
414 0158 8FEF ldi r24,lo8(-1)
415 015a 0E94 0000 call spiTransferByte
416 015e F801 movw r30,r16
417 0160 8193 st Z+,r24
418 0162 8F01 movw r16,r30
420 .LM46:
421 0164 2197 sbiw r28,1
422 0166 D7FF sbrs r29,7
423 0168 F7CF rjmp .L40
425 .LM47:
426 016a 8FEF ldi r24,lo8(-1)
427 016c 0E94 0000 call spiTransferByte
429 .LM48:
430 0170 8FEF ldi r24,lo8(-1)
431 0172 0E94 0000 call spiTransferByte
433 .LM49:
434 0176 C49A sbi 56-0x20,4
436 .LM50:
437 0178 80E0 ldi r24,lo8(0)
438 017a 90E0 ldi r25,hi8(0)
439 .L32:
440 /* epilogue: frame size=0 */
441 017c DF91 pop r29
442 017e CF91 pop r28
443 0180 1F91 pop r17
444 0182 0F91 pop r16
445 0184 0895 ret
446 /* epilogue end (size=5) */
447 /* function mmcRead size 54 (45) */
453 .Lscope5:
457 .global mmcWrite
459 mmcWrite:
461 .LM51:
462 /* prologue: frame size=0 */
463 0186 0F93 push r16
464 0188 1F93 push r17
465 018a CF93 push r28
466 018c DF93 push r29
467 /* prologue end (size=4) */
468 018e DC01 movw r26,r24
469 0190 CB01 movw r24,r22
470 0192 8A01 movw r16,r20
472 .LM52:
473 0194 C498 cbi 56-0x20,4
475 .LM53:
476 0196 49E0 ldi r20,9
477 0198 880F 1: lsl r24
478 019a 991F rol r25
479 019c AA1F rol r26
480 019e BB1F rol r27
481 01a0 4A95 dec r20
482 01a2 D1F7 brne 1b
483 01a4 AC01 movw r20,r24
484 01a6 BD01 movw r22,r26
485 01a8 88E1 ldi r24,lo8(24)
486 01aa 0E94 0000 call mmcCommand
488 .LM54:
489 01ae 8823 tst r24
490 01b0 11F0 breq .L44
492 .LM55:
493 01b2 9927 clr r25
494 01b4 2AC0 rjmp .L43
495 .L44:
497 .LM56:
498 01b6 8FEF ldi r24,lo8(-1)
499 01b8 0E94 0000 call spiTransferByte
501 .LM57:
502 01bc 8EEF ldi r24,lo8(-2)
503 01be 0E94 0000 call spiTransferByte
504 01c2 CFEF ldi r28,lo8(511)
505 01c4 D1E0 ldi r29,hi8(511)
506 .L48:
508 .LM58:
509 01c6 F801 movw r30,r16
510 01c8 8191 ld r24,Z+
511 01ca 8F01 movw r16,r30
512 01cc 0E94 0000 call spiTransferByte
514 .LM59:
515 01d0 2197 sbiw r28,1
516 01d2 D7FF sbrs r29,7
517 01d4 F8CF rjmp .L48
519 .LM60:
520 01d6 8FEF ldi r24,lo8(-1)
521 01d8 0E94 0000 call spiTransferByte
523 .LM61:
524 01dc 8FEF ldi r24,lo8(-1)
525 01de 0E94 0000 call spiTransferByte
527 .LM62:
528 01e2 8FEF ldi r24,lo8(-1)
529 01e4 0E94 0000 call spiTransferByte
531 .LM63:
532 01e8 282F mov r18,r24
533 01ea 3327 clr r19
534 01ec C901 movw r24,r18
535 01ee 8F71 andi r24,lo8(31)
536 01f0 9070 andi r25,hi8(31)
537 01f2 0597 sbiw r24,5
538 01f4 11F0 breq .L50
539 01f6 C901 movw r24,r18
540 01f8 08C0 rjmp .L43
541 .L50:
543 .LM64:
544 01fa 8FEF ldi r24,lo8(-1)
545 01fc 0E94 0000 call spiTransferByte
546 0200 8823 tst r24
547 0202 D9F3 breq .L50
549 .LM65:
550 0204 C49A sbi 56-0x20,4
552 .LM66:
553 0206 80E0 ldi r24,lo8(0)
554 0208 90E0 ldi r25,hi8(0)
555 .L43:
556 /* epilogue: frame size=0 */
557 020a DF91 pop r29
558 020c CF91 pop r28
559 020e 1F91 pop r17
560 0210 0F91 pop r16
561 0212 0895 ret
562 /* epilogue end (size=5) */
563 /* function mmcWrite size 72 (63) */
569 .Lscope6:
572 .global Read_CID_MMC
574 Read_CID_MMC:
116:mmc.c **** //-------------------------------------------------------------------------
117:mmc.c **** //Routine for reading CID Registers from MMC/SD-Card (16Bytes)
118:mmc.c **** //Return 0 if no Error.
119:mmc.c **** uint8_t Read_CID_MMC(uint8_t *buffer){
576 .LM67:
577 /* prologue: frame size=0 */
578 0214 1F93 push r17
579 0216 CF93 push r28
580 0218 DF93 push r29
581 /* prologue end (size=3) */
582 021a EC01 movw r28,r24
120:mmc.c **** uint8_t r1,i;
121:mmc.c ****
122:mmc.c **** CSL; // assert chip select
584 .LM68:
585 021c C498 cbi 56-0x20,4
123:mmc.c **** r1 = mmcCommand(MMC_SEND_CID,0); // reading CID Registers
587 .LM69:
588 021e 40E0 ldi r20,lo8(0)
589 0220 50E0 ldi r21,hi8(0)
590 0222 60E0 ldi r22,hlo8(0)
591 0224 70E0 ldi r23,hhi8(0)
592 0226 8AE0 ldi r24,lo8(10)
593 0228 0E94 0000 call mmcCommand
124:mmc.c **** if(r1 != 0)return r1;
595 .LM70:
596 022c 8823 tst r24
597 022e 11F0 breq .L57
599 .LM71:
600 0230 9927 clr r25
601 0232 17C0 rjmp .L55
602 .L57:
125:mmc.c **** while(spiTransferByte(0xFF)!=MMC_STARTBLOCK_READ);// wait for block start
604 .LM72:
605 0234 8FEF ldi r24,lo8(-1)
606 0236 0E94 0000 call spiTransferByte
607 023a 8E3F cpi r24,lo8(-2)
608 023c D9F7 brne .L57
609 023e 1FE0 ldi r17,lo8(15)
610 .L63:
126:mmc.c **** for(i=0; i<16; i++){
127:mmc.c **** *buffer++=spiTransferByte(0xFF); // read in data 16Byte
612 .LM73:
613 0240 8FEF ldi r24,lo8(-1)
614 0242 0E94 0000 call spiTransferByte
615 0246 8993 st Y+,r24
617 .LM74:
618 0248 1150 subi r17,lo8(-(-1))
619 024a 17FF sbrs r17,7
620 024c F9CF rjmp .L63
621 024e 1FEF ldi r17,lo8(-1)
128:mmc.c **** }
129:mmc.c **** spiTransferByte(0xFF); // read 16-bit CRC
623 .LM75:
624 0250 812F mov r24,r17
625 0252 0E94 0000 call spiTransferByte
130:mmc.c **** spiTransferByte(0xFF);
627 .LM76:
628 0256 812F mov r24,r17
629 0258 0E94 0000 call spiTransferByte
131:mmc.c **** CSH; // release chip select
631 .LM77:
632 025c C49A sbi 56-0x20,4
132:mmc.c ****
133:mmc.c **** return(0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -