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

📄 adc.lss

📁 AVR Devolpment Board
💻 LSS
📖 第 1 页 / 共 5 页
字号:

adc.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00001428  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000040  00800060  00001428  000014bc  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000006  008000a0  008000a0  000014fc  2**0
                  ALLOC
  3 .noinit       00000000  008000a6  008000a6  000014fc  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000014fc  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  000014fc  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  00001868  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000028  00000000  00000000  000018ec  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 00000078  00000000  00000000  00001914  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00000379  00000000  00000000  0000198c  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 00000243  00000000  00000000  00001d05  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   0000030c  00000000  00000000  00001f48  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    0000015d  00000000  00000000  00002254  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:	e8 e2       	ldi	r30, 0x28	; 40
      68:	f4 e1       	ldi	r31, 0x14	; 20
      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 3a       	cpi	r26, 0xA0	; 160
      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 ea       	ldi	r26, 0xA0	; 160
      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:	a6 3a       	cpi	r26, 0xA6	; 166
      82:	b1 07       	cpc	r27, r17
      84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
      86:	0c 94 a8 00 	jmp	0x150 <main>

0000008a <__bad_interrupt>:
      8a:	0c 94 00 00 	jmp	0x0 <__vectors>

0000008e <delay_ms>:
#define refer ((5000.0/1024.0)*REF)


void delay_ms(unsigned int ms)
{
      8e:	cf 93       	push	r28
      90:	df 93       	push	r29
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
      92:	9c 01       	movw	r18, r24
      94:	21 50       	subi	r18, 0x01	; 1
      96:	30 40       	sbci	r19, 0x00	; 0
      98:	8f ef       	ldi	r24, 0xFF	; 255
      9a:	2f 3f       	cpi	r18, 0xFF	; 255
      9c:	38 07       	cpc	r19, r24
      9e:	69 f0       	breq	.+26     	; 0xba <delay_ms+0x2c>
      a0:	a0 ed       	ldi	r26, 0xD0	; 208
      a2:	b7 e0       	ldi	r27, 0x07	; 7
      a4:	c0 e0       	ldi	r28, 0x00	; 0
      a6:	d0 e0       	ldi	r29, 0x00	; 0
      a8:	cd 01       	movw	r24, r26
      aa:	01 97       	sbiw	r24, 0x01	; 1
      ac:	f1 f7       	brne	.-4      	; 0xaa <delay_ms+0x1c>
      ae:	21 50       	subi	r18, 0x01	; 1
      b0:	30 40       	sbci	r19, 0x00	; 0
      b2:	8f ef       	ldi	r24, 0xFF	; 255
      b4:	2f 3f       	cpi	r18, 0xFF	; 255
      b6:	38 07       	cpc	r19, r24
      b8:	b9 f7       	brne	.-18     	; 0xa8 <delay_ms+0x1a>
      ba:	df 91       	pop	r29
      bc:	cf 91       	pop	r28
      be:	08 95       	ret

000000c0 <AD_Convert>:
	while(ms--)
		_delay_ms(1);
}


unsigned int AD_Convert(unsigned char channel)
{  
      c0:	cf 93       	push	r28
      c2:	df 93       	push	r29
      c4:	28 2f       	mov	r18, r24
	unsigned char i=10;
	unsigned int  AD_Value=0;
      c6:	c0 e0       	ldi	r28, 0x00	; 0
      c8:	d0 e0       	ldi	r29, 0x00	; 0
	DDRA &=~(1<<channel); 
      ca:	81 e0       	ldi	r24, 0x01	; 1
      cc:	90 e0       	ldi	r25, 0x00	; 0
      ce:	02 2e       	mov	r0, r18
      d0:	02 c0       	rjmp	.+4      	; 0xd6 <AD_Convert+0x16>
      d2:	88 0f       	add	r24, r24
      d4:	99 1f       	adc	r25, r25
      d6:	0a 94       	dec	r0
      d8:	e2 f7       	brpl	.-8      	; 0xd2 <AD_Convert+0x12>
      da:	98 2f       	mov	r25, r24
      dc:	90 95       	com	r25
      de:	8a b3       	in	r24, 0x1a	; 26
      e0:	89 23       	and	r24, r25
      e2:	8a bb       	out	0x1a, r24	; 26
	ADMUX = (0<<REFS1)|(1<<REFS0)|(0<<ADLAR)|(channel); /* REFS1,REFS0=[0,1] extern avcc ref. ADLAR=0 Right-alignment */ 
      e4:	20 64       	ori	r18, 0x40	; 64
      e6:	27 b9       	out	0x07, r18	; 7
	ADCSRA= (1<<ADEN )|(1<<ADPS2)|(1<<ADPS1);           /* enable adc. ad_clk=F_CPU/64(125kHz). */
      e8:	86 e8       	ldi	r24, 0x86	; 134
      ea:	86 b9       	out	0x06, r24	; 6
	while(i--)
	{
		ADCSRA|=(1<<ADSC);				                /* start ad convert. */
		while(!(ADCSRA&(1<<ADIF)));                     /* wait while convert end. */
		AD_Value+=ADC;                                  /* added the result. */
      ec:	29 e0       	ldi	r18, 0x09	; 9
      ee:	36 9a       	sbi	0x06, 6	; 6
      f0:	34 9b       	sbis	0x06, 4	; 6
      f2:	fe cf       	rjmp	.-4      	; 0xf0 <AD_Convert+0x30>
      f4:	84 b1       	in	r24, 0x04	; 4
      f6:	95 b1       	in	r25, 0x05	; 5
      f8:	c8 0f       	add	r28, r24
      fa:	d9 1f       	adc	r29, r25
      fc:	21 50       	subi	r18, 0x01	; 1
      fe:	b8 f7       	brcc	.-18     	; 0xee <AD_Convert+0x2e>
	}
	AD_Value/=10;                                       /* filter by average the sum. */
     100:	ce 01       	movw	r24, r28
     102:	6a e0       	ldi	r22, 0x0A	; 10
     104:	70 e0       	ldi	r23, 0x00	; 0
     106:	0e 94 a7 09 	call	0x134e <__udivmodhi4>
     10a:	eb 01       	movw	r28, r22
	AD_Value=AD_Value*refer;
     10c:	cb 01       	movw	r24, r22
     10e:	aa 27       	eor	r26, r26
     110:	97 fd       	sbrc	r25, 7
     112:	a0 95       	com	r26
     114:	ba 2f       	mov	r27, r26
     116:	bc 01       	movw	r22, r24
     118:	cd 01       	movw	r24, r26
     11a:	0e 94 fe 03 	call	0x7fc <__floatsisf>
     11e:	d7 ff       	sbrs	r29, 7
     120:	06 c0       	rjmp	.+12     	; 0x12e <AD_Convert+0x6e>
     122:	20 e0       	ldi	r18, 0x00	; 0
     124:	30 e0       	ldi	r19, 0x00	; 0
     126:	40 e8       	ldi	r20, 0x80	; 128
     128:	57 e4       	ldi	r21, 0x47	; 71
     12a:	0e 94 47 02 	call	0x48e <__addsf3>
     12e:	20 e0       	ldi	r18, 0x00	; 0
     130:	30 e4       	ldi	r19, 0x40	; 64
     132:	4c e9       	ldi	r20, 0x9C	; 156
     134:	50 e4       	ldi	r21, 0x40	; 64
     136:	0e 94 ad 02 	call	0x55a <__mulsf3>
     13a:	dc 01       	movw	r26, r24
     13c:	cb 01       	movw	r24, r22
     13e:	bc 01       	movw	r22, r24
     140:	cd 01       	movw	r24, r26
     142:	0e 94 f9 00 	call	0x1f2 <__fixunssfsi>
     146:	dc 01       	movw	r26, r24
     148:	cb 01       	movw	r24, r22
     14a:	df 91       	pop	r29
     14c:	cf 91       	pop	r28
     14e:	08 95       	ret

00000150 <main>:
	return AD_Value;                                    /* return the voltage in mV. */
}

int main(void)
{
     150:	cf e5       	ldi	r28, 0x5F	; 95
     152:	d4 e0       	ldi	r29, 0x04	; 4
     154:	de bf       	out	0x3e, r29	; 62
     156:	cd bf       	out	0x3d, r28	; 61
	unsigned char CH=0;
     158:	c0 e0       	ldi	r28, 0x00	; 0
	unsigned int  voltage;

	/* Set LED and Smg LE pin as output , databus as output */
	DDRA |=(1<<PA4)|(1<<PA5)|(1<<PA6); 
     15a:	8a b3       	in	r24, 0x1a	; 26
     15c:	80 67       	ori	r24, 0x70	; 112
     15e:	8a bb       	out	0x1a, r24	; 26
	DDRB  = 0xFF;
     160:	8f ef       	ldi	r24, 0xFF	; 255
     162:	87 bb       	out	0x17, r24	; 23

	/* Off the Smg display */
	PORTA|= (1<<PA5);
     164:	dd 9a       	sbi	0x1b, 5	; 27
	PORTB = 0x00;
     166:	c8 bb       	out	0x18, r28	; 24
	PORTA&=~(1<<PA5);
     168:	dd 98       	cbi	0x1b, 5	; 27

	/* Off the LED display */
	PORTA|= (1<<PA6);
     16a:	de 9a       	sbi	0x1b, 6	; 27
	PORTB = 0xFF;
     16c:	88 bb       	out	0x18, r24	; 24
	PORTA&=~(1<<PA6);
     16e:	de 98       	cbi	0x1b, 6	; 27


	UART_Config();
     170:	0e 94 f0 00 	call	0x1e0 <UART_Config>
	while(1)
	{
		voltage=AD_Convert(CH);
     174:	8c 2f       	mov	r24, r28
     176:	0e 94 60 00 	call	0xc0 <AD_Convert>
		printf("The voltage of channel %d is : %4d mV .\r\n",CH,voltage);
     17a:	9f 93       	push	r25
     17c:	8f 93       	push	r24
     17e:	8c 2f       	mov	r24, r28
     180:	99 27       	eor	r25, r25
     182:	9f 93       	push	r25
     184:	8f 93       	push	r24
     186:	80 e6       	ldi	r24, 0x60	; 96
     188:	90 e0       	ldi	r25, 0x00	; 0
     18a:	9f 93       	push	r25
     18c:	8f 93       	push	r24
     18e:	0e 94 89 06 	call	0xd12 <printf>
		CH++;
     192:	cf 5f       	subi	r28, 0xFF	; 255
		if(CH==8)
     194:	8d b7       	in	r24, 0x3d	; 61
     196:	9e b7       	in	r25, 0x3e	; 62
     198:	06 96       	adiw	r24, 0x06	; 6
     19a:	0f b6       	in	r0, 0x3f	; 63
     19c:	f8 94       	cli
     19e:	9e bf       	out	0x3e, r25	; 62
     1a0:	0f be       	out	0x3f, r0	; 63
     1a2:	8d bf       	out	0x3d, r24	; 61
     1a4:	c8 30       	cpi	r28, 0x08	; 8
     1a6:	09 f4       	brne	.+2      	; 0x1aa <main+0x5a>
			CH=0;
     1a8:	c0 e0       	ldi	r28, 0x00	; 0
		delay_ms(500);
     1aa:	84 ef       	ldi	r24, 0xF4	; 244
     1ac:	91 e0       	ldi	r25, 0x01	; 1
     1ae:	0e 94 47 00 	call	0x8e <delay_ms>
     1b2:	e0 cf       	rjmp	.-64     	; 0x174 <main+0x24>

000001b4 <UART_Init>:


void UART_Init(void)
{
	UCSRA = 0x00;
     1b4:	1b b8       	out	0x0b, r1	; 11
	UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
     1b6:	88 e9       	ldi	r24, 0x98	; 152
     1b8:	8a b9       	out	0x0a, r24	; 10
	UCSRC = (1<<7)|(1<<UCSZ1)|(1<<UCSZ0);
     1ba:	86 e8       	ldi	r24, 0x86	; 134
     1bc:	80 bd       	out	0x20, r24	; 32
	UBRRH = UBRR>>8;
     1be:	10 bc       	out	0x20, r1	; 32
	UBRRL = UBRR&0xFF;
     1c0:	8c e0       	ldi	r24, 0x0C	; 12

⌨️ 快捷键说明

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