main.lss
来自「ARP协议,含ARP」· LSS 代码 · 共 2,272 行 · 第 1/5 页
LSS
2,272 行
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000014 00800100 00001fe2 00002056 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 00001fe2 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 000008ae 00800114 00001ff6 0000206a 2**0
ALLOC
3 .debug_aranges 00000020 00000000 00000000 0000206a 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_pubnames 000009a0 00000000 00000000 0000208a 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_info 00002e1f 00000000 00000000 00002a2a 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_abbrev 000003d0 00000000 00000000 00005849 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_line 000028a2 00000000 00000000 00005c19 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_frame 00000820 00000000 00000000 000084bc 2**2
CONTENTS, READONLY, DEBUGGING
9 .debug_str 000008f7 00000000 00000000 00008cdc 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_loc 000012fb 00000000 00000000 000095d3 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_ranges 000002f0 00000000 00000000 0000a8ce 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 46 00 jmp 0x8c ; 0x8c <__ctors_end>
4: 0c 94 42 04 jmp 0x884 ; 0x884 <__vector_1>
8: 0c 94 70 04 jmp 0x8e0 ; 0x8e0 <__vector_2>
c: 0c 94 72 04 jmp 0x8e4 ; 0x8e4 <__vector_3>
10: 0c 94 74 04 jmp 0x8e8 ; 0x8e8 <__vector_4>
14: 0c 94 76 04 jmp 0x8ec ; 0x8ec <__vector_5>
18: 0c 94 78 04 jmp 0x8f0 ; 0x8f0 <__vector_6>
1c: 0c 94 7a 04 jmp 0x8f4 ; 0x8f4 <__vector_7>
20: 0c 94 7c 04 jmp 0x8f8 ; 0x8f8 <__vector_8>
24: 0c 94 7e 04 jmp 0x8fc ; 0x8fc <__vector_9>
28: 0c 94 80 04 jmp 0x900 ; 0x900 <__vector_10>
2c: 0c 94 82 04 jmp 0x904 ; 0x904 <__vector_11>
30: 0c 94 84 04 jmp 0x908 ; 0x908 <__vector_12>
34: 0c 94 86 04 jmp 0x90c ; 0x90c <__vector_13>
38: 0c 94 88 04 jmp 0x910 ; 0x910 <__vector_14>
3c: 0c 94 8a 04 jmp 0x914 ; 0x914 <__vector_15>
40: 0c 94 9b 04 jmp 0x936 ; 0x936 <__vector_16>
44: 0c 94 9d 04 jmp 0x93a ; 0x93a <__vector_17>
48: 0c 94 9f 04 jmp 0x93e ; 0x93e <__vector_18>
4c: 0c 94 a1 04 jmp 0x942 ; 0x942 <__vector_19>
50: 0c 94 a3 04 jmp 0x946 ; 0x946 <__vector_20>
54: 0c 94 a5 04 jmp 0x94a ; 0x94a <__vector_21>
58: 0c 94 a7 04 jmp 0x94e ; 0x94e <__vector_22>
5c: 0c 94 a9 04 jmp 0x952 ; 0x952 <__vector_23>
60: 0c 94 ab 04 jmp 0x956 ; 0x956 <__vector_24>
64: 0c 94 ad 04 jmp 0x95a ; 0x95a <__vector_25>
68: 0c 94 af 04 jmp 0x95e ; 0x95e <__vector_26>
6c: 0c 94 b1 04 jmp 0x962 ; 0x962 <__vector_27>
70: 0c 94 b3 04 jmp 0x966 ; 0x966 <__vector_28>
74: 0c 94 b5 04 jmp 0x96a ; 0x96a <__vector_29>
78: 0c 94 b7 04 jmp 0x96e ; 0x96e <__vector_30>
7c: 0c 94 cc 04 jmp 0x998 ; 0x998 <__vector_31>
80: 0c 94 ce 04 jmp 0x99c ; 0x99c <__vector_32>
84: 0c 94 d0 04 jmp 0x9a0 ; 0x9a0 <__vector_33>
88: 0c 94 d2 04 jmp 0x9a4 ; 0x9a4 <__vector_34>
0000008c <__ctors_end>:
8c: 11 24 eor r1, r1
8e: 1f be out 0x3f, r1 ; 63
90: cf ef ldi r28, 0xFF ; 255
92: d0 e1 ldi r29, 0x10 ; 16
94: de bf out 0x3e, r29 ; 62
96: cd bf out 0x3d, r28 ; 61
00000098 <__do_copy_data>:
98: 11 e0 ldi r17, 0x01 ; 1
9a: a0 e0 ldi r26, 0x00 ; 0
9c: b1 e0 ldi r27, 0x01 ; 1
9e: e2 ee ldi r30, 0xE2 ; 226
a0: ff e1 ldi r31, 0x1F ; 31
a2: 00 e0 ldi r16, 0x00 ; 0
a4: 0b bf out 0x3b, r16 ; 59
a6: 02 c0 rjmp .+4 ; 0xac <__do_copy_data+0x14>
a8: 07 90 elpm r0, Z+
aa: 0d 92 st X+, r0
ac: a4 31 cpi r26, 0x14 ; 20
ae: b1 07 cpc r27, r17
b0: d9 f7 brne .-10 ; 0xa8 <__do_copy_data+0x10>
000000b2 <__do_clear_bss>:
b2: 19 e0 ldi r17, 0x09 ; 9
b4: a4 e1 ldi r26, 0x14 ; 20
b6: b1 e0 ldi r27, 0x01 ; 1
b8: 01 c0 rjmp .+2 ; 0xbc <.do_clear_bss_start>
000000ba <.do_clear_bss_loop>:
ba: 1d 92 st X+, r1
000000bc <.do_clear_bss_start>:
bc: a2 3c cpi r26, 0xC2 ; 194
be: b1 07 cpc r27, r17
c0: e1 f7 brne .-8 ; 0xba <.do_clear_bss_loop>
c2: 0e 94 42 0f call 0x1e84 ; 0x1e84 <main>
c6: 0c 94 ef 0f jmp 0x1fde ; 0x1fde <_exit>
000000ca <__bad_interrupt>:
ca: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
000000ce <delay_1ms>:
/*
* 延时函数,单位:ms
* 如果使用优化编译,此函数需要修改
*/
void delay_1ms (us n) {
ce: 08 95 ret
000000d0 <init_timer0>:
* 输入:无
* 输出:无
* 返回值:无
* 说明:无
*/
void init_timer0 (void) {
d0: 8e e0 ldi r24, 0x0E ; 14
d2: 83 bf out 0x33, r24 ; 51
//在1Mhz下,256分频,计次39
TCCR0 = 0x0e;
OCR0 = 39;
d4: 87 e2 ldi r24, 0x27 ; 39
d6: 81 bf out 0x31, r24 ; 49
//只保留比较匹配中断
TIMSK = 0x02;
d8: 82 e0 ldi r24, 0x02 ; 2
da: 87 bf out 0x37, r24 ; 55
}
dc: 08 95 ret
000000de <init_tick_timer>:
void init_tick_timer (void) {
de: 8e e0 ldi r24, 0x0E ; 14
e0: 83 bf out 0x33, r24 ; 51
//在1Mhz下,256分频,计次39
TCCR0 = 0x0e;
OCR0 = 39;
e2: 87 e2 ldi r24, 0x27 ; 39
e4: 81 bf out 0x31, r24 ; 49
}
e6: 08 95 ret
000000e8 <init_stop_watch>:
//一个更精确的停表
void init_stop_watch (void) {
e8: 1f bc out 0x2f, r1 ; 47
TCCR1A = 0x00;
TCCR1B = 0x05;
ea: 85 e0 ldi r24, 0x05 ; 5
ec: 8e bd out 0x2e, r24 ; 46
TCCR1C = 0x00;
ee: 10 92 7a 00 sts 0x007A, r1
}
f2: 08 95 ret
000000f4 <start_stop_watch>:
void start_stop_watch (void) {
f4: 1d bc out 0x2d, r1 ; 45
//16位写,低字节写生效
TCNT1H = 0x00;
TCNT1L = 0x00;
f6: 1c bc out 0x2c, r1 ; 44
TCCR1B = 0x05; //启动计数CLK
f8: 85 e0 ldi r24, 0x05 ; 5
fa: 8e bd out 0x2e, r24 ; 46
}
fc: 08 95 ret
000000fe <stop_stop_watch>:
us stop_stop_watch (void) {
fe: 1e bc out 0x2e, r1 ; 46
} t;
TCCR1B = 0x00; //停止计数CLK
//16位读,低字节读生效
cli ();
100: f8 94 cli
t.c[0] = TCNT1L;
102: 8c b5 in r24, 0x2c ; 44
t.c[1] = TCNT1H;
104: 9d b5 in r25, 0x2d ; 45
sei ();
106: 78 94 sei
return t.s;
108: 08 95 ret
0000010a <put_char>:
char *hex_char = "0123456789ABCDEF";
extern volatile uc rx1_char;
void put_char(uc c)
{
10a: 98 2f mov r25, r24
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
10c: 80 91 9b 00 lds r24, 0x009B
110: 85 ff sbrs r24, 5
112: fc cf rjmp .-8 ; 0x10c <put_char+0x2>
UDR1 = c; /* 发送数据*/
114: 90 93 9c 00 sts 0x009C, r25
}
118: 08 95 ret
0000011a <put_Word>:
* 输出:无
* 返回值:无
* 说明:无
*/
void put_Word(us c)
{
11a: 28 2f mov r18, r24
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
11c: 80 91 9b 00 lds r24, 0x009B
120: 85 ff sbrs r24, 5
122: fc cf rjmp .-8 ; 0x11c <put_Word+0x2>
UDR1 = c; /* 发送数据*/
124: 20 93 9c 00 sts 0x009C, r18
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
128: 80 91 9b 00 lds r24, 0x009B
12c: 85 ff sbrs r24, 5
12e: fc cf rjmp .-8 ; 0x128 <put_Word+0xe>
UDR1 = c; /* 发送数据*/
130: 90 93 9c 00 sts 0x009C, r25
*/
void put_Word(us c)
{
put_char(c);
put_char(c>>8);
}
134: 08 95 ret
00000136 <put_str>:
* 输出:无
* 返回值:无
* 说明:无
*/
void put_str(uc *p)
{//发送字符串函数,发送数组
136: fc 01 movw r30, r24
138: 07 c0 rjmp .+14 ; 0x148 <put_str+0x12>
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
13a: 80 91 9b 00 lds r24, 0x009B
13e: 85 ff sbrs r24, 5
140: fc cf rjmp .-8 ; 0x13a <put_str+0x4>
UDR1 = c; /* 发送数据*/
142: 90 93 9c 00 sts 0x009C, r25
{//发送字符串函数,发送数组
while(0!=*p)
{
put_char(*p);
p++;
146: 31 96 adiw r30, 0x01 ; 1
* 说明:无
*/
void put_str(uc *p)
{//发送字符串函数,发送数组
while(0!=*p)
148: 90 81 ld r25, Z
14a: 99 23 and r25, r25
14c: b1 f7 brne .-20 ; 0x13a <put_str+0x4>
{
put_char(*p);
p++;
}
}
14e: 08 95 ret
00000150 <init_uart1>:
* 输出:无
* 返回值:无
* 说明:无
*/
void init_uart1 (void)
{
150: 8b 9a sbi 0x11, 3 ; 17
sbi(DDRD,3);
cbi(PORTD,3);
152: 93 98 cbi 0x12, 3 ; 18
rx1_char = 0;
154: 10 92 be 09 sts 0x09BE, r1
//在1Mhz的主频下,9600波特率设置
UBRR1H = 0;
158: 10 92 98 00 sts 0x0098, r1
UBRR1L = 12;
15c: 8c e0 ldi r24, 0x0C ; 12
15e: 80 93 99 00 sts 0x0099, r24
//倍速:是;多机模式:否
UCSR1A = 0x02;
162: 82 e0 ldi r24, 0x02 ; 2
164: 80 93 9b 00 sts 0x009B, r24
//使能UART的TX,RX
//使能接收中断
//使能发送结束中断;禁止发送缓冲区空中断
UCSR1B = 0x98;
168: 88 e9 ldi r24, 0x98 ; 152
16a: 80 93 9a 00 sts 0x009A, r24
//模式设置:异步,8位数据,1位停止位,无校验
UCSR1C = 0x06;
16e: 86 e0 ldi r24, 0x06 ; 6
170: 80 93 9d 00 sts 0x009D, r24
// UBRR1H=0x00;
//UBRR1L=0x06;
}
174: 08 95 ret
00000176 <put_hex>:
void put_hex (uc ch) {
176: 98 2f mov r25, r24
uc idx;
idx = (ch >> 4);
put_char (hex_char[idx]);
178: a0 91 11 01 lds r26, 0x0111
17c: b0 91 12 01 lds r27, 0x0112
180: 82 95 swap r24
182: 8f 70 andi r24, 0x0F ; 15
184: fd 01 movw r30, r26
186: e8 0f add r30, r24
188: f1 1d adc r31, r1
18a: e0 81 ld r30, Z
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
18c: 80 91 9b 00 lds r24, 0x009B
190: 85 ff sbrs r24, 5
192: fc cf rjmp .-8 ; 0x18c <put_hex+0x16>
UDR1 = c; /* 发送数据*/
194: e0 93 9c 00 sts 0x009C, r30
void put_hex (uc ch) {
uc idx;
idx = (ch >> 4);
put_char (hex_char[idx]);
idx = (ch & 0x0f);
put_char (hex_char[idx]);
198: 9f 70 andi r25, 0x0F ; 15
19a: a9 0f add r26, r25
19c: b1 1d adc r27, r1
19e: 9c 91 ld r25, X
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
1a0: 80 91 9b 00 lds r24, 0x009B
1a4: 85 ff sbrs r24, 5
1a6: fc cf rjmp .-8 ; 0x1a0 <put_hex+0x2a>
UDR1 = c; /* 发送数据*/
1a8: 90 93 9c 00 sts 0x009C, r25
uc idx;
idx = (ch >> 4);
put_char (hex_char[idx]);
idx = (ch & 0x0f);
put_char (hex_char[idx]);
}
1ac: 08 95 ret
000001ae <put_str_hex>:
void put_str_hex(uc *p)
{//发送字符串函数,发送数组
1ae: dc 01 movw r26, r24
void put_hex (uc ch) {
uc idx;
idx = (ch >> 4);
put_char (hex_char[idx]);
1b0: 20 91 11 01 lds r18, 0x0111
1b4: 30 91 12 01 lds r19, 0x0112
1b8: 19 c0 rjmp .+50 ; 0x1ec <put_str_hex+0x3e>
}
void put_str_hex(uc *p)
{//发送字符串函数,发送数组
while(0!=*p)
1ba: 89 2f mov r24, r25
1bc: 82 95 swap r24
1be: 8f 70 andi r24, 0x0F ; 15
1c0: f9 01 movw r30, r18
1c2: e8 0f add r30, r24
1c4: f1 1d adc r31, r1
1c6: e0 81 ld r30, Z
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
1c8: 80 91 9b 00 lds r24, 0x009B
1cc: 85 ff sbrs r24, 5
1ce: fc cf rjmp .-8 ; 0x1c8 <put_str_hex+0x1a>
UDR1 = c; /* 发送数据*/
1d0: e0 93 9c 00 sts 0x009C, r30
void put_hex (uc ch) {
uc idx;
idx = (ch >> 4);
put_char (hex_char[idx]);
idx = (ch & 0x0f);
put_char (hex_char[idx]);
1d4: 9f 70 andi r25, 0x0F ; 15
1d6: f9 01 movw r30, r18
1d8: e9 0f add r30, r25
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?