?? sd.lss
字號:
sd.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00003376 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000080 00800060 00003376 000033ea 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000458 008000e0 000033f6 0000346a 2**0
ALLOC
3 .debug_aranges 000000a0 00000000 00000000 0000346a 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_pubnames 000002fa 00000000 00000000 0000350a 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_info 0000250f 00000000 00000000 00003804 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_abbrev 00000849 00000000 00000000 00005d13 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_line 00002176 00000000 00000000 0000655c 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_frame 000003d0 00000000 00000000 000086d4 2**2
CONTENTS, READONLY, DEBUGGING
9 .debug_str 000006bb 00000000 00000000 00008aa4 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_loc 00002d67 00000000 00000000 0000915f 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_ranges 00000078 00000000 00000000 0000bec6 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end>
4: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
8: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
10: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
14: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
18: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
1c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
20: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
24: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
28: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
2c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
30: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
34: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
38: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
3c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
40: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
44: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
48: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
4c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
50: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
00000054 <__ctors_end>:
54: 11 24 eor r1, r1
56: 1f be out 0x3f, r1 ; 63
58: cf e5 ldi r28, 0x5F ; 95
5a: d8 e0 ldi r29, 0x08 ; 8
5c: de bf out 0x3e, r29 ; 62
5e: cd bf out 0x3d, r28 ; 61
00000060 <__do_copy_data>:
60: 10 e0 ldi r17, 0x00 ; 0
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: e6 e7 ldi r30, 0x76 ; 118
68: f3 e3 ldi r31, 0x33 ; 51
6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start>
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: a0 3e cpi r26, 0xE0 ; 224
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 15 e0 ldi r17, 0x05 ; 5
78: a0 ee ldi r26, 0xE0 ; 224
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start>
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: a8 33 cpi r26, 0x38 ; 56
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0e 94 8b 00 call 0x116 ; 0x116 <main>
8a: 0c 94 b9 19 jmp 0x3372 ; 0x3372 <_exit>
0000008e <__bad_interrupt>:
8e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000092 <clr_buffer>:
USART_Send_Str("SD卡初始化成功\r\n");
else
USART_Send_Str("SD卡初始化失敗\r\n");
}
void clr_buffer(UINT8 *Buffer) //清零緩沖區
{
92: 20 e0 ldi r18, 0x00 ; 0
94: 30 e0 ldi r19, 0x00 ; 0
uint16_t k=0;
for(k=0;k<512;k++)
{
Buffer[k] = 0;
96: fc 01 movw r30, r24
98: e2 0f add r30, r18
9a: f3 1f adc r31, r19
9c: 10 82 st Z, r1
USART_Send_Str("SD卡初始化失敗\r\n");
}
void clr_buffer(UINT8 *Buffer) //清零緩沖區
{
uint16_t k=0;
for(k=0;k<512;k++)
9e: 2f 5f subi r18, 0xFF ; 255
a0: 3f 4f sbci r19, 0xFF ; 255
a2: 42 e0 ldi r20, 0x02 ; 2
a4: 20 30 cpi r18, 0x00 ; 0
a6: 34 07 cpc r19, r20
a8: b1 f7 brne .-20 ; 0x96 <clr_buffer+0x4>
{
Buffer[k] = 0;
}
}
aa: 08 95 ret
000000ac <Init_Mcu>:
FIL fl;
unsigned int r,w,i;
void Init_Mcu()
{
ac: 0e 94 b1 01 call 0x362 ; 0x362 <SPI_Init>
SPI_Init();
SPI_Low();
b0: 0e 94 a8 01 call 0x350 ; 0x350 <SPI_Low>
PORTA |= (1 << PA0);
b4: d8 9a sbi 0x1b, 0 ; 27
DDRA |= (1 << PA0);
b6: d0 9a sbi 0x1a, 0 ; 26
USART_Init();
b8: 0e 94 ce 00 call 0x19c ; 0x19c <USART_Init>
if(SD_Reset() == 0) //SD卡復位
bc: 0e 94 e0 01 call 0x3c0 ; 0x3c0 <SD_Reset>
c0: 88 23 and r24, r24
c2: 19 f4 brne .+6 ; 0xca <Init_Mcu+0x1e>
USART_Send_Str("SD卡復位成功\r\n");
c4: 80 e6 ldi r24, 0x60 ; 96
c6: 90 e0 ldi r25, 0x00 ; 0
c8: 02 c0 rjmp .+4 ; 0xce <Init_Mcu+0x22>
else
USART_Send_Str("SD卡復位失敗\r\n");
ca: 8f e6 ldi r24, 0x6F ; 111
cc: 90 e0 ldi r25, 0x00 ; 0
ce: 0e 94 d9 00 call 0x1b2 ; 0x1b2 <USART_Send_Str>
if(SD_Init() == 0) //SD卡初始化
d2: 0e 94 28 02 call 0x450 ; 0x450 <SD_Init>
d6: 88 23 and r24, r24
d8: 19 f4 brne .+6 ; 0xe0 <Init_Mcu+0x34>
USART_Send_Str("SD卡初始化成功\r\n");
da: 8e e7 ldi r24, 0x7E ; 126
dc: 90 e0 ldi r25, 0x00 ; 0
de: 02 c0 rjmp .+4 ; 0xe4 <Init_Mcu+0x38>
else
USART_Send_Str("SD卡初始化失敗\r\n");
e0: 8f e8 ldi r24, 0x8F ; 143
e2: 90 e0 ldi r25, 0x00 ; 0
e4: 0e 94 d9 00 call 0x1b2 ; 0x1b2 <USART_Send_Str>
if(SD_Reset() == 0) //SD卡復位
e8: 0e 94 e0 01 call 0x3c0 ; 0x3c0 <SD_Reset>
ec: 88 23 and r24, r24
ee: 19 f4 brne .+6 ; 0xf6 <Init_Mcu+0x4a>
USART_Send_Str("SD卡復位成功\r\n");
f0: 80 e6 ldi r24, 0x60 ; 96
f2: 90 e0 ldi r25, 0x00 ; 0
f4: 02 c0 rjmp .+4 ; 0xfa <Init_Mcu+0x4e>
else
USART_Send_Str("SD卡復位失敗\r\n");
f6: 8f e6 ldi r24, 0x6F ; 111
f8: 90 e0 ldi r25, 0x00 ; 0
fa: 0e 94 d9 00 call 0x1b2 ; 0x1b2 <USART_Send_Str>
if(SD_Init() == 0) //SD卡初始化
fe: 0e 94 28 02 call 0x450 ; 0x450 <SD_Init>
102: 88 23 and r24, r24
104: 19 f4 brne .+6 ; 0x10c <Init_Mcu+0x60>
USART_Send_Str("SD卡初始化成功\r\n");
106: 8e e7 ldi r24, 0x7E ; 126
108: 90 e0 ldi r25, 0x00 ; 0
10a: 02 c0 rjmp .+4 ; 0x110 <Init_Mcu+0x64>
else
USART_Send_Str("SD卡初始化失敗\r\n");
10c: 8f e8 ldi r24, 0x8F ; 143
10e: 90 e0 ldi r25, 0x00 ; 0
110: 0e 94 d9 00 call 0x1b2 ; 0x1b2 <USART_Send_Str>
114: 08 95 ret
00000116 <main>:
}
}
int main()
{
116: cf 93 push r28
118: df 93 push r29
uint8_t res;
uint16_t k=0;
Init_Mcu();
11a: 0e 94 56 00 call 0xac ; 0xac <Init_Mcu>
11e: e8 e3 ldi r30, 0x38 ; 56
120: f3 e0 ldi r31, 0x03 ; 3
void clr_buffer(UINT8 *Buffer) //清零緩沖區
{
uint16_t k=0;
for(k=0;k<512;k++)
{
Buffer[k] = 0;
122: 11 92 st Z+, r1
USART_Send_Str("SD卡初始化失敗\r\n");
}
void clr_buffer(UINT8 *Buffer) //清零緩沖區
{
uint16_t k=0;
for(k=0;k<512;k++)
124: 85 e0 ldi r24, 0x05 ; 5
126: e8 33 cpi r30, 0x38 ; 56
128: f8 07 cpc r31, r24
12a: d9 f7 brne .-10 ; 0x122 <main+0xc>
{
uint8_t res;
uint16_t k=0;
Init_Mcu();
clr_buffer(buffer);
f_mount(0,&fs); //開辟工作區
12c: 64 ee ldi r22, 0xE4 ; 228
12e: 70 e0 ldi r23, 0x00 ; 0
130: 80 e0 ldi r24, 0x00 ; 0
132: 0e 94 c2 03 call 0x784 ; 0x784 <f_mount>
f_open(&fl,"好習慣.txt",FA_OPEN_EXISTING | FA_READ); //打開文件
136: 41 e0 ldi r20, 0x01 ; 1
138: 60 ea ldi r22, 0xA0 ; 160
13a: 70 e0 ldi r23, 0x00 ; 0
13c: 86 e1 ldi r24, 0x16 ; 22
13e: 93 e0 ldi r25, 0x03 ; 3
140: 0e 94 d8 17 call 0x2fb0 ; 0x2fb0 <f_open>
while(1)
{
f_read(&fl,buffer,512,&r);
144: 24 e1 ldi r18, 0x14 ; 20
146: 33 e0 ldi r19, 0x03 ; 3
148: 40 e0 ldi r20, 0x00 ; 0
14a: 52 e0 ldi r21, 0x02 ; 2
14c: 68 e3 ldi r22, 0x38 ; 56
14e: 73 e0 ldi r23, 0x03 ; 3
150: 86 e1 ldi r24, 0x16 ; 22
152: 93 e0 ldi r25, 0x03 ; 3
154: 0e 94 5f 0f call 0x1ebe ; 0x1ebe <f_read>
if(res || r==0) break;
158: 80 91 14 03 lds r24, 0x0314
15c: 90 91 15 03 lds r25, 0x0315
160: 89 2b or r24, r25
162: 91 f0 breq .+36 ; 0x188 <main+0x72>
164: c0 e0 ldi r28, 0x00 ; 0
166: d0 e0 ldi r29, 0x00 ; 0
168: 07 c0 rjmp .+14 ; 0x178 <main+0x62>
for(k=0;k<r;k++)
{
USART_Send_Char(buffer[k]);
16a: fe 01 movw r30, r28
16c: e8 5c subi r30, 0xC8 ; 200
16e: fc 4f sbci r31, 0xFC ; 252
170: 80 81 ld r24, Z
172: 0e 94 d5 00 call 0x1aa ; 0x1aa <USART_Send_Char>
f_open(&fl,"好習慣.txt",FA_OPEN_EXISTING | FA_READ); //打開文件
while(1)
{
f_read(&fl,buffer,512,&r);
if(res || r==0) break;
for(k=0;k<r;k++)
176: 21 96 adiw r28, 0x01 ; 1
178: 80 91 14 03 lds r24, 0x0314
17c: 90 91 15 03 lds r25, 0x0315
180: c8 17 cp r28, r24
182: d9 07 cpc r29, r25
184: 90 f3 brcs .-28 ; 0x16a <main+0x54>
186: de cf rjmp .-68 ; 0x144 <main+0x2e>
{
USART_Send_Char(buffer[k]);
}
}
f_close(&fl);
188: 86 e1 ldi r24, 0x16 ; 22
18a: 93 e0 ldi r25, 0x03 ; 3
18c: 0e 94 cc 17 call 0x2f98 ; 0x2f98 <f_close>
f_mount(0,NULL); //注銷工作區,然后丟棄
190: 60 e0 ldi r22, 0x00 ; 0
192: 70 e0 ldi r23, 0x00 ; 0
194: 80 e0 ldi r24, 0x00 ; 0
196: 0e 94 c2 03 call 0x784 ; 0x784 <f_mount>
19a: ff cf rjmp .-2 ; 0x19a <main+0x84>
0000019c <USART_Init>:
uint8_t ASCLL_1[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
void USART_Init(void)
{
19c: 10 bc out 0x20, r1 ; 32
/*設置波特率*/
UBRRH = 0;
UBRRL = 3;/*設置波特率,16M晶振,256000波特率,參考DataSheet*/
19e: 83 e0 ldi r24, 0x03 ; 3
1a0: 89 b9 out 0x09, r24 ; 9
//UBRRH = (((F_CPU/BAUD)/16)-1)/256;
//UBRRL = (((F_CPU/BAUD)/16)-1)%256;
UCSRB |= (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); //使能發送,接收,接收完成中斷
1a2: 8a b1 in r24, 0x0a ; 10
1a4: 88 69 ori r24, 0x98 ; 152
1a6: 8a b9 out 0x0a, r24 ; 10
}
1a8: 08 95 ret
000001aa <USART_Send_Char>:
void USART_Send_Char(unsigned char data)
{
1aa: 5d 9b sbis 0x0b, 5 ; 11
1ac: fe cf rjmp .-4 ; 0x1aa <USART_Send_Char>
while( !(UCSRA & (1<<UDRE))); //等待發送緩沖器為空
UDR = data; //將數據放入緩沖區,發送數據
1ae: 8c b9 out 0x0c, r24 ; 12
}
1b0: 08 95 ret
000001b2 <USART_Send_Str>:
void USART_Send_Str(char *str)
{
1b2: fc 01 movw r30, r24
1b4: 04 c0 rjmp .+8 ; 0x1be <USART_Send_Str+0xc>
//UBRRL = (((F_CPU/BAUD)/16)-1)%256;
UCSRB |= (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); //使能發送,接收,接收完成中斷
}
void USART_Send_Char(unsigned char data)
{
while( !(UCSRA & (1<<UDRE))); //等待發送緩沖器為空
1b6: 5d 9b sbis 0x0b, 5 ; 11
1b8: fe cf rjmp .-4 ; 0x1b6 <USART_Send_Str+0x4>
UDR = data; //將數據放入緩沖區,發送數據
1ba: 8c b9 out 0x0c, r24 ; 12
void USART_Send_Str(char *str)
{
while(*str!='\0')
{
USART_Send_Char(*str);
str++;
1bc: 31 96 adiw r30, 0x01 ; 1
while( !(UCSRA & (1<<UDRE))); //等待發送緩沖器為空
UDR = data; //將數據放入緩沖區,發送數據
}
void USART_Send_Str(char *str)
{
while(*str!='\0')
1be: 80 81 ld r24, Z
1c0: 88 23 and r24, r24
1c2: c9 f7 brne .-14 ; 0x1b6 <USART_Send_Str+0x4>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -