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

📄 sd_lib.lss

📁 实现了avr下对sd卡的读写,支持文件存取,删除的功能
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     150:	0e 94 8e 00 	call	0x11c <spiTransferByte>
	spiTransferByte(arg>>16);
     154:	c8 01       	movw	r24, r16
     156:	aa 27       	eor	r26, r26
     158:	bb 27       	eor	r27, r27
     15a:	0e 94 8e 00 	call	0x11c <spiTransferByte>
	spiTransferByte(arg>>8);
     15e:	bb 27       	eor	r27, r27
     160:	a1 2f       	mov	r26, r17
     162:	90 2f       	mov	r25, r16
     164:	8f 2d       	mov	r24, r15
     166:	0e 94 8e 00 	call	0x11c <spiTransferByte>
	spiTransferByte(arg);
     16a:	8e 2d       	mov	r24, r14
     16c:	0e 94 8e 00 	call	0x11c <spiTransferByte>
	spiTransferByte(0x95);	// crc valid only for MMC_GO_IDLE_STATE
     170:	85 e9       	ldi	r24, 0x95	; 149
     172:	0e 94 8e 00 	call	0x11c <spiTransferByte>
	// end command
	// wait for response
	// if more than 8 retries, card has timed-out
	// return the received 0xFF
	while((r1=spiTransferByte(0xFF))==0xFF)if(retry++>8)break;
     176:	04 c0       	rjmp	.+8      	; 0x180 <mmcCommand+0x4e>
     178:	8c 2f       	mov	r24, r28
     17a:	cf 5f       	subi	r28, 0xFF	; 255
     17c:	89 30       	cpi	r24, 0x09	; 9
     17e:	30 f4       	brcc	.+12     	; 0x18c <mmcCommand+0x5a>
     180:	8f ef       	ldi	r24, 0xFF	; 255
     182:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     186:	98 2f       	mov	r25, r24
     188:	8f 3f       	cpi	r24, 0xFF	; 255
     18a:	b1 f3       	breq	.-20     	; 0x178 <mmcCommand+0x46>
	// return response
	return r1;
}
     18c:	89 2f       	mov	r24, r25
     18e:	99 27       	eor	r25, r25
     190:	cf 91       	pop	r28
     192:	1f 91       	pop	r17
     194:	0f 91       	pop	r16
     196:	ff 90       	pop	r15
     198:	ef 90       	pop	r14
     19a:	08 95       	ret

0000019c <mmcSendCommand>:
     19c:	9a 01       	movw	r18, r20
     19e:	ab 01       	movw	r20, r22
     1a0:	c4 98       	cbi	0x18, 4	; 24
     1a2:	ba 01       	movw	r22, r20
     1a4:	a9 01       	movw	r20, r18
     1a6:	0e 94 99 00 	call	0x132 <mmcCommand>
     1aa:	c4 9a       	sbi	0x18, 4	; 24
     1ac:	99 27       	eor	r25, r25
     1ae:	08 95       	ret

000001b0 <mmcReset_1>:
     1b0:	1f 93       	push	r17
     1b2:	cf 93       	push	r28
     1b4:	10 e0       	ldi	r17, 0x00	; 0
     1b6:	c9 e0       	ldi	r28, 0x09	; 9
     1b8:	8f ef       	ldi	r24, 0xFF	; 255
     1ba:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     1be:	c1 50       	subi	r28, 0x01	; 1
     1c0:	c7 ff       	sbrs	r28, 7
     1c2:	fa cf       	rjmp	.-12     	; 0x1b8 <mmcReset_1+0x8>
     1c4:	40 e0       	ldi	r20, 0x00	; 0
     1c6:	50 e0       	ldi	r21, 0x00	; 0
     1c8:	60 e0       	ldi	r22, 0x00	; 0
     1ca:	70 e0       	ldi	r23, 0x00	; 0
     1cc:	80 e0       	ldi	r24, 0x00	; 0
     1ce:	0e 94 ce 00 	call	0x19c <mmcSendCommand>
     1d2:	1f 5f       	subi	r17, 0xFF	; 255
     1d4:	1b 30       	cpi	r17, 0x0B	; 11
     1d6:	68 f4       	brcc	.+26     	; 0x1f2 <mmcReset_1+0x42>
     1d8:	81 30       	cpi	r24, 0x01	; 1
     1da:	69 f7       	brne	.-38     	; 0x1b6 <mmcReset_1+0x6>
     1dc:	10 e0       	ldi	r17, 0x00	; 0
     1de:	40 e0       	ldi	r20, 0x00	; 0
     1e0:	50 e0       	ldi	r21, 0x00	; 0
     1e2:	60 e0       	ldi	r22, 0x00	; 0
     1e4:	70 e0       	ldi	r23, 0x00	; 0
     1e6:	81 e0       	ldi	r24, 0x01	; 1
     1e8:	0e 94 ce 00 	call	0x19c <mmcSendCommand>
     1ec:	1f 5f       	subi	r17, 0xFF	; 255
     1ee:	15 36       	cpi	r17, 0x65	; 101
     1f0:	18 f0       	brcs	.+6      	; 0x1f8 <mmcReset_1+0x48>
     1f2:	8f ef       	ldi	r24, 0xFF	; 255
     1f4:	90 e0       	ldi	r25, 0x00	; 0
     1f6:	12 c0       	rjmp	.+36     	; 0x21c <mmcReset_1+0x6c>
     1f8:	88 23       	and	r24, r24
     1fa:	89 f7       	brne	.-30     	; 0x1de <mmcReset_1+0x2e>
     1fc:	40 e0       	ldi	r20, 0x00	; 0
     1fe:	50 e0       	ldi	r21, 0x00	; 0
     200:	60 e0       	ldi	r22, 0x00	; 0
     202:	70 e0       	ldi	r23, 0x00	; 0
     204:	8b e3       	ldi	r24, 0x3B	; 59
     206:	0e 94 ce 00 	call	0x19c <mmcSendCommand>
     20a:	40 e0       	ldi	r20, 0x00	; 0
     20c:	52 e0       	ldi	r21, 0x02	; 2
     20e:	60 e0       	ldi	r22, 0x00	; 0
     210:	70 e0       	ldi	r23, 0x00	; 0
     212:	80 e1       	ldi	r24, 0x10	; 16
     214:	0e 94 ce 00 	call	0x19c <mmcSendCommand>
     218:	80 e0       	ldi	r24, 0x00	; 0
     21a:	90 e0       	ldi	r25, 0x00	; 0
     21c:	cf 91       	pop	r28
     21e:	1f 91       	pop	r17
     220:	08 95       	ret

00000222 <mmcReset>:
     222:	cf 93       	push	r28
     224:	c0 e0       	ldi	r28, 0x00	; 0
     226:	0e 94 d8 00 	call	0x1b0 <mmcReset_1>
     22a:	88 23       	and	r24, r24
     22c:	19 f4       	brne	.+6      	; 0x234 <mmcReset+0x12>
     22e:	80 e0       	ldi	r24, 0x00	; 0
     230:	90 e0       	ldi	r25, 0x00	; 0
     232:	05 c0       	rjmp	.+10     	; 0x23e <mmcReset+0x1c>
     234:	cf 5f       	subi	r28, 0xFF	; 255
     236:	c2 33       	cpi	r28, 0x32	; 50
     238:	b0 f3       	brcs	.-20     	; 0x226 <mmcReset+0x4>
     23a:	8f ef       	ldi	r24, 0xFF	; 255
     23c:	90 e0       	ldi	r25, 0x00	; 0
     23e:	cf 91       	pop	r28
     240:	08 95       	ret

00000242 <mmcRead>:
     242:	0f 93       	push	r16
     244:	1f 93       	push	r17
     246:	cf 93       	push	r28
     248:	df 93       	push	r29
     24a:	dc 01       	movw	r26, r24
     24c:	cb 01       	movw	r24, r22
     24e:	8a 01       	movw	r16, r20
     250:	c4 98       	cbi	0x18, 4	; 24
     252:	39 e0       	ldi	r19, 0x09	; 9
     254:	88 0f       	add	r24, r24
     256:	99 1f       	adc	r25, r25
     258:	aa 1f       	adc	r26, r26
     25a:	bb 1f       	adc	r27, r27
     25c:	3a 95       	dec	r19
     25e:	d1 f7       	brne	.-12     	; 0x254 <mmcRead+0x12>
     260:	ac 01       	movw	r20, r24
     262:	bd 01       	movw	r22, r26
     264:	81 e1       	ldi	r24, 0x11	; 17
     266:	0e 94 99 00 	call	0x132 <mmcCommand>
     26a:	88 23       	and	r24, r24
     26c:	11 f0       	breq	.+4      	; 0x272 <mmcRead+0x30>
     26e:	99 27       	eor	r25, r25
     270:	19 c0       	rjmp	.+50     	; 0x2a4 <mmcRead+0x62>
     272:	8f ef       	ldi	r24, 0xFF	; 255
     274:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     278:	8e 3f       	cpi	r24, 0xFE	; 254
     27a:	d9 f7       	brne	.-10     	; 0x272 <mmcRead+0x30>
     27c:	cf ef       	ldi	r28, 0xFF	; 255
     27e:	d1 e0       	ldi	r29, 0x01	; 1
     280:	8f ef       	ldi	r24, 0xFF	; 255
     282:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     286:	f8 01       	movw	r30, r16
     288:	81 93       	st	Z+, r24
     28a:	8f 01       	movw	r16, r30
     28c:	21 97       	sbiw	r28, 0x01	; 1
     28e:	d7 ff       	sbrs	r29, 7
     290:	f7 cf       	rjmp	.-18     	; 0x280 <mmcRead+0x3e>
     292:	8f ef       	ldi	r24, 0xFF	; 255
     294:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     298:	8f ef       	ldi	r24, 0xFF	; 255
     29a:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     29e:	c4 9a       	sbi	0x18, 4	; 24
     2a0:	80 e0       	ldi	r24, 0x00	; 0
     2a2:	90 e0       	ldi	r25, 0x00	; 0
     2a4:	df 91       	pop	r29
     2a6:	cf 91       	pop	r28
     2a8:	1f 91       	pop	r17
     2aa:	0f 91       	pop	r16
     2ac:	08 95       	ret

000002ae <mmcWrite>:
     2ae:	0f 93       	push	r16
     2b0:	1f 93       	push	r17
     2b2:	cf 93       	push	r28
     2b4:	df 93       	push	r29
     2b6:	dc 01       	movw	r26, r24
     2b8:	cb 01       	movw	r24, r22
     2ba:	8a 01       	movw	r16, r20
     2bc:	c4 98       	cbi	0x18, 4	; 24
     2be:	49 e0       	ldi	r20, 0x09	; 9
     2c0:	88 0f       	add	r24, r24
     2c2:	99 1f       	adc	r25, r25
     2c4:	aa 1f       	adc	r26, r26
     2c6:	bb 1f       	adc	r27, r27
     2c8:	4a 95       	dec	r20
     2ca:	d1 f7       	brne	.-12     	; 0x2c0 <mmcWrite+0x12>
     2cc:	ac 01       	movw	r20, r24
     2ce:	bd 01       	movw	r22, r26
     2d0:	88 e1       	ldi	r24, 0x18	; 24
     2d2:	0e 94 99 00 	call	0x132 <mmcCommand>
     2d6:	88 23       	and	r24, r24
     2d8:	11 f0       	breq	.+4      	; 0x2de <mmcWrite+0x30>
     2da:	99 27       	eor	r25, r25
     2dc:	2a c0       	rjmp	.+84     	; 0x332 <mmcWrite+0x84>
     2de:	8f ef       	ldi	r24, 0xFF	; 255
     2e0:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     2e4:	8e ef       	ldi	r24, 0xFE	; 254
     2e6:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     2ea:	cf ef       	ldi	r28, 0xFF	; 255
     2ec:	d1 e0       	ldi	r29, 0x01	; 1
     2ee:	f8 01       	movw	r30, r16
     2f0:	81 91       	ld	r24, Z+
     2f2:	8f 01       	movw	r16, r30
     2f4:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     2f8:	21 97       	sbiw	r28, 0x01	; 1
     2fa:	d7 ff       	sbrs	r29, 7
     2fc:	f8 cf       	rjmp	.-16     	; 0x2ee <mmcWrite+0x40>
     2fe:	8f ef       	ldi	r24, 0xFF	; 255
     300:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     304:	8f ef       	ldi	r24, 0xFF	; 255
     306:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     30a:	8f ef       	ldi	r24, 0xFF	; 255
     30c:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     310:	28 2f       	mov	r18, r24
     312:	33 27       	eor	r19, r19
     314:	c9 01       	movw	r24, r18
     316:	8f 71       	andi	r24, 0x1F	; 31
     318:	90 70       	andi	r25, 0x00	; 0
     31a:	05 97       	sbiw	r24, 0x05	; 5
     31c:	11 f0       	breq	.+4      	; 0x322 <mmcWrite+0x74>
     31e:	c9 01       	movw	r24, r18
     320:	08 c0       	rjmp	.+16     	; 0x332 <mmcWrite+0x84>
     322:	8f ef       	ldi	r24, 0xFF	; 255
     324:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     328:	88 23       	and	r24, r24
     32a:	d9 f3       	breq	.-10     	; 0x322 <mmcWrite+0x74>
     32c:	c4 9a       	sbi	0x18, 4	; 24
     32e:	80 e0       	ldi	r24, 0x00	; 0
     330:	90 e0       	ldi	r25, 0x00	; 0
     332:	df 91       	pop	r29
     334:	cf 91       	pop	r28
     336:	1f 91       	pop	r17
     338:	0f 91       	pop	r16
     33a:	08 95       	ret

0000033c <Read_CID_MMC>:
//-------------------------------------------------------------------------
//Routine for reading CID Registers from MMC/SD-Card (16Bytes) 
//Return 0 if no Error.
uint8_t Read_CID_MMC(uint8_t *buffer){
     33c:	1f 93       	push	r17
     33e:	cf 93       	push	r28
     340:	df 93       	push	r29
     342:	ec 01       	movw	r28, r24
	uint8_t r1,i;

	CSL;											// assert chip select
     344:	c4 98       	cbi	0x18, 4	; 24
	r1 = mmcCommand(MMC_SEND_CID,0);				// reading CID Registers
     346:	40 e0       	ldi	r20, 0x00	; 0
     348:	50 e0       	ldi	r21, 0x00	; 0
     34a:	60 e0       	ldi	r22, 0x00	; 0
     34c:	70 e0       	ldi	r23, 0x00	; 0
     34e:	8a e0       	ldi	r24, 0x0A	; 10
     350:	0e 94 99 00 	call	0x132 <mmcCommand>
	if(r1 != 0)return r1;
     354:	88 23       	and	r24, r24
     356:	11 f0       	breq	.+4      	; 0x35c <Read_CID_MMC+0x20>
     358:	99 27       	eor	r25, r25
     35a:	17 c0       	rjmp	.+46     	; 0x38a <Read_CID_MMC+0x4e>
	while(spiTransferByte(0xFF)!=MMC_STARTBLOCK_READ);// wait for block start
     35c:	8f ef       	ldi	r24, 0xFF	; 255
     35e:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     362:	8e 3f       	cpi	r24, 0xFE	; 254
     364:	d9 f7       	brne	.-10     	; 0x35c <Read_CID_MMC+0x20>
     366:	1f e0       	ldi	r17, 0x0F	; 15
	for(i=0; i<16; i++){
		*buffer++=spiTransferByte(0xFF);			// read in data  16Byte
     368:	8f ef       	ldi	r24, 0xFF	; 255
     36a:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     36e:	89 93       	st	Y+, r24
     370:	11 50       	subi	r17, 0x01	; 1
     372:	17 ff       	sbrs	r17, 7
     374:	f9 cf       	rjmp	.-14     	; 0x368 <Read_CID_MMC+0x2c>
     376:	1f ef       	ldi	r17, 0xFF	; 255
	}
	spiTransferByte(0xFF);							// read 16-bit CRC
     378:	81 2f       	mov	r24, r17
     37a:	0e 94 8e 00 	call	0x11c <spiTransferByte>
	spiTransferByte(0xFF);
     37e:	81 2f       	mov	r24, r17
     380:	0e 94 8e 00 	call	0x11c <spiTransferByte>
	CSH;											// release chip select
     384:	c4 9a       	sbi	0x18, 4	; 24
	
	return(0);
     386:	80 e0       	ldi	r24, 0x00	; 0
     388:	90 e0       	ldi	r25, 0x00	; 0
     38a:	df 91       	pop	r29
     38c:	cf 91       	pop	r28
     38e:	1f 91       	pop	r17
     390:	08 95       	ret

00000392 <Read_CSD_MMC>:
}
//-------------------------------------------------------------------------
//Routine for reading CSD Registers from MMC/SD-Card (16Bytes)
//Return 0 if no Error.
uint8_t Read_CSD_MMC(uint8_t *buffer){
     392:	1f 93       	push	r17
     394:	cf 93       	push	r28
     396:	df 93       	push	r29
     398:	ec 01       	movw	r28, r24
	uint8_t r1,i;
		
	CSL;											// assert chip select
     39a:	c4 98       	cbi	0x18, 4	; 24
	r1 = mmcCommand(MMC_SEND_CSD,0);				// reading CSD Registers
     39c:	40 e0       	ldi	r20, 0x00	; 0
     39e:	50 e0       	ldi	r21, 0x00	; 0
     3a0:	60 e0       	ldi	r22, 0x00	; 0
     3a2:	70 e0       	ldi	r23, 0x00	; 0
     3a4:	89 e0       	ldi	r24, 0x09	; 9
     3a6:	0e 94 99 00 	call	0x132 <mmcCommand>
	if(r1 != 0)return r1;
     3aa:	88 23       	and	r24, r24
     3ac:	11 f0       	breq	.+4      	; 0x3b2 <Read_CSD_MMC+0x20>
     3ae:	99 27       	eor	r25, r25
     3b0:	17 c0       	rjmp	.+46     	; 0x3e0 <Read_CSD_MMC+0x4e>
	while(spiTransferByte(0xFF)!=MMC_STARTBLOCK_READ);// wait for block start
     3b2:	8f ef       	ldi	r24, 0xFF	; 255
     3b4:	0e 94 8e 00 	call	0x11c <spiTransferByte>
     3b8:	8e 3f       	cpi	r24, 0xFE	; 254
     3ba:	d9 f7       	brne	.-10     	; 0x3b2 <Read_CSD_MMC+0x20>
     3bc:	1f e0       	ldi	r17, 0x0F	; 15
	for(i=0; i<16; i++){
		*buffer++=spiTransferByte(0xFF);			// read in data
     3be:	8f ef       	ldi	r24, 0xFF	; 255

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -