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

📄 eeprom.lss

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

eeprom.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000870  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000002e  00800060  00000870  00000904  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000006  0080008e  0080008e  00000932  2**0
                  ALLOC
  3 .noinit       00000000  00800094  00800094  00000932  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000932  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  00000934  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  00000ca0  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000050  00000000  00000000  00000d24  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 000000e4  00000000  00000000  00000d74  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00000544  00000000  00000000  00000e58  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 00000338  00000000  00000000  0000139c  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   000004a7  00000000  00000000  000016d4  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    000001a8  00000000  00000000  00001b7b  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 e7       	ldi	r30, 0x70	; 112
  68:	f8 e0       	ldi	r31, 0x08	; 8
  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:	ae 38       	cpi	r26, 0x8E	; 142
  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:	ae e8       	ldi	r26, 0x8E	; 142
  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 39       	cpi	r26, 0x94	; 148
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0c 94 d9 00 	jmp	0x1b2 <main>

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

0000008e <UART_Init>:


void UART_Init(void)
{
	UCSRA = 0x00;
  8e:	1b b8       	out	0x0b, r1	; 11
	UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
  90:	88 e9       	ldi	r24, 0x98	; 152
  92:	8a b9       	out	0x0a, r24	; 10
	UCSRC = (1<<7)|(1<<UCSZ1)|(1<<UCSZ0);
  94:	86 e8       	ldi	r24, 0x86	; 134
  96:	80 bd       	out	0x20, r24	; 32
	UBRRH = UBRR>>8;
  98:	10 bc       	out	0x20, r1	; 32
	UBRRL = UBRR&0xFF;
  9a:	8c e0       	ldi	r24, 0x0C	; 12
  9c:	89 b9       	out	0x09, r24	; 9
	DDRD |= (1<<PD1)|(0<<PD0);
  9e:	89 9a       	sbi	0x11, 1	; 17
	PORTD|= (1<<PD1)|(1<<PD0);
  a0:	82 b3       	in	r24, 0x12	; 18
  a2:	83 60       	ori	r24, 0x03	; 3
  a4:	82 bb       	out	0x12, r24	; 18
  a6:	08 95       	ret

000000a8 <UART_PutChar>:
}


void UART_PutChar(char c)
{
	while(!(UCSRA&(1<<UDRE)));
  a8:	5d 9b       	sbis	0x0b, 5	; 11
  aa:	fe cf       	rjmp	.-4      	; 0xa8 <UART_PutChar>
	UDR    = c;
  ac:	8c b9       	out	0x0c, r24	; 12
  ae:	08 95       	ret

000000b0 <UARTsendstream>:
}


/* Bellow is for printf function. If you want use this function, you must add the
 * include file stdio.h and stdlib.h, then adjust your displayment stream fuinction
 * to use with printf() and set output stream to it. If you want use the float number 
 * opreation, in the project option of the Libraries dialog box, you should add the 
 * library file libm.a and libprintf_flt.a.
 * In the project option of the Custom Options dialog box, you should and Linker Options
 * with <-Wl,-u,vfprintf -lprintf_flt>(except the <>). */

	

//adjust UART stream fuinction to use with printf()
static int UARTsendstream(char c , FILE *stream)
{
	UART_PutChar(c);
  b0:	0e 94 54 00 	call	0xa8 <UART_PutChar>
	return 0;
}
  b4:	80 e0       	ldi	r24, 0x00	; 0
  b6:	90 e0       	ldi	r25, 0x00	; 0
  b8:	08 95       	ret

000000ba <UART_Config>:

//----set output stream to LCD-------
static FILE uart_str = FDEV_SETUP_STREAM(UARTsendstream, NULL, _FDEV_SETUP_WRITE);


void UART_Config(void)
{
	UART_Init();
  ba:	0e 94 47 00 	call	0x8e <UART_Init>
	stdout = &uart_str;
  be:	80 e6       	ldi	r24, 0x60	; 96
  c0:	90 e0       	ldi	r25, 0x00	; 0
  c2:	90 93 91 00 	sts	0x0091, r25
  c6:	80 93 90 00 	sts	0x0090, r24
  ca:	08 95       	ret

000000cc <I2C_Init>:
#include "compat/twi.h"

void I2C_Init(void)
{
	TWSR=0x00;
  cc:	11 b8       	out	0x01, r1	; 1
	TWBR=0x00;
  ce:	10 b8       	out	0x00, r1	; 0
	TWAR=0x00;
  d0:	12 b8       	out	0x02, r1	; 2
	TWCR=0x44;
  d2:	84 e4       	ldi	r24, 0x44	; 68
  d4:	86 bf       	out	0x36, r24	; 54
	PORTC|=0x33;
  d6:	85 b3       	in	r24, 0x15	; 21
  d8:	83 63       	ori	r24, 0x33	; 51
  da:	85 bb       	out	0x15, r24	; 21
  dc:	08 95       	ret

000000de <I2C_Start>:
}

unsigned char I2C_Start(void)
{
	TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
  de:	84 ea       	ldi	r24, 0xA4	; 164
  e0:	86 bf       	out	0x36, r24	; 54
	while(!(TWCR&(1<<TWINT)));
  e2:	06 b6       	in	r0, 0x36	; 54
  e4:	07 fe       	sbrs	r0, 7
  e6:	fd cf       	rjmp	.-6      	; 0xe2 <I2C_Start+0x4>
	return 1;
}
  e8:	81 e0       	ldi	r24, 0x01	; 1
  ea:	90 e0       	ldi	r25, 0x00	; 0
  ec:	08 95       	ret

000000ee <I2C_Stop>:

void I2C_Stop(void)
{
	TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
  ee:	84 e9       	ldi	r24, 0x94	; 148
  f0:	86 bf       	out	0x36, r24	; 54
  f2:	08 95       	ret

000000f4 <I2C_Write>:
}

unsigned char I2C_Write(unsigned char c)
{
	unsigned char ACK=1;
  f4:	21 e0       	ldi	r18, 0x01	; 1
	TWDR=c;
  f6:	83 b9       	out	0x03, r24	; 3
	TWCR=(1<<TWINT)|(1<<TWEN);
  f8:	84 e8       	ldi	r24, 0x84	; 132
  fa:	86 bf       	out	0x36, r24	; 54
	while(!(TWCR&(1<<TWINT)));
  fc:	06 b6       	in	r0, 0x36	; 54
  fe:	07 fe       	sbrs	r0, 7
 100:	fd cf       	rjmp	.-6      	; 0xfc <I2C_Write+0x8>
	if((TWSR&0xF8)!=TW_MT_SLA_ACK)
 102:	81 b1       	in	r24, 0x01	; 1
 104:	99 27       	eor	r25, r25
 106:	88 7f       	andi	r24, 0xF8	; 248
 108:	90 70       	andi	r25, 0x00	; 0
 10a:	48 97       	sbiw	r24, 0x18	; 24
 10c:	09 f0       	breq	.+2      	; 0x110 <I2C_Write+0x1c>
		ACK=0;
 10e:	20 e0       	ldi	r18, 0x00	; 0
	return ACK;
}
 110:	82 2f       	mov	r24, r18
 112:	99 27       	eor	r25, r25
 114:	08 95       	ret

00000116 <I2C_Read>:

unsigned char I2C_Read(unsigned char ACK)
{
	if(ACK)
 116:	88 23       	and	r24, r24
 118:	11 f0       	breq	.+4      	; 0x11e <I2C_Read+0x8>
		TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA);
 11a:	84 ec       	ldi	r24, 0xC4	; 196
 11c:	01 c0       	rjmp	.+2      	; 0x120 <I2C_Read+0xa>
	else
		TWCR=(1<<TWINT)|(1<<TWEN);
 11e:	84 e8       	ldi	r24, 0x84	; 132
 120:	86 bf       	out	0x36, r24	; 54
	while(!(TWCR&(1<<TWINT)));
 122:	06 b6       	in	r0, 0x36	; 54
 124:	07 fe       	sbrs	r0, 7
 126:	fd cf       	rjmp	.-6      	; 0x122 <I2C_Read+0xc>
	return TWDR;
 128:	83 b1       	in	r24, 0x03	; 3
}
 12a:	99 27       	eor	r25, r25
 12c:	08 95       	ret

0000012e <EEPROM_Read>:
#define EEPROM_BUS_ADDRESS 0xA0


unsigned char EEPROM_Read(unsigned int address)
{
 12e:	0f 93       	push	r16
 130:	1f 93       	push	r17
 132:	8c 01       	movw	r16, r24
	unsigned char data;
	I2C_Start();
 134:	0e 94 6f 00 	call	0xde <I2C_Start>
	I2C_Write(EEPROM_BUS_ADDRESS);
 138:	80 ea       	ldi	r24, 0xA0	; 160
 13a:	90 e0       	ldi	r25, 0x00	; 0
 13c:	0e 94 7a 00 	call	0xf4 <I2C_Write>
	I2C_Write(address>>8);
 140:	81 2f       	mov	r24, r17
 142:	99 27       	eor	r25, r25
 144:	0e 94 7a 00 	call	0xf4 <I2C_Write>
	I2C_Write(address);
 148:	c8 01       	movw	r24, r16
 14a:	0e 94 7a 00 	call	0xf4 <I2C_Write>
	I2C_Start();
 14e:	0e 94 6f 00 	call	0xde <I2C_Start>
	I2C_Write(EEPROM_BUS_ADDRESS|1);
 152:	81 ea       	ldi	r24, 0xA1	; 161
 154:	90 e0       	ldi	r25, 0x00	; 0
 156:	0e 94 7a 00 	call	0xf4 <I2C_Write>
	data=I2C_Read(0);
 15a:	80 e0       	ldi	r24, 0x00	; 0
 15c:	90 e0       	ldi	r25, 0x00	; 0
 15e:	0e 94 8b 00 	call	0x116 <I2C_Read>
 162:	18 2f       	mov	r17, r24
	I2C_Stop();
 164:	0e 94 77 00 	call	0xee <I2C_Stop>
	return data;
}
 168:	81 2f       	mov	r24, r17
 16a:	99 27       	eor	r25, r25
 16c:	1f 91       	pop	r17
 16e:	0f 91       	pop	r16
 170:	08 95       	ret

00000172 <EEPROM_Write>:

void EEPROM_Write(unsigned int address,unsigned char data)
{
 172:	ff 92       	push	r15
 174:	0f 93       	push	r16
 176:	1f 93       	push	r17
 178:	8c 01       	movw	r16, r24
 17a:	f6 2e       	mov	r15, r22
	I2C_Start();
 17c:	0e 94 6f 00 	call	0xde <I2C_Start>
	I2C_Write(EEPROM_BUS_ADDRESS);
 180:	80 ea       	ldi	r24, 0xA0	; 160
 182:	90 e0       	ldi	r25, 0x00	; 0
 184:	0e 94 7a 00 	call	0xf4 <I2C_Write>
	I2C_Write(address>>8);
 188:	81 2f       	mov	r24, r17
 18a:	99 27       	eor	r25, r25
 18c:	0e 94 7a 00 	call	0xf4 <I2C_Write>
	I2C_Write(address);
 190:	c8 01       	movw	r24, r16
 192:	0e 94 7a 00 	call	0xf4 <I2C_Write>
	I2C_Write(data);
 196:	8f 2d       	mov	r24, r15
 198:	99 27       	eor	r25, r25
 19a:	0e 94 7a 00 	call	0xf4 <I2C_Write>
	I2C_Stop();
 19e:	0e 94 77 00 	call	0xee <I2C_Stop>
		__ticks = 1;
	else if (__tmp > 65535)
		__ticks = 0;	/* i.e. 65536 */
	else
		__ticks = (uint16_t)__tmp;
 1a2:	80 e2       	ldi	r24, 0x20	; 32
 1a4:	9e e4       	ldi	r25, 0x4E	; 78
 1a6:	01 97       	sbiw	r24, 0x01	; 1
 1a8:	f1 f7       	brne	.-4      	; 0x1a6 <EEPROM_Write+0x34>
 1aa:	1f 91       	pop	r17
 1ac:	0f 91       	pop	r16
 1ae:	ff 90       	pop	r15
 1b0:	08 95       	ret

000001b2 <main>:
#include "eeprom_extern.h"


int main(void)
{
 1b2:	cf e5       	ldi	r28, 0x5F	; 95
 1b4:	d4 e0       	ldi	r29, 0x04	; 4
 1b6:	de bf       	out	0x3e, r29	; 62
 1b8:	cd bf       	out	0x3d, r28	; 61
	unsigned char i=0;


	I2C_Init();
 1ba:	0e 94 66 00 	call	0xcc <I2C_Init>
	UART_Config();
 1be:	0e 94 5d 00 	call	0xba <UART_Config>
	EEPROM_Write(0x00AA,0xA5);
 1c2:	65 ea       	ldi	r22, 0xA5	; 165
 1c4:	8a ea       	ldi	r24, 0xAA	; 170
 1c6:	90 e0       	ldi	r25, 0x00	; 0
 1c8:	0e 94 b9 00 	call	0x172 <EEPROM_Write>
	i=EEPROM_Read(0x00AA);
 1cc:	8a ea       	ldi	r24, 0xAA	; 170
 1ce:	90 e0       	ldi	r25, 0x00	; 0
 1d0:	0e 94 97 00 	call	0x12e <EEPROM_Read>
	printf("The reading data is : 0x%02X\r\n",i);
 1d4:	99 27       	eor	r25, r25
 1d6:	9f 93       	push	r25
 1d8:	8f 93       	push	r24
 1da:	8e e6       	ldi	r24, 0x6E	; 110
 1dc:	90 e0       	ldi	r25, 0x00	; 0
 1de:	9f 93       	push	r25
 1e0:	8f 93       	push	r24
 1e2:	0e 94 f8 00 	call	0x1f0 <printf>
	while(1);
 1e6:	0f 90       	pop	r0
 1e8:	0f 90       	pop	r0
 1ea:	0f 90       	pop	r0
 1ec:	0f 90       	pop	r0
 1ee:	ff cf       	rjmp	.-2      	; 0x1ee <main+0x3c>

000001f0 <printf>:
 1f0:	cf 93       	push	r28
 1f2:	df 93       	push	r29

⌨️ 快捷键说明

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