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

📄 main.lss

📁 用ATMEL AVR单片机开发的MMC程式在SPI模式
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     368:	cc b9       	out	0x0c, r28	; 12
	return (0);
}
     36a:	80 e0       	ldi	r24, 0x00	; 0
     36c:	90 e0       	ldi	r25, 0x00	; 0
     36e:	cf 91       	pop	r28
     370:	08 95       	ret

00000372 <main>:

//Hauptprogramm
void main (void)
{
     372:	cd e5       	ldi	r28, 0x5D	; 93
     374:	d2 e0       	ldi	r29, 0x02	; 2
     376:	de bf       	out	0x3e, r29	; 62
     378:	cd bf       	out	0x3d, r28	; 61
	//Initzialisierung der seriellen Schnittstelle
	IOInit();
     37a:	e9 df       	rcall	.-46     	; 0x34e
	
	//鰂fnet einen kanal f黵 printf
	fdevopen (uart_putchar, NULL, 0);
     37c:	40 e0       	ldi	r20, 0x00	; 0
     37e:	50 e0       	ldi	r21, 0x00	; 0
     380:	ba 01       	movw	r22, r20
     382:	8c ea       	ldi	r24, 0xAC	; 172
     384:	91 e0       	ldi	r25, 0x01	; 1
     386:	d7 d1       	rcall	.+942    	; 0x736
	printf ("Startup OK\nInitializing MMC/SD-Card!\n");
     388:	82 e7       	ldi	r24, 0x72	; 114
     38a:	90 e0       	ldi	r25, 0x00	; 0
     38c:	2c d2       	rcall	.+1112   	; 0x7e6

	//Initialisierung der MMC/SD-Karte
	char Timeout = 0;
     38e:	10 e0       	ldi	r17, 0x00	; 0
	char a = 1;	
	while (a !=0) /*ist der R點kgabewert ungleich NULL ist ein Fehler aufgetreten
					MMC/SD-Karte wird dann neu Initialisiert*/
	{
		a = Init_MMC();	
     390:	65 de       	rcall	.-822    	; 0x5c
		Timeout++;
     392:	1f 5f       	subi	r17, 0xFF	; 255
		if (Timeout == 200)
     394:	18 3c       	cpi	r17, 0xC8	; 200
     396:	21 f4       	brne	.+8      	; 0x3a0
			{
			printf ("Keine MMC/SD-Karte gefunden!!\n");
     398:	87 e9       	ldi	r24, 0x97	; 151
     39a:	90 e0       	ldi	r25, 0x00	; 0
     39c:	24 d2       	rcall	.+1096   	; 0x7e6
			while (1) {}
     39e:	ff cf       	rjmp	.-2      	; 0x39e
     3a0:	88 23       	and	r24, r24
     3a2:	b1 f7       	brne	.-20     	; 0x390
			}
	}
	//Initialisierung der MMC/SD-Karte ENDE!


	char Buffer[512];
	long addr = 0;
	char tmp = 0;


	//Erzeugt ein  Array von 512 Bytes mit dem Inhalt EEhex
	for (int a=0;a<512;a=a+1)
     3a4:	20 e0       	ldi	r18, 0x00	; 0
     3a6:	30 e0       	ldi	r19, 0x00	; 0
	{
	Buffer[a] = 0xEE;
     3a8:	3e 01       	movw	r6, r28
     3aa:	08 94       	sec
     3ac:	61 1c       	adc	r6, r1
     3ae:	71 1c       	adc	r7, r1
     3b0:	f9 01       	movw	r30, r18
     3b2:	e6 0d       	add	r30, r6
     3b4:	f7 1d       	adc	r31, r7
     3b6:	8e ee       	ldi	r24, 0xEE	; 238
     3b8:	80 83       	st	Z, r24
     3ba:	2f 5f       	subi	r18, 0xFF	; 255
     3bc:	3f 4f       	sbci	r19, 0xFF	; 255
     3be:	82 e0       	ldi	r24, 0x02	; 2
     3c0:	20 30       	cpi	r18, 0x00	; 0
     3c2:	38 07       	cpc	r19, r24
     3c4:	8c f3       	brlt	.-30     	; 0x3a8
	}


	//schreibt Array in den ersten Blocks der MMC/SD Karte (addr = 0)
	tmp = Write_Block_MMC (addr,Buffer);
     3c6:	a3 01       	movw	r20, r6
     3c8:	60 e0       	ldi	r22, 0x00	; 0
     3ca:	70 e0       	ldi	r23, 0x00	; 0
     3cc:	80 e0       	ldi	r24, 0x00	; 0
     3ce:	90 e0       	ldi	r25, 0x00	; 0
     3d0:	4f df       	rcall	.-354    	; 0x270
	if (tmp != 0) //ist der R點kgabewert ungleich NULL ist ein Fehler aufgetreten 
     3d2:	88 23       	and	r24, r24
     3d4:	61 f0       	breq	.+24     	; 0x3ee
		{
		printf("Error %x\n",tmp);
     3d6:	99 27       	eor	r25, r25
     3d8:	9f 93       	push	r25
     3da:	8f 93       	push	r24
     3dc:	85 eb       	ldi	r24, 0xB5	; 181
     3de:	90 e0       	ldi	r25, 0x00	; 0
     3e0:	9f 93       	push	r25
     3e2:	8f 93       	push	r24
     3e4:	ec d1       	rcall	.+984    	; 0x7be
     3e6:	0f 90       	pop	r0
     3e8:	0f 90       	pop	r0
     3ea:	0f 90       	pop	r0
     3ec:	0f 90       	pop	r0
		}	


	//auslesen des zweiten Blocks von der MMC/SD Karte (addr = 1)
	addr = 1;
	tmp = Read_Block_MMC (addr,Buffer);
     3ee:	a3 01       	movw	r20, r6
     3f0:	61 e0       	ldi	r22, 0x01	; 1
     3f2:	70 e0       	ldi	r23, 0x00	; 0
     3f4:	80 e0       	ldi	r24, 0x00	; 0
     3f6:	90 e0       	ldi	r25, 0x00	; 0
     3f8:	cc de       	rcall	.-616    	; 0x192
	if (tmp != 0) //ist der R點kgabewert ungleich NULL ist ein Fehler aufgetreten 
     3fa:	88 23       	and	r24, r24
     3fc:	61 f0       	breq	.+24     	; 0x416
		{
		printf("Error %x\n",tmp);
     3fe:	99 27       	eor	r25, r25
     400:	9f 93       	push	r25
     402:	8f 93       	push	r24
     404:	85 eb       	ldi	r24, 0xB5	; 181
     406:	90 e0       	ldi	r25, 0x00	; 0
     408:	9f 93       	push	r25
     40a:	8f 93       	push	r24
     40c:	d8 d1       	rcall	.+944    	; 0x7be
     40e:	0f 90       	pop	r0
     410:	0f 90       	pop	r0
     412:	0f 90       	pop	r0
     414:	0f 90       	pop	r0
		}
	//ausgabe des zweiten Blocks auf die serielle Schnittstelle
	for (int a=0;a<512;a=a+8)
     416:	00 e0       	ldi	r16, 0x00	; 0
     418:	10 e0       	ldi	r17, 0x00	; 0
     41a:	73 01       	movw	r14, r6
	{
	printf("%x %x %x %x %x %x %x %x ",Buffer[a],Buffer[a+1],Buffer[a+2],Buffer[a+3],Buffer[a+4],Buffer[a+5],Buffer[a+6],Buffer[a+7]);
     41c:	e8 e0       	ldi	r30, 0x08	; 8
     41e:	f0 e0       	ldi	r31, 0x00	; 0
     420:	ec 0f       	add	r30, r28
     422:	fd 1f       	adc	r31, r29
     424:	e0 0f       	add	r30, r16
     426:	f1 1f       	adc	r31, r17
     428:	80 81       	ld	r24, Z
     42a:	99 27       	eor	r25, r25
     42c:	9f 93       	push	r25
     42e:	8f 93       	push	r24
     430:	e7 e0       	ldi	r30, 0x07	; 7
     432:	f0 e0       	ldi	r31, 0x00	; 0
     434:	ec 0f       	add	r30, r28
     436:	fd 1f       	adc	r31, r29
     438:	e0 0f       	add	r30, r16
     43a:	f1 1f       	adc	r31, r17
     43c:	80 81       	ld	r24, Z
     43e:	99 27       	eor	r25, r25
     440:	9f 93       	push	r25
     442:	8f 93       	push	r24
     444:	e6 e0       	ldi	r30, 0x06	; 6
     446:	f0 e0       	ldi	r31, 0x00	; 0
     448:	ec 0f       	add	r30, r28
     44a:	fd 1f       	adc	r31, r29
     44c:	e0 0f       	add	r30, r16
     44e:	f1 1f       	adc	r31, r17
     450:	80 81       	ld	r24, Z
     452:	99 27       	eor	r25, r25
     454:	9f 93       	push	r25
     456:	8f 93       	push	r24
     458:	e5 e0       	ldi	r30, 0x05	; 5
     45a:	f0 e0       	ldi	r31, 0x00	; 0
     45c:	ec 0f       	add	r30, r28
     45e:	fd 1f       	adc	r31, r29
     460:	e0 0f       	add	r30, r16
     462:	f1 1f       	adc	r31, r17
     464:	80 81       	ld	r24, Z
     466:	99 27       	eor	r25, r25
     468:	9f 93       	push	r25
     46a:	8f 93       	push	r24
     46c:	94 e0       	ldi	r25, 0x04	; 4
     46e:	89 2e       	mov	r8, r25
     470:	91 2c       	mov	r9, r1
     472:	8c 0e       	add	r8, r28
     474:	9d 1e       	adc	r9, r29
     476:	f4 01       	movw	r30, r8
     478:	e0 0f       	add	r30, r16
     47a:	f1 1f       	adc	r31, r17
     47c:	80 81       	ld	r24, Z
     47e:	99 27       	eor	r25, r25
     480:	9f 93       	push	r25
     482:	8f 93       	push	r24
     484:	83 e0       	ldi	r24, 0x03	; 3
     486:	a8 2e       	mov	r10, r24
     488:	b1 2c       	mov	r11, r1
     48a:	ac 0e       	add	r10, r28
     48c:	bd 1e       	adc	r11, r29
     48e:	f5 01       	movw	r30, r10
     490:	e0 0f       	add	r30, r16
     492:	f1 1f       	adc	r31, r17
     494:	80 81       	ld	r24, Z
     496:	99 27       	eor	r25, r25
     498:	9f 93       	push	r25
     49a:	8f 93       	push	r24
     49c:	b2 e0       	ldi	r27, 0x02	; 2
     49e:	cb 2e       	mov	r12, r27
     4a0:	d1 2c       	mov	r13, r1
     4a2:	cc 0e       	add	r12, r28
     4a4:	dd 1e       	adc	r13, r29
     4a6:	f6 01       	movw	r30, r12
     4a8:	e0 0f       	add	r30, r16
     4aa:	f1 1f       	adc	r31, r17
     4ac:	80 81       	ld	r24, Z
     4ae:	99 27       	eor	r25, r25
     4b0:	9f 93       	push	r25
     4b2:	8f 93       	push	r24
     4b4:	f7 01       	movw	r30, r14
     4b6:	80 81       	ld	r24, Z
     4b8:	99 27       	eor	r25, r25
     4ba:	9f 93       	push	r25
     4bc:	8f 93       	push	r24
     4be:	8f eb       	ldi	r24, 0xBF	; 191
     4c0:	90 e0       	ldi	r25, 0x00	; 0
     4c2:	9f 93       	push	r25
     4c4:	8f 93       	push	r24
     4c6:	7b d1       	rcall	.+758    	; 0x7be
	a=a+8;
     4c8:	08 5f       	subi	r16, 0xF8	; 248
     4ca:	1f 4f       	sbci	r17, 0xFF	; 255
     4cc:	e8 e0       	ldi	r30, 0x08	; 8
     4ce:	f0 e0       	ldi	r31, 0x00	; 0
     4d0:	ee 0e       	add	r14, r30
     4d2:	ff 1e       	adc	r15, r31
	printf("%x %x %x %x %x %x %x %x\n",Buffer[a],Buffer[a+1],Buffer[a+2],Buffer[a+3],Buffer[a+4],Buffer[a+5],Buffer[a+6],Buffer[a+7]);
     4d4:	ec 0f       	add	r30, r28
     4d6:	fd 1f       	adc	r31, r29
     4d8:	e0 0f       	add	r30, r16
     4da:	f1 1f       	adc	r31, r17
     4dc:	80 81       	ld	r24, Z
     4de:	99 27       	eor	r25, r25
     4e0:	9f 93       	push	r25
     4e2:	8f 93       	push	r24
     4e4:	e7 e0       	ldi	r30, 0x07	; 7
     4e6:	f0 e0       	ldi	r31, 0x00	; 0
     4e8:	ec 0f       	add	r30, r28
     4ea:	fd 1f       	adc	r31, r29
     4ec:	e0 0f       	add	r30, r16
     4ee:	f1 1f       	adc	r31, r17
     4f0:	80 81       	ld	r24, Z
     4f2:	99 27       	eor	r25, r25
     4f4:	9f 93       	push	r25
     4f6:	8f 93       	push	r24
     4f8:	e6 e0       	ldi	r30, 0x06	; 6
     4fa:	f0 e0       	ldi	r31, 0x00	; 0
     4fc:	ec 0f       	add	r30, r28
     4fe:	fd 1f       	adc	r31, r29
     500:	e0 0f       	add	r30, r16
     502:	f1 1f       	adc	r31, r17
     504:	80 81       	ld	r24, Z
     506:	99 27       	eor	r25, r25
     508:	9f 93       	push	r25
     50a:	8f 93       	push	r24
     50c:	e5 e0       	ldi	r30, 0x05	; 5
     50e:	f0 e0       	ldi	r31, 0x00	; 0
     510:	ec 0f       	add	r30, r28
     512:	fd 1f       	adc	r31, r29
     514:	e0 0f       	add	r30, r16
     516:	f1 1f       	adc	r31, r17
     518:	80 81       	ld	r24, Z
     51a:	99 27       	eor	r25, r25
     51c:	9f 93       	push	r25
     51e:	8f 93       	push	r24
     520:	f4 01       	movw	r30, r8
     522:	e0 0f       	add	r30, r16
     524:	f1 1f       	adc	r31, r17
     526:	80 81       	ld	r24, Z
     528:	99 27       	eor	r25, r25
     52a:	9f 93       	push	r25
     52c:	8f 93       	push	r24
     52e:	f5 01       	movw	r30, r10
     530:	e0 0f       	add	r30, r16
     532:	f1 1f       	adc	r31, r17
     534:	80 81       	ld	r24, Z
     536:	99 27       	eor	r25, r25
     538:	9f 93       	push	r25
     53a:	8f 93       	push	r24
     53c:	f6 01       	movw	r30, r12
     53e:	e0 0f       	add	r30, r16
     540:	f1 1f       	adc	r31, r17
     542:	80 81       	ld	r24, Z
     544:	99 27       	eor	r25, r25
     546:	9f 93       	push	r25
     548:	8f 93       	push	r24
     54a:	f7 01       	movw	r30, r14
     54c:	80 81       	ld	r24, Z
     54e:	99 27       	eor	r25, r25
     550:	9f 93       	push	r25
     552:	8f 93       	push	r24
     554:	88 ed       	ldi	r24, 0xD8	; 216
     556:	90 e0       	ldi	r25, 0x00	; 0
     558:	9f 93       	push	r25
     55a:	8f 93       	push	r24
     55c:	30 d1       	rcall	.+608    	; 0x7be
     55e:	ed b7       	in	r30, 0x3d	; 61
     560:	fe b7       	in	r31, 0x3e	; 62
     562:	b4 96       	adiw	r30, 0x24	; 36
     564:	0f b6       	in	r0, 0x3f	; 63
     566:	f8 94       	cli
     568:	fe bf       	out	0x3e, r31	; 62
     56a:	0f be       	out	0x3f, r0	; 63
     56c:	ed bf       	out	0x3d, r30	; 61
     56e:	08 5f       	subi	r16, 0xF8	; 248
     570:	1f 4f       	sbci	r17, 0xFF	; 255
     572:	88 e0       	ldi	r24, 0x08	; 8
     574:	90 e0       	ldi	r25, 0x00	; 0
     576:	e8 0e       	add	r14, r24
     578:	f9 1e       	adc	r15, r25
     57a:	92 e0       	ldi	r25, 0x02	; 2
     57c:	00 30       	cpi	r16, 0x00	; 0
     57e:	19 07       	cpc	r17, r25
     580:	0c f4       	brge	.+2      	; 0x584
     582:	4c cf       	rjmp	.-360    	; 0x41c
	}


	//auslesen des ersten Blocks von der MMC/SD Karte (addr = 1)
	addr = 0;
	tmp = Read_Block_MMC (addr,Buffer);
     584:	ae 01       	movw	r20, r28
     586:	4f 5f       	subi	r20, 0xFF	; 255
     588:	5f 4f       	sbci	r21, 0xFF	; 255
     58a:	60 e0       	ldi	r22, 0x00	; 0
     58c:	70 e0       	ldi	r23, 0x00	; 0
     58e:	80 e0       	ldi	r24, 0x00	; 0
     590:	90 e0       	ldi	r25, 0x00	; 0
     592:	ff dd       	rcall	.-1026   	; 0x192
	if (tmp != 0) //ist der R點kgabewert ungleich NULL ist ein Fehler aufgetreten 
     594:	88 23       	and	r24, r24
     596:	61 f0       	breq	.+24     	; 0x5b0
		{
		printf("Error %x\n",tmp);
     598:	99 27       	eor	r25, r25
     59a:	9f 93       	push	r25
     59c:	8f 93       	push	r24
     59e:	85 eb       	ldi	r24, 0xB5	; 181
     5a0:	90 e0       	ldi	r25, 0x00	; 0
     5a2:	9f 93       	push	r25

⌨️ 快捷键说明

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