📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000001ac 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 0000000d 00800060 000001ac 00000220 2**0
ALLOC
2 .debug_aranges 00000020 00000000 00000000 00000220 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_pubnames 000000c9 00000000 00000000 00000240 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_info 000002e4 00000000 00000000 00000309 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_abbrev 00000195 00000000 00000000 000005ed 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_line 000002a0 00000000 00000000 00000782 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 000000a0 00000000 00000000 00000a24 2**2
CONTENTS, READONLY, DEBUGGING
8 .debug_str 00000103 00000000 00000000 00000ac4 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_loc 00000080 00000000 00000000 00000bc7 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end>
2: 2c c0 rjmp .+88 ; 0x5c <__bad_interrupt>
4: 2b c0 rjmp .+86 ; 0x5c <__bad_interrupt>
6: 2a c0 rjmp .+84 ; 0x5c <__bad_interrupt>
8: 29 c0 rjmp .+82 ; 0x5c <__bad_interrupt>
a: 28 c0 rjmp .+80 ; 0x5c <__bad_interrupt>
c: 27 c0 rjmp .+78 ; 0x5c <__bad_interrupt>
e: 26 c0 rjmp .+76 ; 0x5c <__bad_interrupt>
10: 25 c0 rjmp .+74 ; 0x5c <__bad_interrupt>
12: 25 c0 rjmp .+74 ; 0x5e <__vector_9>
14: 23 c0 rjmp .+70 ; 0x5c <__bad_interrupt>
16: 55 c0 rjmp .+170 ; 0xc2 <__vector_11>
18: 21 c0 rjmp .+66 ; 0x5c <__bad_interrupt>
1a: 7c c0 rjmp .+248 ; 0x114 <__vector_13>
1c: 1f c0 rjmp .+62 ; 0x5c <__bad_interrupt>
1e: 1e c0 rjmp .+60 ; 0x5c <__bad_interrupt>
20: 1d c0 rjmp .+58 ; 0x5c <__bad_interrupt>
22: 1c c0 rjmp .+56 ; 0x5c <__bad_interrupt>
24: 1b c0 rjmp .+54 ; 0x5c <__bad_interrupt>
00000026 <__ctors_end>:
26: 11 24 eor r1, r1
28: 1f be out 0x3f, r1 ; 63
2a: cf e5 ldi r28, 0x5F ; 95
2c: d4 e0 ldi r29, 0x04 ; 4
2e: de bf out 0x3e, r29 ; 62
30: cd bf out 0x3d, r28 ; 61
00000032 <__do_copy_data>:
32: 10 e0 ldi r17, 0x00 ; 0
34: a0 e6 ldi r26, 0x60 ; 96
36: b0 e0 ldi r27, 0x00 ; 0
38: ec ea ldi r30, 0xAC ; 172
3a: f1 e0 ldi r31, 0x01 ; 1
3c: 02 c0 rjmp .+4 ; 0x42 <.do_copy_data_start>
0000003e <.do_copy_data_loop>:
3e: 05 90 lpm r0, Z+
40: 0d 92 st X+, r0
00000042 <.do_copy_data_start>:
42: a0 36 cpi r26, 0x60 ; 96
44: b1 07 cpc r27, r17
46: d9 f7 brne .-10 ; 0x3e <.do_copy_data_loop>
00000048 <__do_clear_bss>:
48: 10 e0 ldi r17, 0x00 ; 0
4a: a0 e6 ldi r26, 0x60 ; 96
4c: b0 e0 ldi r27, 0x00 ; 0
4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start>
00000050 <.do_clear_bss_loop>:
50: 1d 92 st X+, r1
00000052 <.do_clear_bss_start>:
52: ad 36 cpi r26, 0x6D ; 109
54: b1 07 cpc r27, r17
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop>
58: 7e d0 rcall .+252 ; 0x156 <main>
5a: a6 c0 rjmp .+332 ; 0x1a8 <_exit>
0000005c <__bad_interrupt>:
5c: d1 cf rjmp .-94 ; 0x0 <__vectors>
0000005e <__vector_9>:
volatile unsigned char recestate=0; // 0--接收空闲;1--正在接收;3--总超时; 4--头超时;5--间隔超时;6--接收完成(字节超时)
volatile unsigned char recest_time=0; //接收时间,1次为0.5个字节,对于9600波特率的。
//********************定时器。0.3个字节定时
SIGNAL (SIG_OVERFLOW0) //64分频,4计数
{
5e: 1f 92 push r1
60: 0f 92 push r0
62: 0f b6 in r0, 0x3f ; 63
64: 0f 92 push r0
66: 11 24 eor r1, r1
68: 8f 93 push r24
recest_time++;
6a: 80 91 62 00 lds r24, 0x0062
6e: 8f 5f subi r24, 0xFF ; 255
70: 80 93 62 00 sts 0x0062, r24
if(recest_time<127)
74: 80 91 62 00 lds r24, 0x0062
78: 8f 37 cpi r24, 0x7F ; 127
7a: 08 f4 brcc .+2 ; 0x7e <__vector_9+0x20>
PORTD|=(1<<PD3);
7c: 93 9a sbi 0x12, 3 ; 18
if(recest_time>124)
7e: 80 91 62 00 lds r24, 0x0062
82: 8d 37 cpi r24, 0x7D ; 125
84: 08 f0 brcs .+2 ; 0x88 <__vector_9+0x2a>
PORTD&=~(1<<PD3);
86: 93 98 cbi 0x12, 3 ; 18
if(recest_time>254)
88: 80 91 62 00 lds r24, 0x0062
8c: 8f 3f cpi r24, 0xFF ; 255
8e: 11 f4 brne .+4 ; 0x94 <__vector_9+0x36>
recest_time=0;
90: 10 92 62 00 sts 0x0062, r1
}
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 <USART_Init>:
//~~~~~~~~~~~~~~~~~设置串口的参数~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void USART_Init( unsigned int baud )
{
a0: 10 bc out 0x20, r1 ; 32
/* 设置波特率9600*/
UBRRH = 0;
UBRRL = 47;
a2: 8f e2 ldi r24, 0x2F ; 47
a4: 89 b9 out 0x09, r24 ; 9
/* 接收器与发送器使能*/
UCSRB = (1<<TXCIE)|(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
a6: 88 ed ldi r24, 0xD8 ; 216
a8: 8a b9 out 0x0a, r24 ; 10
/* 设置帧格式: 8 个数据位, 2 个停止位*/
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
aa: 8e e8 ldi r24, 0x8E ; 142
ac: 80 bd out 0x20, r24 ; 32
}
ae: 08 95 ret
000000b0 <USART_Transmit>:
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void USART_Transmit( unsigned char data )
{PORTD|=(1<<PD2); //485输出使能
b0: 92 9a sbi 0x12, 2 ; 18
/* 等待发送缓冲器为空 */
while ( !( UCSRA & (1<<UDRE)) )
b2: 5d 9b sbis 0x0b, 5 ; 11
b4: fe cf rjmp .-4 ; 0xb2 <USART_Transmit+0x2>
;
/* 将数据放入缓冲器,发送数据 */
UDR = data;
b6: 8c b9 out 0x0c, r24 ; 12
}
b8: 08 95 ret
000000ba <USART_Receive>:
unsigned char USART_Receive( void )
{
ba: 5f 9b sbis 0x0b, 7 ; 11
bc: fe cf rjmp .-4 ; 0xba <USART_Receive>
/* 等待接收数据*/
while ( !(UCSRA & (1<<RXC)) )
;
/* 从缓冲器中获取并返回数据*/
return UDR;
be: 8c b1 in r24, 0x0c ; 12
}
c0: 08 95 ret
000000c2 <__vector_11>:
SIGNAL (SIG_UART_RECV) //接收中断
{
c2: 1f 92 push r1
c4: 0f 92 push r0
c6: 0f b6 in r0, 0x3f ; 63
c8: 0f 92 push r0
ca: 11 24 eor r1, r1
cc: 8f 93 push r24
ce: ef 93 push r30
d0: ff 93 push r31
if(recestlen<6) //设定接收数据的长度
d2: 80 91 60 00 lds r24, 0x0060
d6: 86 30 cpi r24, 0x06 ; 6
d8: a8 f4 brcc .+42 ; 0x104 <__vector_11+0x42>
{
bm[recestlen]=UDR; //接收数据
da: e0 91 60 00 lds r30, 0x0060
de: f0 e0 ldi r31, 0x00 ; 0
e0: 8c b1 in r24, 0x0c ; 12
e2: ed 59 subi r30, 0x9D ; 157
e4: ff 4f sbci r31, 0xFF ; 255
e6: 80 83 st Z, r24
recestlen++;
e8: 80 91 60 00 lds r24, 0x0060
ec: 8f 5f subi r24, 0xFF ; 255
ee: 80 93 60 00 sts 0x0060, r24
if(recestlen>=6)
f2: 80 91 60 00 lds r24, 0x0060
f6: 86 30 cpi r24, 0x06 ; 6
f8: 28 f0 brcs .+10 ; 0x104 <__vector_11+0x42>
{
recestlen=0;
fa: 10 92 60 00 sts 0x0060, r1
UCSRB &= ~( (1<<RXCIE) | (1<<RXEN) ); //关闭接收使能
fe: 8a b1 in r24, 0x0a ; 10
100: 8f 76 andi r24, 0x6F ; 111
102: 8a b9 out 0x0a, r24 ; 10
}
}
}
104: ff 91 pop r31
106: ef 91 pop r30
108: 8f 91 pop r24
10a: 0f 90 pop r0
10c: 0f be out 0x3f, r0 ; 63
10e: 0f 90 pop r0
110: 1f 90 pop r1
112: 18 95 reti
00000114 <__vector_13>:
//****************************************************************************
SIGNAL (SIG_UART_TRANS) //发送结束中断
{PORTD&=~(1<<PD2); } //485输入使能
114: 1f 92 push r1
116: 0f 92 push r0
118: 0f b6 in r0, 0x3f ; 63
11a: 0f 92 push r0
11c: 11 24 eor r1, r1
11e: 92 98 cbi 0x12, 2 ; 18
120: 0f 90 pop r0
122: 0f be out 0x3f, r0 ; 63
124: 0f 90 pop r0
126: 1f 90 pop r1
128: 18 95 reti
0000012a <USART_send>:
//****************************************************************************
//*p要发送的数据
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -