📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000260 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 00000260 000002f4 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000004 00800060 00800060 000002f4 2**0
ALLOC
3 .noinit 00000000 00800064 00800064 000002f4 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000002f4 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 000002f4 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 00000660 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000014 00000000 00000000 000006e4 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 0000006f 00000000 00000000 000006f8 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00000192 00000000 00000000 00000767 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 000000b3 00000000 00000000 000008f9 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 00000155 00000000 00000000 000009ac 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 000000f9 00000000 00000000 00000b01 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 <__ctors_end>
4: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
8: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
10: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
14: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
18: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
1c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
20: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
24: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
28: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
2c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
30: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
34: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
38: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
3c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
40: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
44: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
48: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
4c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
50: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
00000054 <__ctors_end>:
54: 11 24 eor r1, r1
56: 1f be out 0x3f, r1 ; 63
58: cf e5 ldi r28, 0x5F ; 95
5a: d4 e0 ldi r29, 0x04 ; 4
5c: de bf out 0x3e, r29 ; 62
5e: cd bf out 0x3d, r28 ; 61
00000060 <__do_copy_data>:
60: 10 e0 ldi r17, 0x00 ; 0
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: e0 e6 ldi r30, 0x60 ; 96
68: f2 e0 ldi r31, 0x02 ; 2
6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start>
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: a0 36 cpi r26, 0x60 ; 96
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: a0 e6 ldi r26, 0x60 ; 96
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start>
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: a4 36 cpi r26, 0x64 ; 100
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0c 94 f6 00 jmp 0x1ec <main>
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0 <__vectors>
0000008e <delayN>:
#define ADF4110_CE_L ADF4110_CONTROL&=~_BV(PB3)
volatile unsigned long test_data;///////////////////////test/////////////////////
void delayN(unsigned int N)
{ unsigned int i;
for(i=0;i<N;i++)
8e: 20 e0 ldi r18, 0x00 ; 0
90: 30 e0 ldi r19, 0x00 ; 0
92: 28 17 cp r18, r24
94: 39 07 cpc r19, r25
96: 20 f4 brcc .+8 ; 0xa0 <delayN+0x12>
nop();
98: 00 00 nop
9a: 2f 5f subi r18, 0xFF ; 255
9c: 3f 4f sbci r19, 0xFF ; 255
9e: f9 cf rjmp .-14 ; 0x92 <delayN+0x4>
a0: 08 95 ret
000000a2 <ADF4110_data_input>:
}
void ADF4110_data_input(unsigned long data)
{ uchar i=0;
a2: 1f 93 push r17
a4: cf 93 push r28
a6: df 93 push r29
a8: ab 01 movw r20, r22
aa: bc 01 movw r22, r24
uchar N=24;
ac: 18 e1 ldi r17, 0x18 ; 24
ae: c0 e0 ldi r28, 0x00 ; 0
b0: d0 e0 ldi r29, 0x00 ; 0
b2: e0 e8 ldi r30, 0x80 ; 128
b4: f0 e0 ldi r31, 0x00 ; 0
b6: 20 e0 ldi r18, 0x00 ; 0
b8: 30 e0 ldi r19, 0x00 ; 0
do
{ test_data=0x800000>>i;////////////////test///////////
ba: ce 01 movw r24, r28
bc: df 01 movw r26, r30
be: 02 2e mov r0, r18
c0: 04 c0 rjmp .+8 ; 0xca <ADF4110_data_input+0x28>
c2: b5 95 asr r27
c4: a7 95 ror r26
c6: 97 95 ror r25
c8: 87 95 ror r24
ca: 0a 94 dec r0
cc: d2 f7 brpl .-12 ; 0xc2 <ADF4110_data_input+0x20>
ce: 80 93 60 00 sts 0x0060, r24
d2: 90 93 61 00 sts 0x0061, r25
d6: a0 93 62 00 sts 0x0062, r26
da: b0 93 63 00 sts 0x0063, r27
test_data=test_data&data; /////test///////////
de: 80 91 60 00 lds r24, 0x0060
e2: 90 91 61 00 lds r25, 0x0061
e6: a0 91 62 00 lds r26, 0x0062
ea: b0 91 63 00 lds r27, 0x0063
ee: 84 23 and r24, r20
f0: 95 23 and r25, r21
f2: a6 23 and r26, r22
f4: b7 23 and r27, r23
f6: 80 93 60 00 sts 0x0060, r24
fa: 90 93 61 00 sts 0x0061, r25
fe: a0 93 62 00 sts 0x0062, r26
102: b0 93 63 00 sts 0x0063, r27
if(test_data!=0 )
106: 80 91 60 00 lds r24, 0x0060
10a: 90 91 61 00 lds r25, 0x0061
10e: a0 91 62 00 lds r26, 0x0062
112: b0 91 63 00 lds r27, 0x0063
116: 00 97 sbiw r24, 0x00 ; 0
118: a1 05 cpc r26, r1
11a: b1 05 cpc r27, r1
11c: 11 f0 breq .+4 ; 0x122 <ADF4110_data_input+0x80>
{ ADF4110_DATA_H;
11e: c1 9a sbi 0x18, 1 ; 24
120: 01 c0 rjmp .+2 ; 0x124 <ADF4110_data_input+0x82>
}
else
{ ADF4110_DATA_L;
122: c1 98 cbi 0x18, 1 ; 24
}
ADF4110_CLK_H;
124: c2 9a sbi 0x18, 2 ; 24
126: 2f 5f subi r18, 0xFF ; 255
128: 3f 4f sbci r19, 0xFF ; 255
i++;
ADF4110_CLK_L;
12a: c2 98 cbi 0x18, 2 ; 24
}while(--N);
12c: 11 50 subi r17, 0x01 ; 1
12e: 29 f6 brne .-118 ; 0xba <ADF4110_data_input+0x18>
ADF4110_LE_H;
130: c0 9a sbi 0x18, 0 ; 24
ADF4110_LE_L;
132: c0 98 cbi 0x18, 0 ; 24
134: df 91 pop r29
136: cf 91 pop r28
138: 1f 91 pop r17
13a: 08 95 ret
0000013c <ADF4110_INT>:
}
void ADF4110_INT()
{ ADF4110_DDR|=_BV(0)|_BV(1)|_BV(2)|_BV(3); //把ADF4110_DDR设置成输出,但不影响剩下的IO口
13c: 87 b3 in r24, 0x17 ; 23
13e: 8f 60 ori r24, 0x0F ; 15
140: 87 bb out 0x17, r24 ; 23
//ADF4110_CONTROL&=(~_BV(0))&(~_BV(1))&(~_BV(2));//把ADF4110的用到的四个断口输出置为0
ADF4110_LE_L;
142: c0 98 cbi 0x18, 0 ; 24
ADF4110_CLK_L;
144: c2 98 cbi 0x18, 2 ; 24
ADF4110_DATA_L;
146: c1 98 cbi 0x18, 1 ; 24
ADF4110_CE_H;
148: c3 9a sbi 0x18, 3 ; 24
14a: 08 95 ret
0000014c <adf4110_control>:
}
/********************************************************************************************
函数adf4110_control 的入口参数: lock_frequency 为需要锁定的频率(adf4110要大于80M)
step_frequency 为频率的步进(也就是参考分频器的输出频率) FREFin_frequency 为晶振频率
以上参数的单位都是HZ
********************************************************************************************/
void adf4110_control(ulong lock_frequency,ulong step_frequency,ulong FREFin_frequency)
{ ulong adf4110_data;
14c: 6f 92 push r6
14e: 7f 92 push r7
150: 8f 92 push r8
152: 9f 92 push r9
154: af 92 push r10
156: bf 92 push r11
158: cf 92 push r12
15a: df 92 push r13
15c: ef 92 push r14
15e: ff 92 push r15
160: 0f 93 push r16
162: 1f 93 push r17
164: 3b 01 movw r6, r22
166: 4c 01 movw r8, r24
168: 59 01 movw r10, r18
16a: 6a 01 movw r12, r20
ulong N;
adf4110_data=0x1ff893;//极性:正
//adf4110_data=0x1ff813;//极性:负
ADF4110_data_input(adf4110_data);//set initialization latch,P=8 fastlock mode disabled, Icp=5ma
16c: 63 e9 ldi r22, 0x93 ; 147
16e: 78 ef ldi r23, 0xF8 ; 248
170: 8f e1 ldi r24, 0x1F ; 31
172: 90 e0 ldi r25, 0x00 ; 0
174: 0e 94 51 00 call 0xa2 <ADF4110_data_input>
delayN(40);//延时60us
178: 88 e2 ldi r24, 0x28 ; 40
17a: 90 e0 ldi r25, 0x00 ; 0
17c: 0e 94 47 00 call 0x8e <delayN>
adf4110_data=0x020000|( (FREFin_frequency/step_frequency)<<2 );
180: c8 01 movw r24, r16
182: b7 01 movw r22, r14
184: a6 01 movw r20, r12
186: 95 01 movw r18, r10
188: 0e 94 0e 01 call 0x21c <__udivmodsi4>
18c: da 01 movw r26, r20
18e: c9 01 movw r24, r18
190: 32 e0 ldi r19, 0x02 ; 2
192: 88 0f add r24, r24
194: 99 1f adc r25, r25
196: aa 1f adc r26, r26
198: bb 1f adc r27, r27
19a: 3a 95 dec r19
19c: d1 f7 brne .-12 ; 0x192 <adf4110_control+0x46>
19e: a2 60 ori r26, 0x02 ; 2
ADF4110_data_input(adf4110_data);//set R latch
1a0: bc 01 movw r22, r24
1a2: cd 01 movw r24, r26
1a4: 0e 94 51 00 call 0xa2 <ADF4110_data_input>
delayN(40);//延时60us
1a8: 88 e2 ldi r24, 0x28 ; 40
1aa: 90 e0 ldi r25, 0x00 ; 0
1ac: 0e 94 47 00 call 0x8e <delayN>
N=lock_frequency/step_frequency;
1b0: c4 01 movw r24, r8
1b2: b3 01 movw r22, r6
1b4: a6 01 movw r20, r12
1b6: 95 01 movw r18, r10
1b8: 0e 94 0e 01 call 0x21c <__udivmodsi4>
1bc: da 01 movw r26, r20
1be: c9 01 movw r24, r18
adf4110_data=0x000001|(N<<8);
1c0: ba 2f mov r27, r26
1c2: a9 2f mov r26, r25
1c4: 98 2f mov r25, r24
1c6: 88 27 eor r24, r24
1c8: 81 60 ori r24, 0x01 ; 1
ADF4110_data_input(adf4110_data);//set AB latch
1ca: bc 01 movw r22, r24
1cc: cd 01 movw r24, r26
1ce: 0e 94 51 00 call 0xa2 <ADF4110_data_input>
1d2: 1f 91 pop r17
1d4: 0f 91 pop r16
1d6: ff 90 pop r15
1d8: ef 90 pop r14
1da: df 90 pop r13
1dc: cf 90 pop r12
1de: bf 90 pop r11
1e0: af 90 pop r10
1e2: 9f 90 pop r9
1e4: 8f 90 pop r8
1e6: 7f 90 pop r7
1e8: 6f 90 pop r6
1ea: 08 95 ret
000001ec <main>:
}
void main()
{ ADF4110_INT();
1ec: cf e5 ldi r28, 0x5F ; 95
1ee: d4 e0 ldi r29, 0x04 ; 4
1f0: de bf out 0x3e, r29 ; 62
1f2: cd bf out 0x3d, r28 ; 61
1f4: 0e 94 9e 00 call 0x13c <ADF4110_INT>
adf4110_control(34000000,100000,5000000);
1f8: 40 e4 ldi r20, 0x40 ; 64
1fa: e4 2e mov r14, r20
1fc: 4b e4 ldi r20, 0x4B ; 75
1fe: f4 2e mov r15, r20
200: 4c e4 ldi r20, 0x4C ; 76
202: 04 2f mov r16, r20
204: 11 2d mov r17, r1
206: 20 ea ldi r18, 0xA0 ; 160
208: 36 e8 ldi r19, 0x86 ; 134
20a: 41 e0 ldi r20, 0x01 ; 1
20c: 50 e0 ldi r21, 0x00 ; 0
20e: 60 e8 ldi r22, 0x80 ; 128
210: 7c ec ldi r23, 0xCC ; 204
212: 86 e0 ldi r24, 0x06 ; 6
214: 92 e0 ldi r25, 0x02 ; 2
216: 0e 94 a6 00 call 0x14c <adf4110_control>
while(1);
21a: ff cf rjmp .-2 ; 0x21a <main+0x2e>
0000021c <__udivmodsi4>:
21c: a1 e2 ldi r26, 0x21 ; 33
21e: 1a 2e mov r1, r26
220: aa 1b sub r26, r26
222: bb 1b sub r27, r27
224: fd 01 movw r30, r26
226: 0d c0 rjmp .+26 ; 0x242 <__udivmodsi4_ep>
00000228 <__udivmodsi4_loop>:
228: aa 1f adc r26, r26
22a: bb 1f adc r27, r27
22c: ee 1f adc r30, r30
22e: ff 1f adc r31, r31
230: a2 17 cp r26, r18
232: b3 07 cpc r27, r19
234: e4 07 cpc r30, r20
236: f5 07 cpc r31, r21
238: 20 f0 brcs .+8 ; 0x242 <__udivmodsi4_ep>
23a: a2 1b sub r26, r18
23c: b3 0b sbc r27, r19
23e: e4 0b sbc r30, r20
240: f5 0b sbc r31, r21
00000242 <__udivmodsi4_ep>:
242: 66 1f adc r22, r22
244: 77 1f adc r23, r23
246: 88 1f adc r24, r24
248: 99 1f adc r25, r25
24a: 1a 94 dec r1
24c: 69 f7 brne .-38 ; 0x228 <__udivmodsi4_loop>
24e: 60 95 com r22
250: 70 95 com r23
252: 80 95 com r24
254: 90 95 com r25
256: 9b 01 movw r18, r22
258: ac 01 movw r20, r24
25a: bd 01 movw r22, r26
25c: cf 01 movw r24, r30
25e: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -