📄 nangle.lss
字号:
Nangle.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000000 00800100 00000738 000007cc 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 00000738 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 0000018b 00800100 00800100 000007cc 2**2
ALLOC
3 .noinit 00000000 0080028b 0080028b 000007cc 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000007cc 2**0
CONTENTS
5 .stab 00001d40 00000000 00000000 000007cc 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000398 00000000 00000000 0000250c 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000028 00000000 00000000 000028a4 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 000001b6 00000000 00000000 000028cc 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00000538 00000000 00000000 00002a82 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 000001b3 00000000 00000000 00002fba 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 0000039e 00000000 00000000 0000316d 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 00000239 00000000 00000000 0000350b 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 4d 00 jmp 0x9a <__init>
4: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
8: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
c: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
10: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
14: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
18: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
1c: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
20: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
24: 0c 94 4b 01 jmp 0x296 <__vector_9>
28: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
2c: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
30: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
34: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
38: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
3c: 0c 94 45 01 jmp 0x28a <__vector_15>
40: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
44: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
48: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
4c: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
50: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
54: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
58: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
5c: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
60: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
64: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
68: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
6c: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
70: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
74: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
78: 0c 94 78 00 jmp 0xf0 <__vector_30>
7c: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
80: 0c 94 93 00 jmp 0x126 <__vector_32>
84: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
88: 0c 94 68 00 jmp 0xd0 <__bad_interrupt>
0000008c <UartTaskTcb>:
8c: 6b 02 75 01 d0 01 01 k.u....
00000093 <MainTaskTcb>:
93: 20 02 4f 01 72 02 00 .O.r..
0000009a <__init>:
9a: 11 24 eor r1, r1
9c: 1f be out 0x3f, r1 ; 63
9e: cf ef ldi r28, 0xFF ; 255
a0: d0 e1 ldi r29, 0x10 ; 16
a2: de bf out 0x3e, r29 ; 62
a4: cd bf out 0x3d, r28 ; 61
000000a6 <__do_copy_data>:
a6: 11 e0 ldi r17, 0x01 ; 1
a8: a0 e0 ldi r26, 0x00 ; 0
aa: b1 e0 ldi r27, 0x01 ; 1
ac: e8 e3 ldi r30, 0x38 ; 56
ae: f7 e0 ldi r31, 0x07 ; 7
b0: 02 c0 rjmp .+4 ; 0xb6 <.do_copy_data_start>
000000b2 <.do_copy_data_loop>:
b2: 05 90 lpm r0, Z+
b4: 0d 92 st X+, r0
000000b6 <.do_copy_data_start>:
b6: a0 30 cpi r26, 0x00 ; 0
b8: b1 07 cpc r27, r17
ba: d9 f7 brne .-10 ; 0xb2 <.do_copy_data_loop>
000000bc <__do_clear_bss>:
bc: 12 e0 ldi r17, 0x02 ; 2
be: a0 e0 ldi r26, 0x00 ; 0
c0: b1 e0 ldi r27, 0x01 ; 1
c2: 01 c0 rjmp .+2 ; 0xc6 <.do_clear_bss_start>
000000c4 <.do_clear_bss_loop>:
c4: 1d 92 st X+, r1
000000c6 <.do_clear_bss_start>:
c6: ab 38 cpi r26, 0x8B ; 139
c8: b1 07 cpc r27, r17
ca: e1 f7 brne .-8 ; 0xc4 <.do_clear_bss_loop>
cc: 0c 94 94 01 jmp 0x328 <main>
000000d0 <__bad_interrupt>:
d0: 0c 94 00 00 jmp 0x0 <__vectors>
000000d4 <InitUart>:
//USART Receiver: On
//USART Transmitter: On
//USART Mode: Asynchronous
//USART Baud rate: 38400
UCSR1A = 0x00;
d4: 10 92 9b 00 sts 0x009B, r1
UCSR1B = 0xD8;
d8: 88 ed ldi r24, 0xD8 ; 216
da: 80 93 9a 00 sts 0x009A, r24
UCSR1C = 0x06;
de: 86 e0 ldi r24, 0x06 ; 6
e0: 80 93 9d 00 sts 0x009D, r24
UBRR1H = 0x00;
e4: 10 92 98 00 sts 0x0098, r1
UBRR1L = 0x0C;
e8: 8c e0 ldi r24, 0x0C ; 12
ea: 80 93 99 00 sts 0x0099, r24
ee: 08 95 ret
000000f0 <__vector_30>:
}
/***************************************************************************
*Function Name
*Description :
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :ChenWeiGuo
*Create Tate :2007-4-27
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
#pragma optimize=z 4
AVRX_SIGINT(SIG_UART1_RECV)//串口接收中断函数
{
/*接收到数据*/
IntProlog(); //切换到系统堆栈
f0: 0e 94 a7 01 call 0x34e <IntProlog>
Rx1Buffer[Rx1Tail] = UDR1;
f4: 20 91 02 01 lds r18, 0x0102
f8: 30 91 03 01 lds r19, 0x0103
fc: f9 01 movw r30, r18
fe: e4 59 subi r30, 0x94 ; 148
100: fe 4f sbci r31, 0xFE ; 254
102: 80 91 9c 00 lds r24, 0x009C
106: 80 83 st Z, r24
IncRxPtr(Rx1Tail); //调整尾巴
108: c9 01 movw r24, r18
10a: 01 96 adiw r24, 0x01 ; 1
10c: 90 93 03 01 sts 0x0103, r25
110: 80 93 02 01 sts 0x0102, r24
114: 84 36 cpi r24, 0x64 ; 100
116: 91 05 cpc r25, r1
118: 20 f0 brcs .+8 ; 0x122 <__vector_30+0x32>
11a: 10 92 03 01 sts 0x0103, r1
11e: 10 92 02 01 sts 0x0102, r1
Epilog(); //返回任务堆栈
122: 0e 94 f3 01 call 0x3e6 <Epilog>
00000126 <__vector_32>:
}
/***************************************************************************
*Function Name
*Description :
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :ChenWeiGuo
*Create Tate :2007-4-27
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
#pragma optimize=z 4
AVRX_SIGINT(SIG_UART1_TRANS) //串口发送中断函数
{
//发送完数据
IntProlog(); //切换到系统堆栈
126: 0e 94 a7 01 call 0x34e <IntProlog>
if(Tx1Tail != Tx1Head)
12a: 80 91 00 01 lds r24, 0x0100
12e: 90 91 01 01 lds r25, 0x0101
132: 20 91 04 01 lds r18, 0x0104
136: 30 91 05 01 lds r19, 0x0105
13a: 82 17 cp r24, r18
13c: 93 07 cpc r25, r19
13e: 99 f0 breq .+38 ; 0x166 <__vector_32+0x40>
{
UDR1 = Tx1Buffer[Tx1Head];
140: f9 01 movw r30, r18
142: e8 5f subi r30, 0xF8 ; 248
144: fe 4f sbci r31, 0xFE ; 254
146: 80 81 ld r24, Z
148: 80 93 9c 00 sts 0x009C, r24
IncTxPtr(Tx1Head); //调整为下一次的头指针
14c: c9 01 movw r24, r18
14e: 01 96 adiw r24, 0x01 ; 1
150: 90 93 05 01 sts 0x0105, r25
154: 80 93 04 01 sts 0x0104, r24
158: 84 36 cpi r24, 0x64 ; 100
15a: 91 05 cpc r25, r1
15c: 20 f0 brcs .+8 ; 0x166 <__vector_32+0x40>
15e: 10 92 05 01 sts 0x0105, r1
162: 10 92 04 01 sts 0x0104, r1
}
Epilog(); //返回任务堆栈
166: 0e 94 f3 01 call 0x3e6 <Epilog>
0000016a <GetUart1Data>:
}
/***************************************************************************
*Function Name :GetUart1Data
*Description :
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :ChenWeiGuo
*Create Tate :2006-9-24
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
uint8 GetUart1Data(uint8 *pbyData)
{
16a: dc 01 movw r26, r24
//读取串口接收缓存区一字节数据
if(Rx1Tail != Rx1Head)
16c: 80 91 02 01 lds r24, 0x0102
170: 90 91 03 01 lds r25, 0x0103
174: e0 91 06 01 lds r30, 0x0106
178: f0 91 07 01 lds r31, 0x0107
17c: 8e 17 cp r24, r30
17e: 9f 07 cpc r25, r31
180: b9 f0 breq .+46 ; 0x1b0 <GetUart1Data+0x46>
{ /*缓冲区中有数据*/
*pbyData = Rx1Buffer[Rx1Head]; //取出第一个数据
182: e4 59 subi r30, 0x94 ; 148
184: fe 4f sbci r31, 0xFE ; 254
186: 80 81 ld r24, Z
188: 8c 93 st X, r24
IncRxPtr(Rx1Head); //调整为下一次的头指针
18a: 80 91 06 01 lds r24, 0x0106
18e: 90 91 07 01 lds r25, 0x0107
192: 01 96 adiw r24, 0x01 ; 1
194: 90 93 07 01 sts 0x0107, r25
198: 80 93 06 01 sts 0x0106, r24
19c: 84 36 cpi r24, 0x64 ; 100
19e: 91 05 cpc r25, r1
1a0: 20 f0 brcs .+8 ; 0x1aa <GetUart1Data+0x40>
1a2: 10 92 07 01 sts 0x0107, r1
1a6: 10 92 06 01 sts 0x0106, r1
return(OK);
1aa: 81 e0 ldi r24, 0x01 ; 1
1ac: 90 e0 ldi r25, 0x00 ; 0
1ae: 08 95 ret
}
else
{
return(ERROR);
1b0: 80 e0 ldi r24, 0x00 ; 0
1b2: 90 e0 ldi r25, 0x00 ; 0
}
}
1b4: 08 95 ret
000001b6 <PutUart1Data>:
/***************************************************************************
*Function Name :PutUart1Data
*Description :
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :ChenWeiGuo
*Create Tate :2006-9-24
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
uint8 PutUart1Data(uint8 byData)
{
Tx1Buffer[Tx1Tail] = byData; //数据入缓冲区
1b6: 20 91 00 01 lds r18, 0x0100
1ba: 30 91 01 01 lds r19, 0x0101
1be: f9 01 movw r30, r18
1c0: e8 5f subi r30, 0xF8 ; 248
1c2: fe 4f sbci r31, 0xFE ; 254
1c4: 80 83 st Z, r24
IncTxPtr(Tx1Tail); //调整为下一次的头指针
1c6: c9 01 movw r24, r18
1c8: 01 96 adiw r24, 0x01 ; 1
1ca: 90 93 01 01 sts 0x0101, r25
1ce: 80 93 00 01 sts 0x0100, r24
1d2: 84 36 cpi r24, 0x64 ; 100
1d4: 91 05 cpc r25, r1
1d6: 20 f0 brcs .+8 ; 0x1e0 <PutUart1Data+0x2a>
1d8: 10 92 01 01 sts 0x0101, r1
1dc: 10 92 00 01 sts 0x0100, r1
if(Tx1Tail != Tx1Head) //缓冲区没有满
1e0: 20 91 00 01 lds r18, 0x0100
1e4: 30 91 01 01 lds r19, 0x0101
1e8: 80 91 04 01 lds r24, 0x0104
1ec: 90 91 05 01 lds r25, 0x0105
1f0: 28 17 cp r18, r24
1f2: 39 07 cpc r19, r25
1f4: 19 f0 breq .+6 ; 0x1fc <PutUart1Data+0x46>
{
return(OK);
1f6: 81 e0 ldi r24, 0x01 ; 1
1f8: 90 e0 ldi r25, 0x00 ; 0
1fa: 08 95 ret
}
else
{
return(ERROR);
1fc: 80 e0 ldi r24, 0x00 ; 0
1fe: 90 e0 ldi r25, 0x00 ; 0
}
}
200: 08 95 ret
00000202 <StartUart1Send>:
/***************************************************************************
*Function Name :StartUart1Send
*Description :
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :ChenWeiGuo
*Create Tate :2007-4-27
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
void StartUart1Send(void)
{
while(!(UCSR1A & (1 << UDRE1))); //等待发送缓冲区空
202: 80 91 9b 00 lds r24, 0x009B
206: 85 ff sbrs r24, 5
208: fc cf rjmp .-8 ; 0x202 <StartUart1Send>
UDR1 = Tx1Buffer[Tx1Head];
20a: 20 91 04 01 lds r18, 0x0104
20e: 30 91 05 01 lds r19, 0x0105
212: f9 01 movw r30, r18
214: e8 5f subi r30, 0xF8 ; 248
216: fe 4f sbci r31, 0xFE ; 254
218: 80 81 ld r24, Z
21a: 80 93 9c 00 sts 0x009C, r24
IncTxPtr(Tx1Head); //调整为下一次的头指针
21e: c9 01 movw r24, r18
220: 01 96 adiw r24, 0x01 ; 1
222: 90 93 05 01 sts 0x0105, r25
226: 80 93 04 01 sts 0x0104, r24
22a: 84 36 cpi r24, 0x64 ; 100
22c: 91 05 cpc r25, r1
22e: 20 f0 brcs .+8 ; 0x238 <StartUart1Send+0x36>
230: 10 92 05 01 sts 0x0105, r1
234: 10 92 04 01 sts 0x0104, r1
238: 08 95 ret
0000023a <SendUart1String>:
return;
}
/***************************************************************************
*Function Name :SendUart1String
*Description :
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :ChenWeiGuo
*Create Tate :2006-9-24
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
uint8 SendUart1String(uint8 *pbyData, uint16 uiLen) // 发送一数据帧包;
{
23a: 0f 93 push r16
23c: 1f 93 push r17
23e: cf 93 push r28
240: df 93 push r29
242: 8c 01 movw r16, r24
244: eb 01 movw r28, r22
if(uiLen == 0) //数据长度错误
246: 61 15 cp r22, r1
248: 71 05 cpc r23, r1
24a: 21 f4 brne .+8 ; 0x254 <SendUart1String+0x1a>
{
return(ERROR);
24c: 18 c0 rjmp .+48 ; 0x27e <SendUart1String+0x44>
}
while(uiLen-- != 0)
{
if(PutUart1Data(*pbyData++) == ERROR)
{ //发送数据帧超过缓冲区大小
return(ERROR);
24e: 60 e0 ldi r22, 0x00 ; 0
250: 70 e0 ldi r23, 0x00 ; 0
252: 15 c0 rjmp .+42 ; 0x27e <SendUart1String+0x44>
254: 21 97 sbiw r28, 0x01 ; 1
256: 8f ef ldi r24, 0xFF ; 255
258: cf 3f cpi r28, 0xFF ; 255
25a: d8 07 cpc r29, r24
25c: 61 f0 breq .+24 ; 0x276 <SendUart1String+0x3c>
25e: f8 01 movw r30, r16
260: 81 91 ld r24, Z+
262: 8f 01 movw r16, r30
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -