⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmc.lst

📁 实现了avr下对sd卡的读写,支持文件存取,删除的功能
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -