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

📄 ad.lss

📁 AD转换程序和AVR单片机内部存储器
💻 LSS
📖 第 1 页 / 共 2 页
字号:

AD.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000000  00800100  000003fc  00000490  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         000003fc  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          00000002  00800100  00800100  00000490  2**0
                  ALLOC
  3 .noinit       00000000  00800102  00800102  00000490  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000490  2**0
                  CONTENTS
  5 .stab         000007b0  00000000  00000000  00000490  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000a97  00000000  00000000  00000c40  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 46 00 	jmp	0x8c
   4:	0c 94 63 00 	jmp	0xc6
   8:	0c 94 63 00 	jmp	0xc6
   c:	0c 94 63 00 	jmp	0xc6
  10:	0c 94 63 00 	jmp	0xc6
  14:	0c 94 63 00 	jmp	0xc6
  18:	0c 94 63 00 	jmp	0xc6
  1c:	0c 94 63 00 	jmp	0xc6
  20:	0c 94 63 00 	jmp	0xc6
  24:	0c 94 63 00 	jmp	0xc6
  28:	0c 94 63 00 	jmp	0xc6
  2c:	0c 94 63 00 	jmp	0xc6
  30:	0c 94 63 00 	jmp	0xc6
  34:	0c 94 63 00 	jmp	0xc6
  38:	0c 94 63 00 	jmp	0xc6
  3c:	0c 94 63 00 	jmp	0xc6
  40:	0c 94 63 00 	jmp	0xc6
  44:	0c 94 63 00 	jmp	0xc6
  48:	0c 94 63 00 	jmp	0xc6
  4c:	0c 94 63 00 	jmp	0xc6
  50:	0c 94 63 00 	jmp	0xc6
  54:	0c 94 63 00 	jmp	0xc6
  58:	0c 94 63 00 	jmp	0xc6
  5c:	0c 94 63 00 	jmp	0xc6
  60:	0c 94 63 00 	jmp	0xc6
  64:	0c 94 63 00 	jmp	0xc6
  68:	0c 94 63 00 	jmp	0xc6
  6c:	0c 94 63 00 	jmp	0xc6
  70:	0c 94 63 00 	jmp	0xc6
  74:	0c 94 63 00 	jmp	0xc6
  78:	0c 94 63 00 	jmp	0xc6
  7c:	0c 94 63 00 	jmp	0xc6
  80:	0c 94 63 00 	jmp	0xc6
  84:	0c 94 63 00 	jmp	0xc6
  88:	0c 94 63 00 	jmp	0xc6

0000008c <__ctors_end>:
  8c:	11 24       	eor	r1, r1
  8e:	1f be       	out	0x3f, r1	; 63
  90:	cf ef       	ldi	r28, 0xFF	; 255
  92:	d0 e1       	ldi	r29, 0x10	; 16
  94:	de bf       	out	0x3e, r29	; 62
  96:	cd bf       	out	0x3d, r28	; 61

00000098 <__do_copy_data>:
  98:	11 e0       	ldi	r17, 0x01	; 1
  9a:	a0 e0       	ldi	r26, 0x00	; 0
  9c:	b1 e0       	ldi	r27, 0x01	; 1
  9e:	ec ef       	ldi	r30, 0xFC	; 252
  a0:	f3 e0       	ldi	r31, 0x03	; 3
  a2:	00 e0       	ldi	r16, 0x00	; 0
  a4:	0b bf       	out	0x3b, r16	; 59
  a6:	02 c0       	rjmp	.+4      	; 0xac

000000a8 <.__do_copy_data_loop>:
  a8:	07 90       	elpm	r0, Z+
  aa:	0d 92       	st	X+, r0

000000ac <.__do_copy_data_start>:
  ac:	a0 30       	cpi	r26, 0x00	; 0
  ae:	b1 07       	cpc	r27, r17
  b0:	d9 f7       	brne	.-10     	; 0xa8

000000b2 <__do_clear_bss>:
  b2:	11 e0       	ldi	r17, 0x01	; 1
  b4:	a0 e0       	ldi	r26, 0x00	; 0
  b6:	b1 e0       	ldi	r27, 0x01	; 1
  b8:	01 c0       	rjmp	.+2      	; 0xbc

000000ba <.do_clear_bss_loop>:
  ba:	1d 92       	st	X+, r1

000000bc <.do_clear_bss_start>:
  bc:	a2 30       	cpi	r26, 0x02	; 2
  be:	b1 07       	cpc	r27, r17
  c0:	e1 f7       	brne	.-8      	; 0xba
  c2:	0c 94 3b 01 	jmp	0x276

000000c6 <__bad_interrupt>:
  c6:	0c 94 00 00 	jmp	0x0

000000ca <delay_us>:

//******************************延时子程序*****************************************
void delay_us(uint16_t u)  //延时2us左右,delay(240)=100us;  
{  
  while(u)  
  ca:	00 97       	sbiw	r24, 0x00	; 0
  cc:	11 f0       	breq	.+4      	; 0xd2
    {  
       u--;  
  ce:	01 97       	sbiw	r24, 0x01	; 1
  d0:	f1 f7       	brne	.-4      	; 0xce
    }  
}  
  d2:	08 95       	ret

000000d4 <delay_ms>:

// 延时nms
void delay_ms(uint16_t m)   
{
  d4:	0f 93       	push	r16
  d6:	1f 93       	push	r17
  d8:	cf 93       	push	r28
  da:	df 93       	push	r29
  dc:	8c 01       	movw	r16, r24
	uint16_t i;
	for(i=0;i<m;i++)
  de:	c0 e0       	ldi	r28, 0x00	; 0
  e0:	d0 e0       	ldi	r29, 0x00	; 0
  e2:	c8 17       	cp	r28, r24
  e4:	d9 07       	cpc	r29, r25
  e6:	40 f4       	brcc	.+16     	; 0xf8
	{ 
       delay_us(2400);  //延时1ms
  e8:	80 e6       	ldi	r24, 0x60	; 96
  ea:	99 e0       	ldi	r25, 0x09	; 9
  ec:	0e 94 65 00 	call	0xca
  f0:	21 96       	adiw	r28, 0x01	; 1
  f2:	c0 17       	cp	r28, r16
  f4:	d1 07       	cpc	r29, r17
  f6:	c0 f3       	brcs	.-16     	; 0xe8
	}
}
  f8:	df 91       	pop	r29
  fa:	cf 91       	pop	r28
  fc:	1f 91       	pop	r17
  fe:	0f 91       	pop	r16
 100:	08 95       	ret

00000102 <delay_s>:

//延时ns
void delay_s(uint16_t n)   
{
 102:	0f 93       	push	r16
 104:	1f 93       	push	r17
 106:	cf 93       	push	r28
 108:	df 93       	push	r29
 10a:	8c 01       	movw	r16, r24
	uint16_t j;
	for(j=0;j<n;j++)
 10c:	c0 e0       	ldi	r28, 0x00	; 0
 10e:	d0 e0       	ldi	r29, 0x00	; 0
 110:	c8 17       	cp	r28, r24
 112:	d9 07       	cpc	r29, r25
 114:	40 f4       	brcc	.+16     	; 0x126
	{
		delay_ms(1000);  //延时1s
 116:	88 ee       	ldi	r24, 0xE8	; 232
 118:	93 e0       	ldi	r25, 0x03	; 3
 11a:	0e 94 6a 00 	call	0xd4
 11e:	21 96       	adiw	r28, 0x01	; 1
 120:	c0 17       	cp	r28, r16
 122:	d1 07       	cpc	r29, r17
 124:	c0 f3       	brcs	.-16     	; 0x116
	}
	
}
 126:	df 91       	pop	r29
 128:	cf 91       	pop	r28
 12a:	1f 91       	pop	r17
 12c:	0f 91       	pop	r16
 12e:	08 95       	ret

00000130 <AD0_SETTING_AND_START>:

//================================AD转换设置,并启动转换=========================
void AD0_SETTING_AND_START()
{
	//Avcc作为基准电压源,AREF引脚外加滤波电容,通道0
    ADMUX = 0x00;
 130:	17 b8       	out	0x07, r1	; 7
	//AD时钟的分频因子为128(AD转换频率为115.2k),启动AD转换
	ADCSRA=0x87;
 132:	87 e8       	ldi	r24, 0x87	; 135
 134:	86 b9       	out	0x06, r24	; 6
}
 136:	08 95       	ret

00000138 <AD0_RESULT_FILTER>:

//=================================AD转换滤波====================================
// AD转换 采样10次 去首尾求平均滤波
void AD0_RESULT_FILTER(void)
{
 138:	ef 92       	push	r14
 13a:	ff 92       	push	r15
 13c:	0f 93       	push	r16
 13e:	1f 93       	push	r17
 140:	cf 93       	push	r28
 142:	df 93       	push	r29
 144:	cd b7       	in	r28, 0x3d	; 61
 146:	de b7       	in	r29, 0x3e	; 62
 148:	64 97       	sbiw	r28, 0x14	; 20
 14a:	0f b6       	in	r0, 0x3f	; 63
 14c:	f8 94       	cli
 14e:	de bf       	out	0x3e, r29	; 62
 150:	0f be       	out	0x3f, r0	; 63
 152:	cd bf       	out	0x3d, r28	; 61
	uint8_t i,index1,index2,low;
	uint16_t result_array[10],sum,temp=0x00;
	float ad0_average;
	//Avcc作为基准电压源,AREF引脚外加滤波电容,通道0
	ADMUX=0x00;
 154:	17 b8       	out	0x07, r1	; 7
	for(i=0;i<10;i++)
 156:	00 e0       	ldi	r16, 0x00	; 0
	{
		//AD时钟的分频因子128
		ADCSRA=0x87;
 158:	87 e8       	ldi	r24, 0x87	; 135
 15a:	86 b9       	out	0x06, r24	; 6
		ADCSRA|=1<<ADSC;
 15c:	36 9a       	sbi	0x06, 6	; 6
		loop_until_bit_is_set(ADCSRA,ADIF);                                  //等待AD转换结束
 15e:	34 9b       	sbis	0x06, 4	; 6
 160:	fe cf       	rjmp	.-4      	; 0x15e
		ADCSRA=ADCSRA|(1<<ADIF);
 162:	34 9a       	sbi	0x06, 4	; 6
		low=ADCL;
 164:	24 b1       	in	r18, 0x04	; 4
		temp=ADCH;
 166:	85 b1       	in	r24, 0x05	; 5
 168:	99 27       	eor	r25, r25
		temp=temp<<8;
 16a:	98 2f       	mov	r25, r24
 16c:	88 27       	eor	r24, r24
		temp=temp+low;
 16e:	82 0f       	add	r24, r18
 170:	91 1d       	adc	r25, r1
		result_array[i]=temp;//AD转换结果
 172:	e0 2f       	mov	r30, r16
 174:	ff 27       	eor	r31, r31
 176:	ee 0f       	add	r30, r30
 178:	ff 1f       	adc	r31, r31
 17a:	7e 01       	movw	r14, r28
 17c:	08 94       	sec
 17e:	e1 1c       	adc	r14, r1
 180:	f1 1c       	adc	r15, r1
 182:	ee 0d       	add	r30, r14
 184:	ff 1d       	adc	r31, r15
 186:	80 83       	st	Z, r24
 188:	91 83       	std	Z+1, r25	; 0x01
		ADCSRA=ADCSRA &(~(1<<ADEN));
 18a:	37 98       	cbi	0x06, 7	; 6
		delay_us(100);
 18c:	84 e6       	ldi	r24, 0x64	; 100
 18e:	90 e0       	ldi	r25, 0x00	; 0
 190:	0e 94 65 00 	call	0xca
 194:	0f 5f       	subi	r16, 0xFF	; 255
 196:	0a 30       	cpi	r16, 0x0A	; 10
 198:	f8 f2       	brcs	.-66     	; 0x158
 19a:	40 e0       	ldi	r20, 0x00	; 0
	}
	index1=0;//最大数对应序号
	index2=0;//最小数对应序号
 19c:	54 2f       	mov	r21, r20
	for(i=0;i<10;i++)
 19e:	04 2f       	mov	r16, r20
 1a0:	d7 01       	movw	r26, r14
	{
		if(result_array[i]>result_array[index1])
 1a2:	e4 2f       	mov	r30, r20
 1a4:	ff 27       	eor	r31, r31
 1a6:	ee 0f       	add	r30, r30
 1a8:	ff 1f       	adc	r31, r31
 1aa:	ee 0d       	add	r30, r14
 1ac:	ff 1d       	adc	r31, r15
 1ae:	2d 91       	ld	r18, X+
 1b0:	3d 91       	ld	r19, X+
 1b2:	80 81       	ld	r24, Z
 1b4:	91 81       	ldd	r25, Z+1	; 0x01
 1b6:	82 17       	cp	r24, r18
 1b8:	93 07       	cpc	r25, r19
 1ba:	08 f4       	brcc	.+2      	; 0x1be
		{
			index1=i;
 1bc:	40 2f       	mov	r20, r16
		}
		
		if(result_array[i]<result_array[index2])
 1be:	e5 2f       	mov	r30, r21
 1c0:	ff 27       	eor	r31, r31
 1c2:	ee 0f       	add	r30, r30
 1c4:	ff 1f       	adc	r31, r31
 1c6:	ee 0d       	add	r30, r14
 1c8:	ff 1d       	adc	r31, r15
 1ca:	80 81       	ld	r24, Z
 1cc:	91 81       	ldd	r25, Z+1	; 0x01
 1ce:	28 17       	cp	r18, r24
 1d0:	39 07       	cpc	r19, r25
 1d2:	08 f4       	brcc	.+2      	; 0x1d6
		{
			index2=i;
 1d4:	50 2f       	mov	r21, r16
 1d6:	0f 5f       	subi	r16, 0xFF	; 255
 1d8:	0a 30       	cpi	r16, 0x0A	; 10
 1da:	18 f3       	brcs	.-58     	; 0x1a2
		}
	}
	sum=0;
 1dc:	20 e0       	ldi	r18, 0x00	; 0
 1de:	30 e0       	ldi	r19, 0x00	; 0
	for(i=0;i<10;i++)
 1e0:	00 e0       	ldi	r16, 0x00	; 0
 1e2:	f7 01       	movw	r30, r14
	{
		if((i==index1)||(i==index2))
 1e4:	04 17       	cp	r16, r20
 1e6:	31 f0       	breq	.+12     	; 0x1f4
 1e8:	05 17       	cp	r16, r21
 1ea:	21 f0       	breq	.+8      	; 0x1f4
			continue;
		sum=sum+result_array[i];
 1ec:	80 81       	ld	r24, Z

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -