⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lss

📁 基于ADF4001的锁相环程序
💻 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 + -