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

📄 ad7714.lss

📁 The use of 24 ad measuring voltage converter chip 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 + -