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

📄 eeprom.lss

📁 用avr 操作eeprom的一个实例程序
💻 LSS
字号:

eeprom.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000000  00800100  0000013a  000001ee  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         0000013a  00000000  00000000  000000b4  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          00000001  00800100  00800100  000001ee  2**0
                  ALLOC
  3 .noinit       00000000  00800101  00800101  000001fa  2**0
                  CONTENTS
  4 .eeprom       0000000c  00810000  00810000  000001ee  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  5 .stab         0000036c  00000000  00000000  000001fc  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  00000568  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000028  00000000  00000000  000005ec  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 00000076  00000000  00000000  00000614  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00000231  00000000  00000000  0000068a  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 0000015f  00000000  00000000  000008bb  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   000001e1  00000000  00000000  00000a1a  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    000000ed  00000000  00000000  00000bfb  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

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

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:	ea e3       	ldi	r30, 0x3A	; 58
  a0:	f1 e0       	ldi	r31, 0x01	; 1
  a2:	02 c0       	rjmp	.+4      	; 0xa8 <.do_copy_data_start>

000000a4 <.do_copy_data_loop>:
  a4:	05 90       	lpm	r0, Z+
  a6:	0d 92       	st	X+, r0

000000a8 <.do_copy_data_start>:
  a8:	a0 30       	cpi	r26, 0x00	; 0
  aa:	b1 07       	cpc	r27, r17
  ac:	d9 f7       	brne	.-10     	; 0xa4 <.do_copy_data_loop>

000000ae <__do_clear_bss>:
  ae:	11 e0       	ldi	r17, 0x01	; 1
  b0:	a0 e0       	ldi	r26, 0x00	; 0
  b2:	b1 e0       	ldi	r27, 0x01	; 1
  b4:	01 c0       	rjmp	.+2      	; 0xb8 <.do_clear_bss_start>

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

000000b8 <.do_clear_bss_start>:
  b8:	a1 30       	cpi	r26, 0x01	; 1
  ba:	b1 07       	cpc	r27, r17
  bc:	e1 f7       	brne	.-8      	; 0xb6 <.do_clear_bss_loop>
  be:	0c 94 8c 00 	jmp	0x118 <main>

000000c2 <__bad_interrupt>:
  c2:	0c 94 00 00 	jmp	0x0 <__vectors>

000000c6 <delayms>:
* 修改说明:增加了一个延迟微妙级的函数,更改函数名字,以便于区别
* 备注:在-s级优化时,for循环 使用示波器测得,_delay_ms(1)实际为2ms
**********************************************************************************************************/
void delayms(unsigned int ms)
{
  c6:	cf 93       	push	r28
  c8:	df 93       	push	r29
  ca:	ac 01       	movw	r20, r24
   unsigned int i; 
    for(i=0;i<ms;i++) _delay_ms(1); 
  cc:	20 e0       	ldi	r18, 0x00	; 0
  ce:	30 e0       	ldi	r19, 0x00	; 0
  d0:	28 17       	cp	r18, r24
  d2:	39 07       	cpc	r19, r25
  d4:	60 f4       	brcc	.+24     	; 0xee <delayms+0x28>
  d6:	ac ed       	ldi	r26, 0xDC	; 220
  d8:	b5 e0       	ldi	r27, 0x05	; 5
  da:	c0 e0       	ldi	r28, 0x00	; 0
  dc:	d0 e0       	ldi	r29, 0x00	; 0
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  de:	cd 01       	movw	r24, r26
  e0:	01 97       	sbiw	r24, 0x01	; 1
  e2:	f1 f7       	brne	.-4      	; 0xe0 <delayms+0x1a>
  e4:	2f 5f       	subi	r18, 0xFF	; 255
  e6:	3f 4f       	sbci	r19, 0xFF	; 255
  e8:	24 17       	cp	r18, r20
  ea:	35 07       	cpc	r19, r21
  ec:	c0 f3       	brcs	.-16     	; 0xde <delayms+0x18>
  ee:	df 91       	pop	r29
  f0:	cf 91       	pop	r28
  f2:	08 95       	ret

000000f4 <speaker>:

}


/********************************************************************************************************
* 函数名:speaker()
* 函数功能:控制蜂鸣器蜂鸣声,以及鸣叫时间。 
* 创建日期:2006-11-14
* 创建人:GUDONGYUAN
* 输入:鸣叫持续时间 n   总时间:1ms*n
* 返回:无
* 修改日期:2007-2-6
* 修改人:
* 修改说明:修改清零方法,PORTG&=~(1<<PG0) 
* 备注:
*********************************************************************************************************/
void speaker(unsigned int n)
{
  PORTG|=(1<<PG0);
  f4:	20 91 65 00 	lds	r18, 0x0065
  f8:	21 60       	ori	r18, 0x01	; 1
  fa:	20 93 65 00 	sts	0x0065, r18
  DDRG|=(1<<DDG0);  //33PIN(PG0)  初始为输出,PG0置1  SPEAKER START
  fe:	20 91 64 00 	lds	r18, 0x0064
 102:	21 60       	ori	r18, 0x01	; 1
 104:	20 93 64 00 	sts	0x0064, r18
  delayms(n);
 108:	0e 94 63 00 	call	0xc6 <delayms>
  PORTG&=~(1<<PG0);  //SPEAKER STOP   PG0=0;
 10c:	80 91 65 00 	lds	r24, 0x0065
 110:	8e 7f       	andi	r24, 0xFE	; 254
 112:	80 93 65 00 	sts	0x0065, r24
 116:	08 95       	ret

00000118 <main>:
 
}



int main(void) 
{
 118:	cf ef       	ldi	r28, 0xFF	; 255
 11a:	d0 e1       	ldi	r29, 0x10	; 16
 11c:	de bf       	out	0x3e, r29	; 62
 11e:	cd bf       	out	0x3d, r28	; 61
 
 //g_led_status=20;

// init_test();

//unsigned int  Ad;
//                 Ad=AdcAkValArray[0] ;
//const char eep_buf[]  __attribute__ ((section (".eeprom")))  ="南北线"; 
//const char bar1[] ={0,0,0,1,2,2,3}; 

/*
 unsigned char i;
//读出 
  for (i = 0; i < 4; i ++) { 
    AkVal[i] = eeprom_read_word(&AkValArray[i]); 
  } 


//写入 
  for (i = 0; i < 4; i ++) { 
    eeprom_write_word((unsigned int *)&AkValArray[i], AkVal[i]); 
  } 
*/
 while(1){
 
 speaker(500);
 120:	84 ef       	ldi	r24, 0xF4	; 244
 122:	91 e0       	ldi	r25, 0x01	; 1
 124:	0e 94 7a 00 	call	0xf4 <speaker>
 delayms(1000);
 128:	88 ee       	ldi	r24, 0xE8	; 232
 12a:	93 e0       	ldi	r25, 0x03	; 3
 12c:	0e 94 63 00 	call	0xc6 <delayms>
 130:	f7 cf       	rjmp	.-18     	; 0x120 <main+0x8>

00000132 <init_test>:


//extern unsigned int A;
//  A=10;
g_led_status=10;
 132:	8a e0       	ldi	r24, 0x0A	; 10
 134:	80 93 00 01 	sts	0x0100, r24
 138:	08 95       	ret

⌨️ 快捷键说明

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