📄 uart1.lss
字号:
uart1.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000024a 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000016 00800060 0000024a 000002de 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000006 00800076 00800076 000002f4 2**0
ALLOC
3 .noinit 00000000 0080007c 0080007c 000002f4 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000002f4 2**0
CONTENTS
5 .stab 00000354 00000000 00000000 000002f4 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 00000648 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000014 00000000 00000000 000006cc 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 00000070 00000000 00000000 000006e0 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00000215 00000000 00000000 00000750 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 000000da 00000000 00000000 00000965 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 000001fb 00000000 00000000 00000a3f 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 000000f4 00000000 00000000 00000c3a 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: 50 c0 rjmp .+160 ; 0xb0 <__vector_7>
10: 65 c0 rjmp .+202 ; 0xdc <__vector_8>
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: ea e4 ldi r30, 0x4A ; 74
36: f2 e0 ldi r31, 0x02 ; 2
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: ac 37 cpi r26, 0x7C ; 124
52: b1 07 cpc r27, r17
54: e1 f7 brne .-8 ; 0x4e <.do_clear_bss_loop>
56: 86 c0 rjmp .+268 ; 0x164 <main>
00000058 <__bad_interrupt>:
58: d3 cf rjmp .-90 ; 0x0 <__vectors>
0000005a <__vector_9>:
static volatile uint8_t flag;
static volatile uint8_t txReady;
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 76 00 lds r30, 0x0076
6e: f0 91 77 00 lds r31, 0x0077
72: 31 96 adiw r30, 0x01 ; 1
74: f0 93 77 00 sts 0x0077, r31
78: e0 93 76 00 sts 0x0076, r30
7c: 31 97 sbiw r30, 0x01 ; 1
if(--uart_counter && txReady) {
7e: 80 91 78 00 lds r24, 0x0078
82: 81 50 subi r24, 0x01 ; 1
84: 80 93 78 00 sts 0x0078, r24
88: 80 91 78 00 lds r24, 0x0078
8c: 88 23 and r24, r24
8e: 41 f0 breq .+16 ; 0xa0 <__vector_9+0x46>
90: 80 91 7b 00 lds r24, 0x007B
94: 88 23 and r24, r24
96: 21 f0 breq .+8 ; 0xa0 <__vector_9+0x46>
UDR = *uart_data_ptr;
98: 81 81 ldd r24, Z+1 ; 0x01
9a: 8c b9 out 0x0c, r24 ; 12
txReady = 0;
9c: 10 92 7b 00 sts 0x007B, r1
a0: ff 91 pop r31
a2: ef 91 pop r30
a4: 8f 91 pop r24
a6: 0f 90 pop r0
a8: 0f be out 0x3f, r0 ; 63
aa: 0f 90 pop r0
ac: 1f 90 pop r1
ae: 18 95 reti
000000b0 <__vector_7>:
}
}
ISR(UART_RX_vect)
{
b0: 1f 92 push r1
b2: 0f 92 push r0
b4: 0f b6 in r0, 0x3f ; 63
b6: 0f 92 push r0
b8: 11 24 eor r1, r1
ba: 8f 93 push r24
led = UDR;
bc: 8c b1 in r24, 0x0c ; 12
be: 80 93 79 00 sts 0x0079, r24
PORTB = ~led;
c2: 80 91 79 00 lds r24, 0x0079
c6: 80 95 com r24
c8: 88 bb out 0x18, r24 ; 24
flag = 1;
ca: 81 e0 ldi r24, 0x01 ; 1
cc: 80 93 7a 00 sts 0x007A, r24
d0: 8f 91 pop r24
d2: 0f 90 pop r0
d4: 0f be out 0x3f, r0 ; 63
d6: 0f 90 pop r0
d8: 1f 90 pop r1
da: 18 95 reti
000000dc <__vector_8>:
}
ISR(USART_UDRE_vect)
{
dc: 1f 92 push r1
de: 0f 92 push r0
e0: 0f b6 in r0, 0x3f ; 63
e2: 0f 92 push r0
e4: 11 24 eor r1, r1
e6: 8f 93 push r24
txReady = 1;
e8: 81 e0 ldi r24, 0x01 ; 1
ea: 80 93 7b 00 sts 0x007B, r24
ee: 8f 91 pop r24
f0: 0f 90 pop r0
f2: 0f be out 0x3f, r0 ; 63
f4: 0f 90 pop r0
f6: 1f 90 pop r1
f8: 18 95 reti
000000fa <uart_send>:
}
void uart_send(uint8_t* buff, uint8_t size)
{
fa: f9 2f mov r31, r25
fc: e8 2f mov r30, r24
if(!uart_counter) {
fe: 80 91 78 00 lds r24, 0x0078
102: 88 23 and r24, r24
104: 41 f4 brne .+16 ; 0x116 <uart_send+0x1c>
uart_data_ptr = buff;
106: f0 93 77 00 sts 0x0077, r31
10a: e0 93 76 00 sts 0x0076, r30
uart_counter = size;
10e: 60 93 78 00 sts 0x0078, r22
UDR = *buff;
112: 80 81 ld r24, Z
114: 8c b9 out 0x0c, r24 ; 12
116: 08 95 ret
00000118 <uart_init>:
}
}
void uart_init(void)
{
UCR = _BV(RXCIE) | _BV(TXCIE) | _BV(RXEN) | _BV(TXEN);
118: 88 ed ldi r24, 0xD8 ; 216
11a: 8a b9 out 0x0a, r24 ; 10
#ifdef _AVR_IOTN2313_H_
UBRRH = (uint8_t)(UART_BAUD_SELECT >> 8);
11c: 12 b8 out 0x02, r1 ; 2
UCSRC = _BV(USBS) | _BV(UCSZ0);
11e: 8a e0 ldi r24, 0x0A ; 10
120: 83 b9 out 0x03, r24 ; 3
#endif //attiny2313
UBRR = (uint8_t)UART_BAUD_SELECT;
122: 8c e0 ldi r24, 0x0C ; 12
124: 89 b9 out 0x09, r24 ; 9
126: 08 95 ret
00000128 <int2str>:
}
char* int2str(uint8_t num, char* str_val)
{
128: b7 2f mov r27, r23
12a: a6 2f mov r26, r22
uint8_t i;
uint8_t hi = num >> 4;
12c: 28 2f mov r18, r24
12e: 22 95 swap r18
130: 2f 70 andi r18, 0x0F ; 15
str_val[0] = '0';
132: 90 e3 ldi r25, 0x30 ; 48
134: 9c 93 st X, r25
str_val[1] = 'x';
136: 98 e7 ldi r25, 0x78 ; 120
138: f7 2f mov r31, r23
13a: e6 2f mov r30, r22
13c: 91 83 std Z+1, r25 ; 0x01
str_val[4] = 0;
13e: 14 82 std Z+4, r1 ; 0x04
140: 8f 70 andi r24, 0x0F ; 15
142: 32 96 adiw r30, 0x02 ; 2
144: 91 e0 ldi r25, 0x01 ; 1
for(i=2; i<4; i++) {
if(hi > 9) str_val[i] = hi + 55;
146: 2a 30 cpi r18, 0x0A ; 10
148: 40 f0 brcs .+16 ; 0x15a <int2str+0x32>
14a: 29 5c subi r18, 0xC9 ; 201
else str_val[i] = hi + 48;
14c: 20 83 st Z, r18
hi = num & 0x0f;
14e: 28 2f mov r18, r24
150: 91 50 subi r25, 0x01 ; 1
152: 31 96 adiw r30, 0x01 ; 1
154: 97 ff sbrs r25, 7
156: f7 cf rjmp .-18 ; 0x146 <int2str+0x1e>
158: 02 c0 rjmp .+4 ; 0x15e <int2str+0x36>
15a: 20 5d subi r18, 0xD0 ; 208
15c: f7 cf rjmp .-18 ; 0x14c <int2str+0x24>
}
return str_val;
}
15e: 8a 2f mov r24, r26
160: 9b 2f mov r25, r27
162: 08 95 ret
00000164 <main>:
int main(void)
{
164: c5 ec ldi r28, 0xC5 ; 197
166: d0 e0 ldi r29, 0x00 ; 0
168: de bf out 0x3e, r29 ; 62
16a: cd bf out 0x3d, r28 ; 61
cli();
16c: f8 94 cli
char str_val[5];
char message[21] = "Recive value:";
16e: 0c 2f mov r16, r28
170: 1d 2f mov r17, r29
172: 0a 5f subi r16, 0xFA ; 250
174: 1f 4f sbci r17, 0xFF ; 255
176: 20 e6 ldi r18, 0x60 ; 96
178: a2 2e mov r10, r18
17a: 20 e0 ldi r18, 0x00 ; 0
17c: b2 2e mov r11, r18
17e: 8e e0 ldi r24, 0x0E ; 14
180: b1 2f mov r27, r17
182: a0 2f mov r26, r16
184: fb 2d mov r31, r11
186: ea 2d mov r30, r10
188: 01 90 ld r0, Z+
18a: 0d 92 st X+, r0
18c: 8a 95 dec r24
18e: e1 f7 brne .-8 ; 0x188 <main+0x24>
190: 87 e0 ldi r24, 0x07 ; 7
192: fd 2f mov r31, r29
194: ec 2f mov r30, r28
196: 74 96 adiw r30, 0x14 ; 20
198: 11 92 st Z+, r1
19a: 8a 95 dec r24
19c: e9 f7 brne .-6 ; 0x198 <main+0x34>
uart_init();
19e: bc df rcall .-136 ; 0x118 <uart_init>
DDRB = 0xff;
1a0: 8f ef ldi r24, 0xFF ; 255
1a2: 87 bb out 0x17, r24 ; 23
PORTB = 0x00;
1a4: 18 ba out 0x18, r1 ; 24
flag = 0;
1a6: 10 92 7a 00 sts 0x007A, r1
txReady = 1;
1aa: 81 e0 ldi r24, 0x01 ; 1
1ac: 80 93 7b 00 sts 0x007B, r24
uart_counter = 0;
1b0: 10 92 78 00 sts 0x0078, r1
sei();
1b4: 78 94 sei
1b6: 9e e0 ldi r25, 0x0E ; 14
1b8: 99 2e mov r9, r25
1ba: 83 e2 ldi r24, 0x23 ; 35
1bc: c8 2e mov r12, r24
1be: 83 e2 ldi r24, 0x23 ; 35
1c0: d8 2e mov r13, r24
1c2: 83 e2 ldi r24, 0x23 ; 35
1c4: e8 2e mov r14, r24
1c6: f1 2c mov r15, r1
1c8: 07 c0 rjmp .+14 ; 0x1d8 <main+0x74>
while(1) {
if(flag == 1) {
strcpy(message, "Recive value:");
int2str(led, str_val);
strcat(message, str_val);
strcat(message, "###");
uart_send(message, sizeof(message)-1);
flag = 0;
}
sleep_enable();
1ca: 85 b7 in r24, 0x35 ; 53
1cc: 80 62 ori r24, 0x20 ; 32
1ce: 85 bf out 0x35, r24 ; 53
sleep_cpu();
1d0: 88 95 sleep
sleep_disable();
1d2: 85 b7 in r24, 0x35 ; 53
1d4: 8f 7d andi r24, 0xDF ; 223
1d6: 85 bf out 0x35, r24 ; 53
1d8: 80 91 7a 00 lds r24, 0x007A
1dc: 81 30 cpi r24, 0x01 ; 1
1de: a9 f7 brne .-22 ; 0x1ca <main+0x66>
1e0: b1 2f mov r27, r17
1e2: a0 2f mov r26, r16
1e4: fb 2d mov r31, r11
1e6: ea 2d mov r30, r10
1e8: 89 2d mov r24, r9
1ea: 01 90 ld r0, Z+
1ec: 0d 92 st X+, r0
1ee: 8a 95 dec r24
1f0: e1 f7 brne .-8 ; 0x1ea <main+0x86>
1f2: 6c 2f mov r22, r28
1f4: 7d 2f mov r23, r29
1f6: 6f 5f subi r22, 0xFF ; 255
1f8: 7f 4f sbci r23, 0xFF ; 255
1fa: 80 91 79 00 lds r24, 0x0079
1fe: 94 df rcall .-216 ; 0x128 <int2str>
200: 6c 2f mov r22, r28
202: 7d 2f mov r23, r29
204: 6f 5f subi r22, 0xFF ; 255
206: 7f 4f sbci r23, 0xFF ; 255
208: 91 2f mov r25, r17
20a: 80 2f mov r24, r16
20c: 11 d0 rcall .+34 ; 0x230 <strcat>
20e: f1 2f mov r31, r17
210: e0 2f mov r30, r16
212: 01 90 ld r0, Z+
214: 00 20 and r0, r0
216: e9 f7 brne .-6 ; 0x212 <main+0xae>
218: 31 97 sbiw r30, 0x01 ; 1
21a: c0 82 st Z, r12
21c: d1 82 std Z+1, r13 ; 0x01
21e: e2 82 std Z+2, r14 ; 0x02
220: f3 82 std Z+3, r15 ; 0x03
222: 64 e1 ldi r22, 0x14 ; 20
224: 91 2f mov r25, r17
226: 80 2f mov r24, r16
228: 68 df rcall .-304 ; 0xfa <uart_send>
22a: 10 92 7a 00 sts 0x007A, r1
22e: cd cf rjmp .-102 ; 0x1ca <main+0x66>
00000230 <strcat>:
230: e6 2f mov r30, r22
232: f7 2f mov r31, r23
234: a8 2f mov r26, r24
236: b9 2f mov r27, r25
238: 0d 90 ld r0, X+
23a: 00 20 and r0, r0
23c: e9 f7 brne .-6 ; 0x238 <strcat+0x8>
23e: 11 97 sbiw r26, 0x01 ; 1
240: 01 90 ld r0, Z+
242: 0d 92 st X+, r0
244: 00 20 and r0, r0
246: e1 f7 brne .-8 ; 0x240 <strcat+0x10>
248: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -