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

📄 sdraw.lss

📁 TFT-LCD Atmega128 Source Code
💻 LSS
📖 第 1 页 / 共 5 页
字号:
 7ec:	81 bb       	out	0x11, r24	; 17
	PORTD = _BV(7) | _BV(6) | _BV(3);
 7ee:	88 ec       	ldi	r24, 0xC8	; 200
 7f0:	82 bb       	out	0x12, r24	; 18
	PORTD &= ~(_BV(4));		// 16bit mode
 7f2:	94 98       	cbi	0x12, 4	; 18

	DDRE = 0b01110010;
 7f4:	82 e7       	ldi	r24, 0x72	; 114
 7f6:	82 b9       	out	0x02, r24	; 2
	PORTE = _BV(4) | _BV(5) | _BV(6);
 7f8:	80 e7       	ldi	r24, 0x70	; 112
 7fa:	83 b9       	out	0x03, r24	; 3

	DDRF = 0b11111100;
 7fc:	8c ef       	ldi	r24, 0xFC	; 252
 7fe:	80 93 61 00 	sts	0x0061, r24
	PORTF |= _BV(7);
 802:	e2 e6       	ldi	r30, 0x62	; 98
 804:	f0 e0       	ldi	r31, 0x00	; 0
 806:	80 81       	ld	r24, Z
 808:	80 68       	ori	r24, 0x80	; 128
 80a:	80 83       	st	Z, r24


}
 80c:	08 95       	ret

0000080e <main>:



int main()
{
 80e:	df 93       	push	r29
 810:	cf 93       	push	r28
 812:	cd b7       	in	r28, 0x3d	; 61
 814:	de b7       	in	r29, 0x3e	; 62
 816:	69 97       	sbiw	r28, 0x19	; 25
 818:	0f b6       	in	r0, 0x3f	; 63
 81a:	f8 94       	cli
 81c:	de bf       	out	0x3e, r29	; 62
 81e:	0f be       	out	0x3f, r0	; 63
 820:	cd bf       	out	0x3d, r28	; 61

	struct sdraw_info info;

	board_init();
 822:	0e 94 e8 03 	call	0x7d0	; 0x7d0 <board_init>
	UART_init();
 826:	0e 94 ae 04 	call	0x95c	; 0x95c <UART_init>

	UART_puts("\n\n186 App SD/MMC Test\n\n");
 82a:	82 ea       	ldi	r24, 0xA2	; 162
 82c:	91 e0       	ldi	r25, 0x01	; 1
 82e:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>

	SPI_init();
 832:	0e 94 d0 03 	call	0x7a0	; 0x7a0 <SPI_init>

	if (!sdraw_init())
 836:	0e 94 ce 01 	call	0x39c	; 0x39c <sdraw_init>
 83a:	88 23       	and	r24, r24
 83c:	21 f4       	brne	.+8      	; 0x846 <main+0x38>
	{
		UART_puts("\nSD/MMC Init Error\n");
 83e:	8a eb       	ldi	r24, 0xBA	; 186
 840:	91 e0       	ldi	r25, 0x01	; 1
 842:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
	}
	
	UART_puts("SD/MMC Init SUCCESS!!!\n");
 846:	8e ec       	ldi	r24, 0xCE	; 206
 848:	91 e0       	ldi	r25, 0x01	; 1
 84a:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>

	if (!sdraw_get_info(&info))
 84e:	ce 01       	movw	r24, r28
 850:	01 96       	adiw	r24, 0x01	; 1
 852:	0e 94 b2 00 	call	0x164	; 0x164 <sdraw_get_info>
 856:	88 23       	and	r24, r24
 858:	19 f4       	brne	.+6      	; 0x860 <main+0x52>
	{
		UART_puts("ERROR : UNABLE TO GET SD/MMC INFO\n"); 
 85a:	86 ee       	ldi	r24, 0xE6	; 230
 85c:	91 e0       	ldi	r25, 0x01	; 1
 85e:	71 c0       	rjmp	.+226    	; 0x942 <main+0x134>
		return 0;
	};

	UART_puts("\nAcquiring SD/MMC Info...\n");
 860:	89 e0       	ldi	r24, 0x09	; 9
 862:	92 e0       	ldi	r25, 0x02	; 2
 864:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>

	UART_puts("\nMANUFACTURER NUMBER : "); UART_put_hex(info.manufacturer);
 868:	84 e2       	ldi	r24, 0x24	; 36
 86a:	92 e0       	ldi	r25, 0x02	; 2
 86c:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
 870:	89 81       	ldd	r24, Y+1	; 0x01
 872:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
	UART_puts("\nOEM : "); UART_puts(info.oem);
 876:	8c e3       	ldi	r24, 0x3C	; 60
 878:	92 e0       	ldi	r25, 0x02	; 2
 87a:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
 87e:	ce 01       	movw	r24, r28
 880:	02 96       	adiw	r24, 0x02	; 2
 882:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
	UART_puts("\nPRUDUCT NAME : "); UART_puts(info.product);
 886:	84 e4       	ldi	r24, 0x44	; 68
 888:	92 e0       	ldi	r25, 0x02	; 2
 88a:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
 88e:	ce 01       	movw	r24, r28
 890:	05 96       	adiw	r24, 0x05	; 5
 892:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
	UART_puts("\nPRODUCT REVISION : "); UART_put_hex(info.revision);
 896:	85 e5       	ldi	r24, 0x55	; 85
 898:	92 e0       	ldi	r25, 0x02	; 2
 89a:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
 89e:	8b 85       	ldd	r24, Y+11	; 0x0b
 8a0:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
	UART_puts("\nPRODUCT S/N : 0x"); UART_put_hex(info.serial >> 24); UART_put_hex(info.serial >> 16);
 8a4:	8a e6       	ldi	r24, 0x6A	; 106
 8a6:	92 e0       	ldi	r25, 0x02	; 2
 8a8:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
 8ac:	8f 85       	ldd	r24, Y+15	; 0x0f
 8ae:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
 8b2:	8e 85       	ldd	r24, Y+14	; 0x0e
 8b4:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
	UART_put_hex(info.serial >> 8); UART_put_hex(info.serial);
 8b8:	8c 85       	ldd	r24, Y+12	; 0x0c
 8ba:	9d 85       	ldd	r25, Y+13	; 0x0d
 8bc:	ae 85       	ldd	r26, Y+14	; 0x0e
 8be:	bf 85       	ldd	r27, Y+15	; 0x0f
 8c0:	89 2f       	mov	r24, r25
 8c2:	9a 2f       	mov	r25, r26
 8c4:	ab 2f       	mov	r26, r27
 8c6:	bb 27       	eor	r27, r27
 8c8:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
 8cc:	8c 85       	ldd	r24, Y+12	; 0x0c
 8ce:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
	UART_puts("\nMANUFACTURING DATE : "); UART_put_hex(info.manufacturing_year); UART_put_hex(info.manufacturing_month);
 8d2:	8c e7       	ldi	r24, 0x7C	; 124
 8d4:	92 e0       	ldi	r25, 0x02	; 2
 8d6:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
 8da:	88 89       	ldd	r24, Y+16	; 0x10
 8dc:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
 8e0:	89 89       	ldd	r24, Y+17	; 0x11
 8e2:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
	UART_puts("\nCARD MEMORY SIZE : 0x"); UART_put_hex(info.capacity >> 24); UART_put_hex(info.capacity >> 16);
 8e6:	83 e9       	ldi	r24, 0x93	; 147
 8e8:	92 e0       	ldi	r25, 0x02	; 2
 8ea:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
 8ee:	8d 89       	ldd	r24, Y+21	; 0x15
 8f0:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
 8f4:	8c 89       	ldd	r24, Y+20	; 0x14
 8f6:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
	UART_put_hex(info.capacity >> 8); UART_put_hex(info.capacity);
 8fa:	8a 89       	ldd	r24, Y+18	; 0x12
 8fc:	9b 89       	ldd	r25, Y+19	; 0x13
 8fe:	ac 89       	ldd	r26, Y+20	; 0x14
 900:	bd 89       	ldd	r27, Y+21	; 0x15
 902:	89 2f       	mov	r24, r25
 904:	9a 2f       	mov	r25, r26
 906:	ab 2f       	mov	r26, r27
 908:	bb 27       	eor	r27, r27
 90a:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
 90e:	8a 89       	ldd	r24, Y+18	; 0x12
 910:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
	UART_puts("\nFLAG COPY : "); UART_put_hex(info.flag_copy);
 914:	8a ea       	ldi	r24, 0xAA	; 170
 916:	92 e0       	ldi	r25, 0x02	; 2
 918:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
 91c:	8e 89       	ldd	r24, Y+22	; 0x16
 91e:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
	UART_puts("\nWRITE PROTECTED : "); UART_put_hex(info.flag_write_protect);
 922:	88 eb       	ldi	r24, 0xB8	; 184
 924:	92 e0       	ldi	r25, 0x02	; 2
 926:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
 92a:	8f 89       	ldd	r24, Y+23	; 0x17
 92c:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>
	UART_puts("\nCARD FORMAT : "); UART_put_hex(info.format);
 930:	8c ec       	ldi	r24, 0xCC	; 204
 932:	92 e0       	ldi	r25, 0x02	; 2
 934:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>
 938:	89 8d       	ldd	r24, Y+25	; 0x19
 93a:	0e 94 e6 04 	call	0x9cc	; 0x9cc <UART_put_hex>

	UART_puts("\n\nPress RESET key to restart...\n");
 93e:	8c ed       	ldi	r24, 0xDC	; 220
 940:	92 e0       	ldi	r25, 0x02	; 2
 942:	0e 94 c4 04 	call	0x988	; 0x988 <UART_puts>

	return 0;

}
 946:	80 e0       	ldi	r24, 0x00	; 0
 948:	90 e0       	ldi	r25, 0x00	; 0
 94a:	69 96       	adiw	r28, 0x19	; 25
 94c:	0f b6       	in	r0, 0x3f	; 63
 94e:	f8 94       	cli
 950:	de bf       	out	0x3e, r29	; 62
 952:	0f be       	out	0x3f, r0	; 63
 954:	cd bf       	out	0x3d, r28	; 61
 956:	cf 91       	pop	r28
 958:	df 91       	pop	r29
 95a:	08 95       	ret

