📄 ad7714.lss
字号:
ad7714.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000019e 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 0000019e 00000232 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000004 00800060 00800060 00000232 2**0
ALLOC
3 .noinit 00000000 00800064 00800064 00000232 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000232 2**0
CONTENTS
5 .stab 00000c6c 00000000 00000000 00000234 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000862 00000000 00000000 00000ea0 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: 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: a4 36 cpi r26, 0x64 ; 100
54: b1 07 cpc r27, r17
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop>
58: 4b c0 rjmp .+150 ; 0xf0 <main>
0000005a <__bad_interrupt>:
5a: d2 cf rjmp .-92 ; 0x0 <__vectors>
0000005c <init>:
void init()
{
uint baud=25; //baud 2400
PORTB=0x85; //(PORTB 10000101)
5c: 85 e8 ldi r24, 0x85 ; 133
5e: 88 bb out 0x18, r24 ; 24
DDRB=0x2d; //(DDRB 00101101)
60: 8d e2 ldi r24, 0x2D ; 45
62: 87 bb out 0x17, r24 ; 23
PORTC=0xff;
64: 8f ef ldi r24, 0xFF ; 255
66: 85 bb out 0x15, r24 ; 21
DDRC=0xff;
68: 84 bb out 0x14, r24 ; 20
PORTD=0xff;
6a: 82 bb out 0x12, r24 ; 18
DDRD=0xff;
6c: 81 bb out 0x11, r24 ; 17
//SPI 初使化为主机 fosc/128
SPCR=(1<<MSTR)|(1<<SPR1)|(1<<SPR0); //(1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);
6e: 83 e1 ldi r24, 0x13 ; 19
70: 8d b9 out 0x0d, r24 ; 13
UBRRH=(baud>>8);
72: 10 bc out 0x20, r1 ; 32
UBRRL=baud;
74: 89 e1 ldi r24, 0x19 ; 25
76: 90 e0 ldi r25, 0x00 ; 0
78: 89 b9 out 0x09, r24 ; 9
UCSRA=0x0;
7a: 1b b8 out 0x0b, r1 ; 11
UCSRB=(1<<RXEN)|(1<<TXEN); //允许接收和发送
7c: 88 e1 ldi r24, 0x18 ; 24
7e: 8a b9 out 0x0a, r24 ; 10
UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //8位数据,1位停止位
80: 86 e8 ldi r24, 0x86 ; 134
82: 80 bd out 0x20, r24 ; 32
84: 08 95 ret
00000086 <spiSend>:
}
void spiSend(uchar data)
{
spiStart();
86: 6e 9a sbi 0x0d, 6 ; 13
clrb(PORTB,CS);
88: c0 98 cbi 0x18, 0 ; 24
SPDR=data;
8a: 8f b9 out 0x0f, r24 ; 15
while(!(SPSR&(1<<SPIF)));
8c: 77 9b sbis 0x0e, 7 ; 14
8e: fe cf rjmp .-4 ; 0x8c <spiSend+0x6>
setb(PORTB,CS);
90: c0 9a sbi 0x18, 0 ; 24
spiStop();
92: 6e 98 cbi 0x0d, 6 ; 13
wink();
94: 85 b3 in r24, 0x15 ; 21
96: 90 e2 ldi r25, 0x20 ; 32
98: 89 27 eor r24, r25
9a: 85 bb out 0x15, r24 ; 21
__ticks = 1;
else if (__tmp > 65535)
__ticks = 0; /* i.e. 65536 */
else
__ticks = (uint16_t)__tmp;
9c: 80 e5 ldi r24, 0x50 ; 80
9e: 93 ec ldi r25, 0xC3 ; 195
a0: fc 01 movw r30, r24
a2: 31 97 sbiw r30, 0x01 ; 1
a4: f1 f7 brne .-4 ; 0xa2 <spiSend+0x1c>
a6: 01 97 sbiw r24, 0x01 ; 1
a8: f1 f7 brne .-4 ; 0xa6 <spiSend+0x20>
aa: 88 ea ldi r24, 0xA8 ; 168
ac: 91 e6 ldi r25, 0x61 ; 97
ae: 01 97 sbiw r24, 0x01 ; 1
b0: f1 f7 brne .-4 ; 0xae <spiSend+0x28>
b2: 08 95 ret
000000b4 <waitReady>:
_delay_ms(200);
_delay_ms(200);
_delay_ms(100);
}
void spiRead()
{
//while(PINB&(1<<DRDY)); //等待转换好
spiStart();
clrb(PORTB,CS);
//start
SPDR=0; //1
while(!(SPSR&(1<<SPIF)));
buff[0]=SPDR;
SPDR=0; //2
while(!(SPSR&(1<<SPIF)));
buff[1]=SPDR;
SPDR=0; //3
while(!(SPSR&(1<<SPIF)));
buff[2]=SPDR;
setb(PORTB,CS);
spiStop();
}
void waitReady()
{
uchar n=0xff;
clrb(PORTB,CS);
b4: c0 98 cbi 0x18, 0 ; 24
while(!tstb(n,DRDY))
{
spiSend(0x08); //下一次操作通信寄存器
//tst DRDY is ok
spiStart();
SPDR=0xaa; //无用的数据,保持最高位为1
while(!(SPSR&(1<<SPIF)));
n=SPDR;
spiStop();
}
setb(PORTB,CS);
b6: c0 9a sbi 0x18, 0 ; 24
b8: 08 95 ret
000000ba <spiRead>:
ba: 6e 9a sbi 0x0d, 6 ; 13
bc: c0 98 cbi 0x18, 0 ; 24
be: 1f b8 out 0x0f, r1 ; 15
c0: 77 9b sbis 0x0e, 7 ; 14
c2: fe cf rjmp .-4 ; 0xc0 <spiRead+0x6>
c4: 8f b1 in r24, 0x0f ; 15
c6: 80 93 60 00 sts 0x0060, r24
ca: 1f b8 out 0x0f, r1 ; 15
cc: 77 9b sbis 0x0e, 7 ; 14
ce: fe cf rjmp .-4 ; 0xcc <spiRead+0x12>
d0: 8f b1 in r24, 0x0f ; 15
d2: 80 93 61 00 sts 0x0061, r24
d6: 1f b8 out 0x0f, r1 ; 15
d8: 77 9b sbis 0x0e, 7 ; 14
da: fe cf rjmp .-4 ; 0xd8 <spiRead+0x1e>
dc: 8f b1 in r24, 0x0f ; 15
de: 80 93 62 00 sts 0x0062, r24
e2: c0 9a sbi 0x18, 0 ; 24
e4: 6e 98 cbi 0x0d, 6 ; 13
e6: 08 95 ret
000000e8 <usartPutchar>:
}
void usartPutchar(uchar data)
{
while(!tstb(UCSRA,UDRE)); //等待发送标致完成
e8: 5d 9b sbis 0x0b, 5 ; 11
ea: fe cf rjmp .-4 ; 0xe8 <usartPutchar>
UDR=data; //发送数据
ec: 8c b9 out 0x0c, r24 ; 12
ee: 08 95 ret
000000f0 <main>:
f0: cf e5 ldi r28, 0x5F ; 95
f2: d4 e0 ldi r29, 0x04 ; 4
f4: de bf out 0x3e, r29 ; 62
f6: cd bf out 0x3d, r28 ; 61
f8: b1 df rcall .-158 ; 0x5c <init>
__ticks = 1;
else if (__tmp > 65535)
__ticks = 0; /* i.e. 65536 */
else
__ticks = (uint16_t)__tmp;
fa: 80 e5 ldi r24, 0x50 ; 80
fc: 93 ec ldi r25, 0xC3 ; 195
fe: fc 01 movw r30, r24
100: 31 97 sbiw r30, 0x01 ; 1
102: f1 f7 brne .-4 ; 0x100 <main+0x10>
104: c0 9a sbi 0x18, 0 ; 24
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
106: 01 97 sbiw r24, 0x01 ; 1
108: f1 f7 brne .-4 ; 0x106 <main+0x16>
10a: 80 e2 ldi r24, 0x20 ; 32
10c: bc df rcall .-136 ; 0x86 <spiSend>
10e: 87 e4 ldi r24, 0x47 ; 71
110: ba df rcall .-140 ; 0x86 <spiSend>
112: 80 e3 ldi r24, 0x30 ; 48
114: b8 df rcall .-144 ; 0x86 <spiSend>
116: 80 ea ldi r24, 0xA0 ; 160
118: b6 df rcall .-148 ; 0x86 <spiSend>
11a: 80 e1 ldi r24, 0x10 ; 16
11c: b4 df rcall .-152 ; 0x86 <spiSend>
11e: 80 e2 ldi r24, 0x20 ; 32
120: b2 df rcall .-156 ; 0x86 <spiSend>
122: b7 99 sbic 0x16, 7 ; 22
124: fe cf rjmp .-4 ; 0x122 <main+0x32>
126: c6 df rcall .-116 ; 0xb4 <waitReady>
128: 88 e5 ldi r24, 0x58 ; 88
12a: ad df rcall .-166 ; 0x86 <spiSend>
12c: c6 df rcall .-116 ; 0xba <spiRead>
12e: 80 91 60 00 lds r24, 0x0060
132: da df rcall .-76 ; 0xe8 <usartPutchar>
134: 80 91 61 00 lds r24, 0x0061
138: d7 df rcall .-82 ; 0xe8 <usartPutchar>
13a: 80 91 62 00 lds r24, 0x0062
13e: d4 df rcall .-88 ; 0xe8 <usartPutchar>
140: 80 e0 ldi r24, 0x00 ; 0
142: d2 df rcall .-92 ; 0xe8 <usartPutchar>
144: f0 cf rjmp .-32 ; 0x126 <main+0x36>
00000146 <usartGetchar>:
}
uchar usartGetchar(void)
{
while(!tstb(UCSRA,RXC)); //等待接收标致好
146: 5f 9b sbis 0x0b, 7 ; 11
148: fe cf rjmp .-4 ; 0x146 <usartGetchar>
return UDR;
14a: 8c b1 in r24, 0x0c ; 12
}
14c: 99 27 eor r25, r25
14e: 08 95 ret
00000150 <usartReceive>:
void usartReceive(void)
{
150: cf 93 push r28
152: df 93 push r29
volatile uchar *p=buff;
154: c0 e6 ldi r28, 0x60 ; 96
156: d0 e0 ldi r29, 0x00 ; 0
158: 9f ef ldi r25, 0xFF ; 255
15a: fe 01 movw r30, r28
15c: 82 e0 ldi r24, 0x02 ; 2
uchar i=0;
for(i=0;i<3;i++) buff[i]=0xff;
15e: 91 93 st Z+, r25
160: 81 50 subi r24, 0x01 ; 1
162: 87 ff sbrs r24, 7
164: fc cf rjmp .-8 ; 0x15e <usartReceive+0xe>
buff[3]=0;
166: 10 92 63 00 sts 0x0063, r1
while(*p!=0)
{
*p=usartGetchar(); //执行usartGetchar()则取出几个字符
p++;
16a: 80 91 60 00 lds r24, 0x0060
16e: 88 23 and r24, r24
170: 29 f0 breq .+10 ; 0x17c <usartReceive+0x2c>
172: e9 df rcall .-46 ; 0x146 <usartGetchar>
174: 89 93 st Y+, r24
176: 88 81 ld r24, Y
178: 88 23 and r24, r24
17a: d9 f7 brne .-10 ; 0x172 <usartReceive+0x22>
17c: df 91 pop r29
17e: cf 91 pop r28
180: 08 95 ret
00000182 <usartSend>:
}
}
void usartSend(char *str)
{
182: cf 93 push r28
184: df 93 push r29
186: ec 01 movw r28, r24
uchar *p=str;
while(*p)
{
usartPutchar(*p);
p++;
188: 88 81 ld r24, Y
18a: 88 23 and r24, r24
18c: 29 f0 breq .+10 ; 0x198 <usartSend+0x16>
18e: 89 91 ld r24, Y+
190: ab df rcall .-170 ; 0xe8 <usartPutchar>
192: 88 81 ld r24, Y
194: 88 23 and r24, r24
196: d9 f7 brne .-10 ; 0x18e <usartSend+0xc>
198: df 91 pop r29
19a: cf 91 pop r28
19c: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -