📄 uart.lss
字号:
uart.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 0000003e 00800100 0000108e 00001122 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 0000108e 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 0000006a 0080013e 0080013e 00001160 2**0
ALLOC
3 .stab 00000414 00000000 00000000 00001160 2**2
CONTENTS, READONLY, DEBUGGING
4 .stabstr 00000071 00000000 00000000 00001574 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_aranges 00000020 00000000 00000000 000015e5 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 00000034 00000000 00000000 00001605 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 00000386 00000000 00000000 00001639 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 000001ed 00000000 00000000 000019bf 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 0000021e 00000000 00000000 00001bac 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_frame 00000050 00000000 00000000 00001dcc 2**2
CONTENTS, READONLY, DEBUGGING
11 .debug_str 00000137 00000000 00000000 00001e1c 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_loc 00000076 00000000 00000000 00001f53 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__ctors_end>
4: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
8: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
10: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
14: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
18: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
1c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
20: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
24: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
28: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
2c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
30: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
34: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
38: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
3c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
40: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
44: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
48: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
4c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
50: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
54: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
58: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
5c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
60: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
64: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
68: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
6c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
70: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
74: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
78: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
7c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
80: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
84: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
88: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
0000008c <__c.1612>:
8c: c4 fa b5 c4 ca e4 c8 eb ce aa 3a 25 64 0a 00 ..........:%d..
0000009b <__c.1610>:
9b: 25 64 00 %d.
0000009e <__c.1608>:
9e: b2 e2 ca d4 32 5b ca e4 c8 eb ca fd d7 d6 5d 3a ....2[........]:
ae: 0a 00 ..
000000b0 <__ctors_end>:
b0: 11 24 eor r1, r1
b2: 1f be out 0x3f, r1 ; 63
b4: cf ef ldi r28, 0xFF ; 255
b6: d0 e1 ldi r29, 0x10 ; 16
b8: de bf out 0x3e, r29 ; 62
ba: cd bf out 0x3d, r28 ; 61
000000bc <__do_copy_data>:
bc: 11 e0 ldi r17, 0x01 ; 1
be: a0 e0 ldi r26, 0x00 ; 0
c0: b1 e0 ldi r27, 0x01 ; 1
c2: ee e8 ldi r30, 0x8E ; 142
c4: f0 e1 ldi r31, 0x10 ; 16
c6: 00 e0 ldi r16, 0x00 ; 0
c8: 0b bf out 0x3b, r16 ; 59
ca: 02 c0 rjmp .+4 ; 0xd0 <__do_copy_data+0x14>
cc: 07 90 elpm r0, Z+
ce: 0d 92 st X+, r0
d0: ae 33 cpi r26, 0x3E ; 62
d2: b1 07 cpc r27, r17
d4: d9 f7 brne .-10 ; 0xcc <__do_copy_data+0x10>
000000d6 <__do_clear_bss>:
d6: 11 e0 ldi r17, 0x01 ; 1
d8: ae e3 ldi r26, 0x3E ; 62
da: b1 e0 ldi r27, 0x01 ; 1
dc: 01 c0 rjmp .+2 ; 0xe0 <.do_clear_bss_start>
000000de <.do_clear_bss_loop>:
de: 1d 92 st X+, r1
000000e0 <.do_clear_bss_start>:
e0: a8 3a cpi r26, 0xA8 ; 168
e2: b1 07 cpc r27, r17
e4: e1 f7 brne .-8 ; 0xde <.do_clear_bss_loop>
e6: 0e 94 96 00 call 0x12c ; 0x12c <main>
ea: 0c 94 46 08 jmp 0x108c ; 0x108c <_exit>
000000ee <__bad_interrupt>:
ee: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
000000f2 <uart_putchar>:
//向UART写一字节
static int
uart_putchar(char c, FILE *stream)
{
f2: 1f 93 push r17
f4: 18 2f mov r17, r24
if(c=='\n')
f6: 8a 30 cpi r24, 0x0A ; 10
f8: 19 f4 brne .+6 ; 0x100 <uart_putchar+0xe>
uart_putchar('\r', stream);
fa: 8d e0 ldi r24, 0x0D ; 13
fc: 0e 94 79 00 call 0xf2 ; 0xf2 <uart_putchar>
loop_until_bit_is_set(UCSR0A,UDRE0);
100: 5d 9b sbis 0x0b, 5 ; 11
102: fe cf rjmp .-4 ; 0x100 <uart_putchar+0xe>
UDR0=c;
104: 1c b9 out 0x0c, r17 ; 12
return 0;
}
106: 80 e0 ldi r24, 0x00 ; 0
108: 90 e0 ldi r25, 0x00 ; 0
10a: 1f 91 pop r17
10c: 08 95 ret
0000010e <uart_getchar>:
//从UART读一字节
static int
uart_getchar(FILE *stream)
{
10e: 5f 9b sbis 0x0b, 7 ; 11
110: fe cf rjmp .-4 ; 0x10e <uart_getchar>
loop_until_bit_is_set(UCSR0A,RXC0);
return UDR0;
112: 8c b1 in r24, 0x0c ; 12
}
114: 99 27 eor r25, r25
116: 08 95 ret
00000118 <IoInit>:
//初始化i/o
void IoInit(void)
{
118: 86 e0 ldi r24, 0x06 ; 6
11a: 80 93 95 00 sts 0x0095, r24
//UART初始化
UCSR0C=0x06;
UBRR0H=0;
11e: 10 92 90 00 sts 0x0090, r1
UBRR0L=47; //9600 baud
122: 8f e2 ldi r24, 0x2F ; 47
124: 89 b9 out 0x09, r24 ; 9
UCSR0B=_BV(RXEN0)|_BV(TXEN0);/*(1<<RXCIE0)|(1<<TXCIE0)|*/
126: 88 e1 ldi r24, 0x18 ; 24
128: 8a b9 out 0x0a, r24 ; 10
12a: 08 95 ret
0000012c <main>:
//i/o流UART连接
//fdevopen(usart_putchar,usart_getchar,0);
}
//测试主程序
int main(void)
{
12c: 0f 93 push r16
12e: 1f 93 push r17
130: cf 93 push r28
132: df 93 push r29
134: cd b7 in r28, 0x3d ; 61
136: de b7 in r29, 0x3e ; 62
138: 22 97 sbiw r28, 0x02 ; 2
13a: 0f b6 in r0, 0x3f ; 63
13c: f8 94 cli
13e: de bf out 0x3e, r29 ; 62
140: 0f be out 0x3f, r0 ; 63
142: cd bf out 0x3d, r28 ; 61
144: 86 e0 ldi r24, 0x06 ; 6
146: 80 93 95 00 sts 0x0095, r24
14a: 10 92 90 00 sts 0x0090, r1
14e: 8f e2 ldi r24, 0x2F ; 47
150: 89 b9 out 0x09, r24 ; 9
152: 88 e1 ldi r24, 0x18 ; 24
154: 8a b9 out 0x0a, r24 ; 10
int tmp;
IoInit();
stdout = stdin = &mystdio ;
156: 80 e3 ldi r24, 0x30 ; 48
158: 91 e0 ldi r25, 0x01 ; 1
15a: 90 93 a3 01 sts 0x01A3, r25
15e: 80 93 a2 01 sts 0x01A2, r24
162: 90 93 a5 01 sts 0x01A5, r25
166: 80 93 a4 01 sts 0x01A4, r24
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
16a: 80 e0 ldi r24, 0x00 ; 0
16c: 98 ed ldi r25, 0xD8 ; 216
16e: 01 97 sbiw r24, 0x01 ; 1
170: f1 f7 brne .-4 ; 0x16e <main+0x42>
_delay_ms(30); //延时一下显示就不会出什么错了,可能是没延时,一上电没来得及那么快,输出就有误吧
while(1)
{
//测试1
printf("测试1[输入一字符串]:\n");
172: 80 e0 ldi r24, 0x00 ; 0
174: 91 e0 ldi r25, 0x01 ; 1
176: 0e 94 45 01 call 0x28a ; 0x28a <puts>
printf("abcdefg!\n");
17a: 85 e1 ldi r24, 0x15 ; 21
17c: 91 e0 ldi r25, 0x01 ; 1
17e: 0e 94 45 01 call 0x28a ; 0x28a <puts>
scanf("%s",g_aString);
182: 0e e3 ldi r16, 0x3E ; 62
184: 11 e0 ldi r17, 0x01 ; 1
186: 1f 93 push r17
188: 0f 93 push r16
18a: 8e e1 ldi r24, 0x1E ; 30
18c: 91 e0 ldi r25, 0x01 ; 1
18e: 9f 93 push r25
190: 8f 93 push r24
192: 0e 94 78 01 call 0x2f0 ; 0x2f0 <scanf>
printf("您的输入为:%s\n",g_aString);
196: 1f 93 push r17
198: 0f 93 push r16
19a: 81 e2 ldi r24, 0x21 ; 33
19c: 91 e0 ldi r25, 0x01 ; 1
19e: 9f 93 push r25
1a0: 8f 93 push r24
1a2: 0e 94 f6 00 call 0x1ec ; 0x1ec <printf>
//测试2:使用FLASH区的字符串
printf_P(PSTR("测试2[输入数字]:\n"));
1a6: 8e e9 ldi r24, 0x9E ; 158
1a8: 90 e0 ldi r25, 0x00 ; 0
1aa: 9f 93 push r25
1ac: 8f 93 push r24
1ae: 0e 94 16 01 call 0x22c ; 0x22c <printf_P>
scanf_P(PSTR("%d"),&tmp);
1b2: ce 01 movw r24, r28
1b4: 01 96 adiw r24, 0x01 ; 1
1b6: 9f 93 push r25
1b8: 8f 93 push r24
1ba: 8b e9 ldi r24, 0x9B ; 155
1bc: 90 e0 ldi r25, 0x00 ; 0
1be: 9f 93 push r25
1c0: 8f 93 push r24
1c2: 0e 94 98 01 call 0x330 ; 0x330 <scanf_P>
printf_P(PSTR("您的输入为:%d\n"),tmp);
1c6: 89 81 ldd r24, Y+1 ; 0x01
1c8: 9a 81 ldd r25, Y+2 ; 0x02
1ca: 9f 93 push r25
1cc: 8f 93 push r24
1ce: 8c e8 ldi r24, 0x8C ; 140
1d0: 90 e0 ldi r25, 0x00 ; 0
1d2: 9f 93 push r25
1d4: 8f 93 push r24
1d6: 0e 94 16 01 call 0x22c ; 0x22c <printf_P>
}
1da: 8d b7 in r24, 0x3d ; 61
1dc: 9e b7 in r25, 0x3e ; 62
1de: 42 96 adiw r24, 0x12 ; 18
1e0: 0f b6 in r0, 0x3f ; 63
1e2: f8 94 cli
1e4: 9e bf out 0x3e, r25 ; 62
1e6: 0f be out 0x3f, r0 ; 63
1e8: 8d bf out 0x3d, r24 ; 61
1ea: c3 cf rjmp .-122 ; 0x172 <main+0x46>
000001ec <printf>:
1ec: cf 93 push r28
1ee: df 93 push r29
1f0: cd b7 in r28, 0x3d ; 61
1f2: de b7 in r29, 0x3e ; 62
1f4: 22 97 sbiw r28, 0x02 ; 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -