📄 uart1.lss
字号:
uart1.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000001fe 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000016 00800060 000001fe 00000292 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000005 00800076 00800076 000002a8 2**0
ALLOC
3 .noinit 00000000 0080007b 0080007b 000002a8 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000002a8 2**0
CONTENTS
5 .stab 000009b4 00000000 00000000 000002a8 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000977 00000000 00000000 00000c5c 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end>
2: 2a c0 rjmp .+84 ; 0x58 <__bad_interrupt>
4: 29 c0 rjmp .+82 ; 0x58 <__bad_interrupt>
6: 28 c0 rjmp .+80 ; 0x58 <__bad_interrupt>
8: 27 c0 rjmp .+78 ; 0x58 <__bad_interrupt>
a: 26 c0 rjmp .+76 ; 0x58 <__bad_interrupt>
c: 25 c0 rjmp .+74 ; 0x58 <__bad_interrupt>
e: 48 c0 rjmp .+144 ; 0xa0 <__vector_7>
10: 23 c0 rjmp .+70 ; 0x58 <__bad_interrupt>
12: 23 c0 rjmp .+70 ; 0x5a <__vector_9>
14: 21 c0 rjmp .+66 ; 0x58 <__bad_interrupt>
16: 20 c0 rjmp .+64 ; 0x58 <__bad_interrupt>
18: 1f c0 rjmp .+62 ; 0x58 <__bad_interrupt>
1a: 1e c0 rjmp .+60 ; 0x58 <__bad_interrupt>
1c: 1d c0 rjmp .+58 ; 0x58 <__bad_interrupt>
1e: 1c c0 rjmp .+56 ; 0x58 <__bad_interrupt>
20: 1b c0 rjmp .+54 ; 0x58 <__bad_interrupt>
22: 1a c0 rjmp .+52 ; 0x58 <__bad_interrupt>
24: 19 c0 rjmp .+50 ; 0x58 <__bad_interrupt>
00000026 <__ctors_end>:
26: 11 24 eor r1, r1
28: 1f be out 0x3f, r1 ; 63
2a: cf ed ldi r28, 0xDF ; 223
2c: cd bf out 0x3d, r28 ; 61
0000002e <__do_copy_data>:
2e: 10 e0 ldi r17, 0x00 ; 0
30: a0 e6 ldi r26, 0x60 ; 96
32: b0 e0 ldi r27, 0x00 ; 0
34: ee ef ldi r30, 0xFE ; 254
36: f1 e0 ldi r31, 0x01 ; 1
38: 03 c0 rjmp .+6 ; 0x40 <.do_copy_data_start>
0000003a <.do_copy_data_loop>:
3a: c8 95 lpm
3c: 31 96 adiw r30, 0x01 ; 1
3e: 0d 92 st X+, r0
00000040 <.do_copy_data_start>:
40: a6 37 cpi r26, 0x76 ; 118
42: b1 07 cpc r27, r17
44: d1 f7 brne .-12 ; 0x3a <.do_copy_data_loop>
00000046 <__do_clear_bss>:
46: 10 e0 ldi r17, 0x00 ; 0
48: a6 e7 ldi r26, 0x76 ; 118
4a: b0 e0 ldi r27, 0x00 ; 0
4c: 01 c0 rjmp .+2 ; 0x50 <.do_clear_bss_start>
0000004e <.do_clear_bss_loop>:
4e: 1d 92 st X+, r1
00000050 <.do_clear_bss_start>:
50: ab 37 cpi r26, 0x7B ; 123
52: b1 07 cpc r27, r17
54: e1 f7 brne .-8 ; 0x4e <.do_clear_bss_loop>
56: 6b c0 rjmp .+214 ; 0x12e <main>
00000058 <__bad_interrupt>:
58: d3 cf rjmp .-90 ; 0x0 <__vectors>
0000005a <__vector_9>:
uint8_t led;
static volatile uint8_t flag;
ISR(UART_TX_vect)
{
5a: 1f 92 push r1
5c: 0f 92 push r0
5e: 0f b6 in r0, 0x3f ; 63
60: 0f 92 push r0
62: 11 24 eor r1, r1
64: 8f 93 push r24
66: ef 93 push r30
68: ff 93 push r31
uart_data_ptr++;
6a: e0 91 77 00 lds r30, 0x0077
6e: f0 91 78 00 lds r31, 0x0078
72: 31 96 adiw r30, 0x01 ; 1
74: f0 93 78 00 sts 0x0078, r31
78: e0 93 77 00 sts 0x0077, r30
7c: 31 97 sbiw r30, 0x01 ; 1
if(--uart_counter)
7e: 80 91 7a 00 lds r24, 0x007A
82: 81 50 subi r24, 0x01 ; 1
84: 80 93 7a 00 sts 0x007A, r24
88: 88 23 and r24, r24
8a: 11 f0 breq .+4 ; 0x90 <__vector_9+0x36>
UDR = *uart_data_ptr;
8c: 81 81 ldd r24, Z+1 ; 0x01
8e: 8c b9 out 0x0c, r24 ; 12
90: ff 91 pop r31
92: ef 91 pop r30
94: 8f 91 pop r24
96: 0f 90 pop r0
98: 0f be out 0x3f, r0 ; 63
9a: 0f 90 pop r0
9c: 1f 90 pop r1
9e: 18 95 reti
000000a0 <__vector_7>:
}
ISR(UART_RX_vect)
{
a0: 1f 92 push r1
a2: 0f 92 push r0
a4: 0f b6 in r0, 0x3f ; 63
a6: 0f 92 push r0
a8: 11 24 eor r1, r1
aa: 8f 93 push r24
led = UDR;
ac: 8c b1 in r24, 0x0c ; 12
ae: 80 93 79 00 sts 0x0079, r24
PORTB = ~led;
b2: 80 95 com r24
b4: 88 bb out 0x18, r24 ; 24
flag = 1;
b6: 81 e0 ldi r24, 0x01 ; 1
b8: 80 93 76 00 sts 0x0076, r24
bc: 8f 91 pop r24
be: 0f 90 pop r0
c0: 0f be out 0x3f, r0 ; 63
c2: 0f 90 pop r0
c4: 1f 90 pop r1
c6: 18 95 reti
000000c8 <uart_send>:
}
void uart_send(uint8_t* buff, uint8_t size)
{
c8: f9 2f mov r31, r25
ca: e8 2f mov r30, r24
if(!uart_counter) {
cc: 80 91 7a 00 lds r24, 0x007A
d0: 88 23 and r24, r24
d2: 41 f4 brne .+16 ; 0xe4 <__stack+0x5>
uart_data_ptr = buff;
d4: f0 93 78 00 sts 0x0078, r31
d8: e0 93 77 00 sts 0x0077, r30
uart_counter = size;
dc: 60 93 7a 00 sts 0x007A, r22
UDR = *buff;
e0: 80 81 ld r24, Z
e2: 8c b9 out 0x0c, r24 ; 12
e4: 08 95 ret
000000e6 <uart_init>:
}
}
void uart_init(void)
{
UCR = _BV(RXCIE) | _BV(TXCIE) | _BV(RXEN) | _BV(TXEN);
e6: 88 ed ldi r24, 0xD8 ; 216
e8: 8a b9 out 0x0a, r24 ; 10
#ifdef _AVR_IOTN2313_H_
UBRRH = (uint8_t)(UART_BAUD_SELECT >> 8);
ea: 12 b8 out 0x02, r1 ; 2
#endif //attiny2313
UBRR = (uint8_t)UART_BAUD_SELECT;
ec: 8c e0 ldi r24, 0x0C ; 12
ee: 89 b9 out 0x09, r24 ; 9
f0: 08 95 ret
000000f2 <int2str>:
}
char* int2str(uint8_t num, char* str_val)
{
f2: b7 2f mov r27, r23
f4: a6 2f mov r26, r22
uint8_t i;
uint8_t hi = num >> 4;
f6: 28 2f mov r18, r24
f8: 22 95 swap r18
fa: 2f 70 andi r18, 0x0F ; 15
str_val[0] = '0';
fc: 90 e3 ldi r25, 0x30 ; 48
fe: 9c 93 st X, r25
str_val[1] = 'x';
100: 98 e7 ldi r25, 0x78 ; 120
102: f7 2f mov r31, r23
104: e6 2f mov r30, r22
106: 91 83 std Z+1, r25 ; 0x01
str_val[4] = 0;
108: 14 82 std Z+4, r1 ; 0x04
10a: 8f 70 andi r24, 0x0F ; 15
10c: 32 96 adiw r30, 0x02 ; 2
10e: 91 e0 ldi r25, 0x01 ; 1
for(i=2; i<4; i++) {
if(hi > 9) str_val[i] = hi + 55;
110: 2a 30 cpi r18, 0x0A ; 10
112: 40 f0 brcs .+16 ; 0x124 <int2str+0x32>
114: 29 5c subi r18, 0xC9 ; 201
else str_val[i] = hi + 48;
116: 20 83 st Z, r18
hi = num & 0x0f;
118: 28 2f mov r18, r24
11a: 91 50 subi r25, 0x01 ; 1
11c: 31 96 adiw r30, 0x01 ; 1
11e: 97 ff sbrs r25, 7
120: f7 cf rjmp .-18 ; 0x110 <int2str+0x1e>
122: 02 c0 rjmp .+4 ; 0x128 <int2str+0x36>
124: 20 5d subi r18, 0xD0 ; 208
126: f7 cf rjmp .-18 ; 0x116 <int2str+0x24>
}
return str_val;
}
128: 8a 2f mov r24, r26
12a: 9b 2f mov r25, r27
12c: 08 95 ret
0000012e <main>:
int main(void)
{
12e: c5 ec ldi r28, 0xC5 ; 197
130: d0 e0 ldi r29, 0x00 ; 0
132: de bf out 0x3e, r29 ; 62
134: cd bf out 0x3d, r28 ; 61
char str_val[5];
char message[21] = "Recive value:";
136: 0c 2f mov r16, r28
138: 1d 2f mov r17, r29
13a: 0a 5f subi r16, 0xFA ; 250
13c: 1f 4f sbci r17, 0xFF ; 255
13e: 20 e6 ldi r18, 0x60 ; 96
140: a2 2e mov r10, r18
142: 20 e0 ldi r18, 0x00 ; 0
144: b2 2e mov r11, r18
146: 8e e0 ldi r24, 0x0E ; 14
148: b1 2f mov r27, r17
14a: a0 2f mov r26, r16
14c: fb 2d mov r31, r11
14e: ea 2d mov r30, r10
150: 01 90 ld r0, Z+
152: 0d 92 st X+, r0
154: 8a 95 dec r24
156: e1 f7 brne .-8 ; 0x150 <main+0x22>
158: 87 e0 ldi r24, 0x07 ; 7
15a: fd 2f mov r31, r29
15c: ec 2f mov r30, r28
15e: 74 96 adiw r30, 0x14 ; 20
160: 11 92 st Z+, r1
162: 8a 95 dec r24
164: e9 f7 brne .-6 ; 0x160 <main+0x32>
char* ptr;
uart_init();
166: bf df rcall .-130 ; 0xe6 <uart_init>
DDRB = 0xff;
168: 8f ef ldi r24, 0xFF ; 255
16a: 87 bb out 0x17, r24 ; 23
PORTB = 0x00;
16c: 18 ba out 0x18, r1 ; 24
flag = 0;
16e: 10 92 76 00 sts 0x0076, r1
sei();
172: 78 94 sei
led = 'o';
174: 8f e6 ldi r24, 0x6F ; 111
176: 80 93 79 00 sts 0x0079, r24
17a: 9e e0 ldi r25, 0x0E ; 14
17c: 99 2e mov r9, r25
17e: 83 e2 ldi r24, 0x23 ; 35
180: c8 2e mov r12, r24
182: 83 e2 ldi r24, 0x23 ; 35
184: d8 2e mov r13, r24
186: 83 e2 ldi r24, 0x23 ; 35
188: e8 2e mov r14, r24
18a: f1 2c mov r15, r1
while(1) {
if(flag == 1) {
18c: 80 91 76 00 lds r24, 0x0076
190: 81 30 cpi r24, 0x01 ; 1
192: e1 f7 brne .-8 ; 0x18c <main+0x5e>
strcpy(message, "Recive value:");
194: b1 2f mov r27, r17
196: a0 2f mov r26, r16
198: fb 2d mov r31, r11
19a: ea 2d mov r30, r10
19c: 89 2d mov r24, r9
19e: 01 90 ld r0, Z+
1a0: 0d 92 st X+, r0
1a2: 8a 95 dec r24
1a4: e1 f7 brne .-8 ; 0x19e <main+0x70>
int2str(led, str_val);
1a6: 6c 2f mov r22, r28
1a8: 7d 2f mov r23, r29
1aa: 6f 5f subi r22, 0xFF ; 255
1ac: 7f 4f sbci r23, 0xFF ; 255
1ae: 80 91 79 00 lds r24, 0x0079
1b2: 9f df rcall .-194 ; 0xf2 <int2str>
strcat(message, str_val);
1b4: 6c 2f mov r22, r28
1b6: 7d 2f mov r23, r29
1b8: 6f 5f subi r22, 0xFF ; 255
1ba: 7f 4f sbci r23, 0xFF ; 255
1bc: 91 2f mov r25, r17
1be: 80 2f mov r24, r16
1c0: 11 d0 rcall .+34 ; 0x1e4 <strcat>
strcat(message, "###");
1c2: f1 2f mov r31, r17
1c4: e0 2f mov r30, r16
1c6: 01 90 ld r0, Z+
1c8: 00 20 and r0, r0
1ca: e9 f7 brne .-6 ; 0x1c6 <main+0x98>
1cc: 31 97 sbiw r30, 0x01 ; 1
1ce: c0 82 st Z, r12
1d0: d1 82 std Z+1, r13 ; 0x01
1d2: e2 82 std Z+2, r14 ; 0x02
1d4: f3 82 std Z+3, r15 ; 0x03
uart_send(message, sizeof(message)-1);
1d6: 64 e1 ldi r22, 0x14 ; 20
1d8: 91 2f mov r25, r17
1da: 80 2f mov r24, r16
1dc: 75 df rcall .-278 ; 0xc8 <uart_send>
flag = 0;
1de: 10 92 76 00 sts 0x0076, r1
1e2: d4 cf rjmp .-88 ; 0x18c <main+0x5e>
000001e4 <strcat>:
1e4: e6 2f mov r30, r22
1e6: f7 2f mov r31, r23
1e8: a8 2f mov r26, r24
1ea: b9 2f mov r27, r25
1ec: 0d 90 ld r0, X+
1ee: 00 20 and r0, r0
1f0: e9 f7 brne .-6 ; 0x1ec <strcat+0x8>
1f2: 11 97 sbiw r26, 0x01 ; 1
1f4: 01 90 ld r0, Z+
1f6: 0d 92 st X+, r0
1f8: 00 20 and r0, r0
1fa: e1 f7 brne .-8 ; 0x1f4 <strcat+0x10>
1fc: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -