📄 camel.lss
字号:
camel.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000006a6 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000001a 00800060 000006a6 0000073a 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000144 0080007a 0080007a 00000754 2**0
ALLOC
3 .stab 00000378 00000000 00000000 00000754 2**2
CONTENTS, READONLY, DEBUGGING
4 .stabstr 00000071 00000000 00000000 00000acc 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_aranges 00000020 00000000 00000000 00000b3d 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 00000321 00000000 00000000 00000b5d 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 00000552 00000000 00000000 00000e7e 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 00000182 00000000 00000000 000013d0 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 00000760 00000000 00000000 00001552 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_frame 00000130 00000000 00000000 00001cb4 2**2
CONTENTS, READONLY, DEBUGGING
11 .debug_str 0000033d 00000000 00000000 00001de4 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_loc 0000006e 00000000 00000000 00002121 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: 5d c1 rjmp .+698 ; 0x2cc <__vector_8>
12: 24 c0 rjmp .+72 ; 0x5c <__bad_interrupt>
14: 23 c0 rjmp .+70 ; 0x5c <__bad_interrupt>
16: 11 c1 rjmp .+546 ; 0x23a <__vector_11>
18: 21 c0 rjmp .+66 ; 0x5c <__bad_interrupt>
1a: cc c0 rjmp .+408 ; 0x1b4 <__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: e6 ea ldi r30, 0xA6 ; 166
3a: f6 e0 ldi r31, 0x06 ; 6
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: aa 37 cpi r26, 0x7A ; 122
44: b1 07 cpc r27, r17
46: d9 f7 brne .-10 ; 0x3e <.do_copy_data_loop>
00000048 <__do_clear_bss>:
48: 11 e0 ldi r17, 0x01 ; 1
4a: aa e7 ldi r26, 0x7A ; 122
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: ae 3b cpi r26, 0xBE ; 190
54: b1 07 cpc r27, r17
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop>
58: 9c d2 rcall .+1336 ; 0x592 <main>
5a: 24 c3 rjmp .+1608 ; 0x6a4 <_exit>
0000005c <__bad_interrupt>:
5c: d1 cf rjmp .-94 ; 0x0 <__vectors>
0000005e <SpeakerPlay>:
#define GSMTalkingNo 0
/////////////////////////////////////////////////////////
void SpeakerPlay(void)
{
5e: 80 91 7f 00 lds r24, 0x007F
62: 88 23 and r24, r24
64: 39 f5 brne .+78 ; 0xb4 <SpeakerPlay+0x56>
if(speakerPlayInitSet==0)
{
if(speakerPlayflag==speaker_first)
66: 80 91 87 00 lds r24, 0x0087
6a: 88 23 and r24, r24
6c: 49 f4 brne .+18 ; 0x80 <SpeakerPlay+0x22>
{
speakerResetPlay();
6e: c2 9a sbi 0x18, 2 ; 24
speakerPlayflag=speaker_Enable;
70: 81 e0 ldi r24, 0x01 ; 1
72: 80 93 87 00 sts 0x0087, r24
speakerPlayTemp=0;
76: 10 92 85 00 sts 0x0085, r1
7a: 10 92 84 00 sts 0x0084, r1
7e: 08 95 ret
}
else if(speakerPlayflag==speaker_Enable)
80: 20 91 87 00 lds r18, 0x0087
84: 21 30 cpi r18, 0x01 ; 1
86: b1 f4 brne .+44 ; 0xb4 <SpeakerPlay+0x56>
{
speakerPlayTemp++;
88: 80 91 84 00 lds r24, 0x0084
8c: 90 91 85 00 lds r25, 0x0085
90: 01 96 adiw r24, 0x01 ; 1
92: 90 93 85 00 sts 0x0085, r25
96: 80 93 84 00 sts 0x0084, r24
if(speakerPlayTemp<20)
9a: 80 91 84 00 lds r24, 0x0084
9e: 90 91 85 00 lds r25, 0x0085
a2: 44 97 sbiw r24, 0x14 ; 20
a4: 10 f4 brcc .+4 ; 0xaa <SpeakerPlay+0x4c>
{
speakerSetPlay();
a6: c2 98 cbi 0x18, 2 ; 24
a8: 08 95 ret
}
else
{
speakerResetPlay();
aa: c2 9a sbi 0x18, 2 ; 24
speakerPlayflag=speaker_first;
ac: 10 92 87 00 sts 0x0087, r1
speakerPlayInitSet=1;
b0: 20 93 7f 00 sts 0x007F, r18
b4: 08 95 ret
000000b6 <SpeakerRec>:
}
}
}
}
void SpeakerRec(void)
{
b6: 80 91 80 00 lds r24, 0x0080
ba: 88 23 and r24, r24
bc: 39 f5 brne .+78 ; 0x10c <SpeakerRec+0x56>
if(speakerRecInitSet==0)
{
if(speakerRecflag==speaker_first)
be: 80 91 88 00 lds r24, 0x0088
c2: 88 23 and r24, r24
c4: 49 f4 brne .+18 ; 0xd8 <SpeakerRec+0x22>
{
speakerResetREC();
c6: c1 9a sbi 0x18, 1 ; 24
speakerRecflag=speaker_Enable;
c8: 81 e0 ldi r24, 0x01 ; 1
ca: 80 93 88 00 sts 0x0088, r24
speakerRecTemp=0;
ce: 10 92 83 00 sts 0x0083, r1
d2: 10 92 82 00 sts 0x0082, r1
d6: 08 95 ret
}
else if(speakerRecflag==speaker_Enable)
d8: 20 91 88 00 lds r18, 0x0088
dc: 21 30 cpi r18, 0x01 ; 1
de: b1 f4 brne .+44 ; 0x10c <SpeakerRec+0x56>
{
speakerRecTemp++;
e0: 80 91 82 00 lds r24, 0x0082
e4: 90 91 83 00 lds r25, 0x0083
e8: 01 96 adiw r24, 0x01 ; 1
ea: 90 93 83 00 sts 0x0083, r25
ee: 80 93 82 00 sts 0x0082, r24
if(speakerRecTemp<20)
f2: 80 91 82 00 lds r24, 0x0082
f6: 90 91 83 00 lds r25, 0x0083
fa: 44 97 sbiw r24, 0x14 ; 20
fc: 10 f4 brcc .+4 ; 0x102 <SpeakerRec+0x4c>
{
speakerSetREC();
fe: c1 98 cbi 0x18, 1 ; 24
100: 08 95 ret
}
else
{
speakerResetREC();
102: c1 9a sbi 0x18, 1 ; 24
speakerRecflag=speaker_first;
104: 10 92 88 00 sts 0x0088, r1
speakerRecInitSet=1;
108: 20 93 80 00 sts 0x0080, r18
10c: 08 95 ret
0000010e <checkKey>:
}
}
}
}
void checkKey(void)
{
10e: 80 91 7a 00 lds r24, 0x007A
112: 88 23 and r24, r24
114: 09 f0 breq .+2 ; 0x118 <checkKey+0xa>
116: 49 c0 rjmp .+146 ; 0x1aa <checkKey+0x9c>
//在可以检测的状态下,假如键盘状态有电平输出
if((keyLevel==0)&&keyPress())
118: 84 9b sbis 0x10, 4 ; 16
11a: 47 c0 rjmp .+142 ; 0x1aa <checkKey+0x9c>
{
//修改电平状态,直到客户放开按钮
keyLevel=1;
11c: 91 e0 ldi r25, 0x01 ; 1
11e: 90 93 7a 00 sts 0x007A, r25
if(key1())
122: 83 b3 in r24, 0x13 ; 19
124: 8f 70 andi r24, 0x0F ; 15
126: 81 30 cpi r24, 0x01 ; 1
128: 29 f4 brne .+10 ; 0x134 <checkKey+0x26>
{
KeyFlag=1;KeyNum=1;
12a: 90 93 7b 00 sts 0x007B, r25
12e: 90 93 7c 00 sts 0x007C, r25
132: 08 95 ret
}
else if(key2())
134: 83 b3 in r24, 0x13 ; 19
136: 8f 70 andi r24, 0x0F ; 15
138: 82 30 cpi r24, 0x02 ; 2
13a: 01 f1 breq .+64 ; 0x17c <checkKey+0x6e>
{
KeyFlag=1;KeyNum=2;
}
else if(key3())
13c: 83 b3 in r24, 0x13 ; 19
13e: 8f 70 andi r24, 0x0F ; 15
140: 83 30 cpi r24, 0x03 ; 3
142: e1 f0 breq .+56 ; 0x17c <checkKey+0x6e>
{
KeyFlag=1;KeyNum=3;
}
else if(key4())
144: 83 b3 in r24, 0x13 ; 19
146: 8f 70 andi r24, 0x0F ; 15
148: 84 30 cpi r24, 0x04 ; 4
14a: c1 f0 breq .+48 ; 0x17c <checkKey+0x6e>
{
KeyFlag=1;KeyNum=4;
}
else if(key5())
14c: 83 b3 in r24, 0x13 ; 19
14e: 8f 70 andi r24, 0x0F ; 15
150: 85 30 cpi r24, 0x05 ; 5
152: a1 f0 breq .+40 ; 0x17c <checkKey+0x6e>
{
KeyFlag=1;KeyNum=5;
}
else if(key6())
154: 83 b3 in r24, 0x13 ; 19
156: 8f 70 andi r24, 0x0F ; 15
158: 86 30 cpi r24, 0x06 ; 6
15a: 81 f0 breq .+32 ; 0x17c <checkKey+0x6e>
{
KeyFlag=1;KeyNum=6;
}
else if(key7())
15c: 83 b3 in r24, 0x13 ; 19
15e: 8f 70 andi r24, 0x0F ; 15
160: 87 30 cpi r24, 0x07 ; 7
162: 61 f0 breq .+24 ; 0x17c <checkKey+0x6e>
{
KeyFlag=1;KeyNum=7;
}
else if(key8())
164: 83 b3 in r24, 0x13 ; 19
166: 8f 70 andi r24, 0x0F ; 15
168: 88 30 cpi r24, 0x08 ; 8
16a: 41 f0 breq .+16 ; 0x17c <checkKey+0x6e>
{
KeyFlag=1;KeyNum=8;
}
else if(key9())
16c: 83 b3 in r24, 0x13 ; 19
16e: 8f 70 andi r24, 0x0F ; 15
170: 89 30 cpi r24, 0x09 ; 9
172: 21 f0 breq .+8 ; 0x17c <checkKey+0x6e>
{
KeyFlag=1;KeyNum=9;
}
else if(key10())
174: 83 b3 in r24, 0x13 ; 19
176: 8f 70 andi r24, 0x0F ; 15
178: 8a 30 cpi r24, 0x0A ; 10
17a: 19 f4 brne .+6 ; 0x182 <checkKey+0x74>
{
KeyFlag=1;KeyNum=10;
17c: 90 93 7b 00 sts 0x007B, r25
180: 11 c0 rjmp .+34 ; 0x1a4 <checkKey+0x96>
}
else if(key11())
182: 83 b3 in r24, 0x13 ; 19
184: 8f 70 andi r24, 0x0F ; 15
186: 8b 30 cpi r24, 0x0B ; 11
188: 29 f4 brne .+10 ; 0x194 <checkKey+0x86>
{
KeyFlag=1;KeyNum=11;
18a: 81 e0 ldi r24, 0x01 ; 1
18c: 80 93 7b 00 sts 0x007B, r24
190: 8b e0 ldi r24, 0x0B ; 11
192: 08 c0 rjmp .+16 ; 0x1a4 <checkKey+0x96>
}
else if(key12())
194: 83 b3 in r24, 0x13 ; 19
196: 8f 70 andi r24, 0x0F ; 15
198: 8c 30 cpi r24, 0x0C ; 12
19a: 59 f4 brne .+22 ; 0x1b2 <checkKey+0xa4>
{
KeyFlag=1;KeyNum=12;
19c: 81 e0 ldi r24, 0x01 ; 1
19e: 80 93 7b 00 sts 0x007B, r24
1a2: 8c e0 ldi r24, 0x0C ; 12
1a4: 80 93 7c 00 sts 0x007C, r24
1a8: 08 95 ret
}
}
//没有状态输出
else if(keyPress()==0)
1aa: 84 99 sbic 0x10, 4 ; 16
1ac: 02 c0 rjmp .+4 ; 0x1b2 <checkKey+0xa4>
{
keyLevel=0;
1ae: 10 92 7a 00 sts 0x007A, r1
1b2: 08 95 ret
000001b4 <__vector_13>:
}
}
//数据发送程序
#define sendBufferSize 100
vuchar sendBuffer[sendBufferSize]; //发送临时寄存器
vuchar sendBufferReader=0; //发送数据读个数
vuchar sendBufferCounter=0; //发送数据个数
SIGNAL(SIG_UART_TRANS)
{
1b4: 1f 92 push r1
1b6: 0f 92 push r0
1b8: 0f b6 in r0, 0x3f ; 63
1ba: 0f 92 push r0
1bc: 11 24 eor r1, r1
1be: 8f 93 push r24
1c0: ef 93 push r30
1c2: ff 93 push r31
//UDR = 0x55;
if(--sendBufferCounter)
1c4: 80 91 8e 00 lds r24, 0x008E
1c8: 81 50 subi r24, 0x01 ; 1
1ca: 80 93 8e 00 sts 0x008E, r24
1ce: 80 91 8e 00 lds r24, 0x008E
1d2: 88 23 and r24, r24
1d4: 69 f0 breq .+26 ; 0x1f0 <__vector_13+0x3c>
{
UDR=sendBuffer[++sendBufferReader];
1d6: 80 91 8d 00 lds r24, 0x008D
1da: 8f 5f subi r24, 0xFF ; 255
1dc: 80 93 8d 00 sts 0x008D, r24
1e0: e0 91 8d 00 lds r30, 0x008D
1e4: ff 27 eor r31, r31
1e6: eb 50 subi r30, 0x0B ; 11
1e8: ff 4f sbci r31, 0xFF ; 255
1ea: 80 81 ld r24, Z
1ec: 8c b9 out 0x0c, r24 ; 12
1ee: 02 c0 rjmp .+4 ; 0x1f4 <__vector_13+0x40>
}
else
{
sendBufferReader=0;
1f0: 10 92 8d 00 sts 0x008D, r1
1f4: ff 91 pop r31
1f6: ef 91 pop r30
1f8: 8f 91 pop r24
1fa: 0f 90 pop r0
1fc: 0f be out 0x3f, r0 ; 63
1fe: 0f 90 pop r0
200: 1f 90 pop r1
202: 18 95 reti
00000204 <sendData>:
}
}
//发送程序,参数为要发送的字符指针以及要发送的字符数量
void sendData(uchar *sendPtr,uchar sendCounter)
{
204: ac 01 movw r20, r24
uchar sendTemp=0;
sendBufferCounter=sendCounter;
206: 60 93 8e 00 sts 0x008E, r22
sendBufferReader=0;
20a: 10 92 8d 00 sts 0x008D, r1
20e: 20 e0 ldi r18, 0x00 ; 0
210: 0a c0 rjmp .+20 ; 0x226 <sendData+0x22>
for(sendTemp=0;sendTemp<sendCounter;sendTemp++)
{
sendBuffer[sendTemp]=*(sendPtr+sendTemp);
212: e2 2f mov r30, r18
214: ff 27 eor r31, r31
216: da 01 movw r26, r20
218: ae 0f add r26, r30
21a: bf 1f adc r27, r31
21c: 8c 91 ld r24, X
21e: eb 50 subi r30, 0x0B ; 11
220: ff 4f sbci r31, 0xFF ; 255
222: 80 83 st Z, r24
224: 2f 5f subi r18, 0xFF ; 255
226: 26 17 cp r18, r22
228: a1 f7 brne .-24 ; 0x212 <sendData+0xe>
}
UDR = sendBuffer[sendBufferReader];
22a: e0 91 8d 00 lds r30, 0x008D
22e: ff 27 eor r31, r31
230: eb 50 subi r30, 0x0B ; 11
232: ff 4f sbci r31, 0xFF ; 255
234: 80 81 ld r24, Z
236: 8c b9 out 0x0c, r24 ; 12
238: 08 95 ret
0000023a <__vector_11>:
}
//数据接收程序
#define receiveBufferSize 100
vuchar receiveBuffer[receiveBufferSize];
vuchar receiveBufferWriter=0;
vuchar receiveBufferCounter=0;
SIGNAL(SIG_UART_RECV)
{
23a: 1f 92 push r1
23c: 0f 92 push r0
23e: 0f b6 in r0, 0x3f ; 63
240: 0f 92 push r0
242: 11 24 eor r1, r1
244: 8f 93 push r24
246: 9f 93 push r25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -