📄 sdraw.lss
字号:
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 + -