0000095c <UART_init>:
#include "config.h"



void UART_init()
{
 95c:	8f e0       	ldi	r24, 0x0F	; 15
 95e:	80 93 99 00 	sts	0x0099, r24

	UBRR1L = 15;	// 57600bps at 14.7456MHz
	UCSR1B = 0x18;
 962:	88 e1       	ldi	r24, 0x18	; 24
 964:	80 93 9a 00 	sts	0x009A, r24
}
 968:	08 95       	ret

0000096a <UART_send_byte>:


void UART_send_byte(unsigned char data)
{
 96a:	98 2f       	mov	r25, r24
	while(!(UCSR1A & 0x20));
 96c:	80 91 9b 00 	lds	r24, 0x009B
 970:	85 ff       	sbrs	r24, 5
 972:	fc cf       	rjmp	.-8      	; 0x96c <UART_send_byte+0x2>
	UDR1 = data;
 974:	90 93 9c 00 	sts	0x009C, r25

}
 978:	08 95       	ret

0000097a <UART_recv_byte>:

unsigned char UART_recv_byte()
{
 97a:	80 91 9b 00 	lds	r24, 0x009B
 97e:	87 ff       	sbrs	r24, 7
 980:	fc cf       	rjmp	.-8      	; 0x97a <UART_recv_byte>
	while(!(UCSR1A & 0x80));
	return UDR1;
 982:	80 91 9c 00 	lds	r24, 0x009C
}
 986:	08 95       	ret

00000988 <UART_puts>:

void UART_puts(char *pStr)
{
 988:	fc 01       	movw	r30, r24
 98a:	31 96       	adiw	r30, 0x01	; 1


void UART_send_byte(unsigned char data)
{
	while(!(UCSR1A & 0x20));
	UDR1 = data;
 98c:	3a e0       	ldi	r19, 0x0A	; 10

void UART_puts(char *pStr)
{
	while(*pStr)
	{
		switch(*pStr)
 98e:	2d e0       	ldi	r18, 0x0D	; 13
 990:	18 c0       	rjmp	.+48     	; 0x9c2 <UART_puts+0x3a>
 992:	9a 30       	cpi	r25, 0x0A	; 10
 994:	11 f0       	breq	.+4      	; 0x99a <UART_puts+0x12>
 996:	9d 30       	cpi	r25, 0x0D	; 13
 998:	69 f4       	brne	.+26     	; 0x9b4 <UART_puts+0x2c>
}


void UART_send_byte(unsigned char data)
{
	while(!(UCSR1A & 0x20));
 99a:	80 91 9b 00 	lds	r24, 0x009B
 99e:	85 ff       	sbrs	r24, 5
 9a0:	fc cf       	rjmp	.-8      	; 0x99a <UART_puts+0x12>
	UDR1 = data;
 9a2:	30 93 9c 00 	sts	0x009C, r19
}


void UART_send_byte(unsigned char data)
{
	while(!(UCSR1A & 0x20));
 9a6:	80 91 9b 00 	lds	r24, 0x009B
 9aa:	85 ff       	sbrs	r24, 5
 9ac:	fc cf       	rjmp	.-8      	; 0x9a6 <UART_puts+0x1e>
	UDR1 = data;
 9ae:	20 93 9c 00 	sts	0x009C, r18
 9b2:	06 c0       	rjmp	.+12     	; 0x9c0 <UART_puts+0x38>
}


void UART_send_byte(unsigned char data)
{
	while(!(UCSR1A & 0x20));
 9b4:	80 91 9b 00 	lds	r24, 0x009B
 9b8:	85 ff       	sbrs	r24, 5
 9ba:	fc cf       	rjmp	.-8      	; 0x9b4 <UART_puts+0x2c>
	UDR1 = data;
 9bc:	90 93 9c 00 	sts	0x009C, r25
 9c0:	31 96       	adiw	r30, 0x01	; 1
	return UDR1;
}

void UART_puts(char *pStr)
{
	while(*pStr)
 9c2:	92 91       	ld	r25, -Z
 9c4:	31 96       	adiw	r30, 0x01	; 1
 9c6:	99 23       	and	r25, r25
 9c8:	21 f7       	brne	.-56     	; 0x992 <UART_puts+0xa>
			break;
		default:
			UART_send_byte(*pStr++);
		}
	};
}
 9ca:	08 95       	ret

000009cc <UART_put_hex>:

void UART_put_hex(unsigned char hexval)
{
 9cc:	28 2f       	mov	r18, r24
	unsigned char temp1, temp2;

	temp1 = hexval;
	temp1 >>= 4;
 9ce:	98 2f       	mov	r25, r24
 9d0:	92 95       	swap	r25
 9d2:	9f 70       	andi	r25, 0x0F	; 15

	if ( temp1 >= 0 && temp1 <= 9 )
 9d4:	9a 30       	cpi	r25, 0x0A	; 10
 9d6:	30 f4       	brcc	.+12     	; 0x9e4 <UART_put_hex+0x18>
}


void UART_send_byte(unsigned char data)
{
	while(!(UCSR1A & 0x20));
 9d8:	80 91 9b 00 	lds	r24, 0x009B
 9dc:	85 ff       	sbrs	r24, 5
 9de:	fc cf       	rjmp	.-8      	; 0x9d8 <UART_put_hex+0xc>

	temp1 = hexval;
	temp1 >>= 4;

	if ( temp1 >= 0 && temp1 <= 9 )
		UART_send_byte(temp1 + '0');
 9e0:	90 5d       	subi	r25, 0xD0	; 208
 9e2:	05 c0       	rjmp	.+10     	; 0x9ee <UART_put_hex+0x22>
}


void UART_send_byte(unsigned char data)
{
	while(!(UCSR1A & 0x20));
 9e4:	80 91 9b 00 	lds	r24, 0x009B
 9e8:	85 ff       	sbrs	r24, 5
 9ea:	fc cf       	rjmp	.-8      	; 0x9e4 <UART_put_hex+0x18>

	if ( temp1 >= 0 && temp1 <= 9 )
		UART_send_byte(temp1 + '0');
	else
	{
		temp2 = temp1 - 10 + 'A';
 9ec:	99 5c       	subi	r25, 0xC9	; 201


void UART_send_byte(unsigned char data)
{
	while(!(UCSR1A & 0x20));
	UDR1 = data;
 9ee:	90 93 9c 00 	sts	0x009C, r25
	{
		temp2 = temp1 - 10 + 'A';
		UART_send_byte(temp2);
	}

	temp1 = hexval & 0x0F;
 9f2:	92 2f       	mov	r25, r18
 9f4:	9f 70       	andi	r25, 0x0F	; 15

	if ( temp1 >= 0 && temp1 <= 9 )
 9f6:	9a 30       	cpi	r25, 0x0A	; 10
 9f8:	30 f4       	brcc	.+12     	; 0xa06 <UART_put_hex+0x3a>
}


void UART_send_byte(unsigned char data)
{
	while(!(UCSR1A & 0x20));
 9fa:	80 91 9b 00 	lds	r24, 0x009B
 9fe:	85 ff       	sbrs	r24, 5
 a00:	fc cf       	rjmp	.-8      	; 0x9fa <UART_put_hex+0x2e>
	}

	temp1 = hexval & 0x0F;

	if ( temp1 >= 0 && temp1 <= 9

⌨️ 快捷键说明

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