📄 usart.lss
字号:
usart.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000009e 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 0000009e 00000132 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 00800060 0000009e 00000132 2**0
ALLOC
3 .noinit 00000000 00800060 00800060 00000132 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000132 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 00000134 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 000004a0 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000014 00000000 00000000 00000524 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 00000046 00000000 00000000 00000538 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 000000cc 00000000 00000000 0000057e 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 0000007c 00000000 00000000 0000064a 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 000000f1 00000000 00000000 000006c6 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 00000099 00000000 00000000 000007b7 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end>
2: 2b c0 rjmp .+86 ; 0x5a <__bad_interrupt>
4: 2a c0 rjmp .+84 ; 0x5a <__bad_interrupt>
6: 29 c0 rjmp .+82 ; 0x5a <__bad_interrupt>
8: 28 c0 rjmp .+80 ; 0x5a <__bad_interrupt>
a: 27 c0 rjmp .+78 ; 0x5a <__bad_interrupt>
c: 26 c0 rjmp .+76 ; 0x5a <__bad_interrupt>
e: 25 c0 rjmp .+74 ; 0x5a <__bad_interrupt>
10: 24 c0 rjmp .+72 ; 0x5a <__bad_interrupt>
12: 23 c0 rjmp .+70 ; 0x5a <__bad_interrupt>
14: 22 c0 rjmp .+68 ; 0x5a <__bad_interrupt>
16: 21 c0 rjmp .+66 ; 0x5a <__bad_interrupt>
18: 20 c0 rjmp .+64 ; 0x5a <__bad_interrupt>
1a: 1f c0 rjmp .+62 ; 0x5a <__bad_interrupt>
1c: 1e c0 rjmp .+60 ; 0x5a <__bad_interrupt>
1e: 1d c0 rjmp .+58 ; 0x5a <__bad_interrupt>
20: 1c c0 rjmp .+56 ; 0x5a <__bad_interrupt>
22: 1b c0 rjmp .+54 ; 0x5a <__bad_interrupt>
24: 1a c0 rjmp .+52 ; 0x5a <__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: ee e9 ldi r30, 0x9E ; 158
3a: f0 e0 ldi r31, 0x00 ; 0
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: a0 36 cpi r26, 0x60 ; 96
54: b1 07 cpc r27, r17
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop>
58: 12 c0 rjmp .+36 ; 0x7e <main>
0000005a <__bad_interrupt>:
5a: d2 cf rjmp .-92 ; 0x0 <__vectors>
0000005c <SendByte>:
//功能:通过串口发送一个字节
//------------------------------------------------------------------------------
void SendByte(unsigned char SendByte)
{
while (!(UCSRA & (1 << UDRE)))
5c: 5d 9b sbis 0x0b, 5 ; 11
5e: fe cf rjmp .-4 ; 0x5c <SendByte>
;
UDR = SendByte;
60: 8c b9 out 0x0c, r24 ; 12
62: 08 95 ret
00000064 <ReceiveByte>:
}
//------------------------------------------------------------------------------
//名称:unsigned char ReceiveByte(void)
//功能:通过串口接收一个字节
//------------------------------------------------------------------------------
unsigned char ReceiveByte(void)
{
while (!(UCSRA & (1<<RXC)))
64: 5f 9b sbis 0x0b, 7 ; 11
66: fe cf rjmp .-4 ; 0x64 <ReceiveByte>
;
return UDR;
68: 8c b1 in r24, 0x0c ; 12
}
6a: 99 27 eor r25, r25
6c: 08 95 ret
0000006e <UsartInit>:
//------------------------------------------------------------------------------
//名称:void UsartInit(void)
//功能:初始化串口
//------------------------------------------------------------------------------
void UsartInit(void)
{
UBRRH = (F_CPU / 16 /BAUD - 1) / 256;
6e: 10 bc out 0x20, r1 ; 32
UBRRL = F_CPU / 16 /BAUD - 1;
70: 83 e3 ldi r24, 0x33 ; 51
72: 89 b9 out 0x09, r24 ; 9
//根据给出的的波特率、时钟频率计算UBRH、UBRL的值
UCSRB = (1 << RXEN) | (1 << TXEN);
74: 88 e1 ldi r24, 0x18 ; 24
76: 8a b9 out 0x0a, r24 ; 10
//允许发送接收
UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0);
78: 86 e8 ldi r24, 0x86 ; 134
7a: 80 bd out 0x20, r24 ; 32
7c: 08 95 ret
0000007e <main>:
//一个停止位,8位数据,无校验
}
//******************************************************************************
//主程序
//******************************************************************************
int main(void)
{
7e: cf e5 ldi r28, 0x5F ; 95
80: d4 e0 ldi r29, 0x04 ; 4
82: de bf out 0x3e, r29 ; 62
84: cd bf out 0x3d, r28 ; 61
UsartInit();
86: f3 df rcall .-26 ; 0x6e <UsartInit>
SendByte(0x5a);
88: 8a e5 ldi r24, 0x5A ; 90
8a: e8 df rcall .-48 ; 0x5c <SendByte>
for (; ;)
{
if (ReceiveByte() == 0xcd)
8c: eb df rcall .-42 ; 0x64 <ReceiveByte>
8e: 8d 3c cpi r24, 0xCD ; 205
90: e9 f7 brne .-6 ; 0x8c <main+0xe>
{
SendByte(0x12);
92: 82 e1 ldi r24, 0x12 ; 18
94: e3 df rcall .-58 ; 0x5c <SendByte>
SendByte(0x34);
96: 84 e3 ldi r24, 0x34 ; 52
98: e1 df rcall .-62 ; 0x5c <SendByte>
SendByte(0x56);
9a: 86 e5 ldi r24, 0x56 ; 86
9c: f6 cf rjmp .-20 ; 0x8a <main+0xc>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -