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

📄 main.lss

📁 avr单片机的一些实际应用源码
💻 LSS
📖 第 1 页 / 共 5 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000010de  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000001e  00800060  000010de  00001172  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000001a  0080007e  0080007e  00001190  2**0
                  ALLOC
  3 .noinit       00000000  00800098  00800098  00001190  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00001190  2**0
                  CONTENTS
  5 .stab         00000db0  00000000  00000000  00001190  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000901  00000000  00000000  00001f40  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
       0:	83 c0       	rjmp	.+262    	; 0x108
       2:	9c c0       	rjmp	.+312    	; 0x13c
       4:	9b c0       	rjmp	.+310    	; 0x13c
       6:	9a c0       	rjmp	.+308    	; 0x13c
       8:	99 c0       	rjmp	.+306    	; 0x13c
       a:	98 c0       	rjmp	.+304    	; 0x13c
       c:	97 c0       	rjmp	.+302    	; 0x13c
       e:	96 c0       	rjmp	.+300    	; 0x13c
      10:	95 c0       	rjmp	.+298    	; 0x13c
      12:	94 c0       	rjmp	.+296    	; 0x13c
      14:	93 c0       	rjmp	.+294    	; 0x13c
      16:	92 c0       	rjmp	.+292    	; 0x13c
      18:	91 c0       	rjmp	.+290    	; 0x13c
      1a:	90 c0       	rjmp	.+288    	; 0x13c
      1c:	8f c0       	rjmp	.+286    	; 0x13c
      1e:	8e c0       	rjmp	.+284    	; 0x13c
      20:	8d c0       	rjmp	.+282    	; 0x13c
      22:	8c c0       	rjmp	.+280    	; 0x13c
      24:	8b c0       	rjmp	.+278    	; 0x13c

00000026 <__ctors_end>:
      26:	ca e4       	ldi	r28, 0x4A	; 74
      28:	c8 eb       	ldi	r28, 0xB8	; 184
      2a:	c3 fc       	sbrc	r12, 3
      2c:	c1 ee       	ldi	r28, 0xE1	; 225
      2e:	a3 ba       	out	0x13, r10	; 19
      30:	67 20       	and	r6, r7
      32:	2d 20       	and	r2, r13
      34:	b4 f2       	brlt	.-84     	; 0xffffffe2
      36:	d3 a1       	ldd	r29, Z+35	; 0x23
      38:	c8 d5       	rcall	.+2960   	; 0xbca
      3a:	c0 fa       	bst	r12, 0
      3c:	2f ca       	rjmp	.-2978   	; 0xfffff49c
      3e:	b1 d6       	rcall	.+3426   	; 0xda2
      40:	d3 a3       	std	Z+35, r29	; 0x23
      42:	ac 73       	andi	r26, 0x3C	; 60
      44:	20 2d       	mov	r18, r0
      46:	20 c9       	rjmp	.-3520   	; 0xfffff288
      48:	e8 d6       	rcall	.+3536   	; 0xe1a
      4a:	c3 c8       	rjmp	.-3706   	; 0xfffff1d2
      4c:	d5 c0       	rjmp	.+426    	; 0x1f8
      4e:	fa 2f       	mov	r31, r26
      50:	ca b1       	in	r28, 0x0a	; 10
      52:	d6 d3       	rcall	.+1964   	; 0x800
      54:	a3 ac       	ldd	r10, Z+59	; 0x3b
      56:	68 20       	and	r6, r8
      58:	2d 20       	and	r2, r13
      5a:	b0 ef       	ldi	r27, 0xF0	; 240
      5c:	d6 fa       	bst	r13, 6
      5e:	d0 c5       	rjmp	.+2976   	; 0xc00
      60:	cf a2       	std	Y+39, r12	; 0x27
      62:	0a 00       	.word	0x000a	; ????

00000064 <__c.1>:
      64:	b5 b1 c7 b0 c8 d5 c0 fa 2f ca b1 d6 d3 a3 ba 25     ......../......%
      74:	64 c4 ea 25 64 d4 c2 25 64 c8 d5 20 d0 c7 c6 da     d..%d..%d.. ....
      84:	25 64 20 20 25 64 3a 25 64 3a 25 64 0a 00           %d  %d:%d:%d..

00000092 <__c.2>:
      92:	c7 eb b0 b4 20 3c c4 ea 20 d4 c2 20 c8 d5 20 d0     .... <.. .. .. .
      a2:	c7 c6 da 20 d0 a1 ca b1 20 b7 d6 20 c3 eb 3e 20     ... .... .. ..> 
      b2:	b8 f1 ca bd ca e4 c8 eb a3 ba 0a 00                 ............

000000be <__c.3>:
      be:	0a c9 e8 d6 c3 cd ea b3 c9 21 0a 00                 .........!..

000000ca <__c.4>:
      ca:	ca e4 c8 eb c3 fc c1 ee a3 ba 67 20 2d 20 b4 f2     ..........g - ..
      da:	d3 a1 c8 d5 c0 fa 2f ca b1 d6 d3 a3 ac 73 20 2d     ....../......s -
      ea:	20 c9 e8 d6 c3 c8 d5 c0 fa 2f ca b1 d6 d3 a3 ac      ......../......
      fa:	68 20 2d 20 b0 ef d6 fa d0 c5 cf a2 0a 00           h - ..........

00000108 <__init>:
     108:	11 24       	eor	r1, r1
     10a:	1f be       	out	0x3f, r1	; 63
     10c:	cf e5       	ldi	r28, 0x5F	; 95
     10e:	d4 e0       	ldi	r29, 0x04	; 4
     110:	de bf       	out	0x3e, r29	; 62
     112:	cd bf       	out	0x3d, r28	; 61

00000114 <__do_copy_data>:
     114:	10 e0       	ldi	r17, 0x00	; 0
     116:	a0 e6       	ldi	r26, 0x60	; 96
     118:	b0 e0       	ldi	r27, 0x00	; 0
     11a:	ee ed       	ldi	r30, 0xDE	; 222
     11c:	f0 e1       	ldi	r31, 0x10	; 16
     11e:	02 c0       	rjmp	.+4      	; 0x124

00000120 <.do_copy_data_loop>:
     120:	05 90       	lpm	r0, Z+
     122:	0d 92       	st	X+, r0

00000124 <.do_copy_data_start>:
     124:	ae 37       	cpi	r26, 0x7E	; 126
     126:	b1 07       	cpc	r27, r17
     128:	d9 f7       	brne	.-10     	; 0x120

0000012a <__do_clear_bss>:
     12a:	10 e0       	ldi	r17, 0x00	; 0
     12c:	ae e7       	ldi	r26, 0x7E	; 126
     12e:	b0 e0       	ldi	r27, 0x00	; 0
     130:	01 c0       	rjmp	.+2      	; 0x134

00000132 <.do_clear_bss_loop>:
     132:	1d 92       	st	X+, r1

00000134 <.do_clear_bss_start>:
     134:	a8 39       	cpi	r26, 0x98	; 152
     136:	b1 07       	cpc	r27, r17
     138:	e1 f7       	brne	.-8      	; 0x132
     13a:	55 c1       	rjmp	.+682    	; 0x3e6

0000013c <__bad_interrupt>:
     13c:	61 cf       	rjmp	.-318    	; 0x0

0000013e <DelayMs>:
uchar g_aTimeBuf[7];//时钟/日历缓冲区
uchar g_aTimeBin[7];//时钟/日历二进制格式缓冲区

void DelayMs(uint ms)
{
     13e:	ac 01       	movw	r20, r24
	uint i;
	for(i=0;i<ms;i++)
     140:	20 e0       	ldi	r18, 0x00	; 0
     142:	30 e0       	ldi	r19, 0x00	; 0
     144:	28 17       	cp	r18, r24
     146:	39 07       	cpc	r19, r25
     148:	48 f4       	brcc	.+18     	; 0x15c

/* 16-bit count, 4 cycles/loop */
static inline void
_delay_loop_2(unsigned int __count)
{
     14a:	88 ee       	ldi	r24, 0xE8	; 232
     14c:	93 e0       	ldi	r25, 0x03	; 3
	asm volatile (
     14e:	01 97       	sbiw	r24, 0x01	; 1
     150:	f1 f7       	brne	.-4      	; 0x14e
     152:	2f 5f       	subi	r18, 0xFF	; 255
     154:	3f 4f       	sbci	r19, 0xFF	; 255
     156:	24 17       	cp	r18, r20
     158:	35 07       	cpc	r19, r21
     15a:	b8 f3       	brcs	.-18     	; 0x14a
		_delay_loop_2(FREQ *250);
}
     15c:	08 95       	ret

0000015e <usart_putchar>:


/*******************标准I/O功能****************开始********/
//标准I/O输出函数
int usart_putchar(char c)
{
     15e:	cf 93       	push	r28
     160:	c8 2f       	mov	r28, r24
	if(c=='\n')
     162:	8a 30       	cpi	r24, 0x0A	; 10
     164:	11 f4       	brne	.+4      	; 0x16a
		usart_putchar('\r');
     166:	8d e0       	ldi	r24, 0x0D	; 13
     168:	fa df       	rcall	.-12     	; 0x15e
	loop_until_bit_is_set(UCSRA,UDRE);
     16a:	5d 9b       	sbis	0x0b, 5	; 11
     16c:	fe cf       	rjmp	.-4      	; 0x16a
	UDR=c;
     16e:	cc b9       	out	0x0c, r28	; 12
	return 0;
}
     170:	80 e0       	ldi	r24, 0x00	; 0
     172:	90 e0       	ldi	r25, 0x00	; 0
     174:	cf 91       	pop	r28
     176:	08 95       	ret

00000178 <usart_getchar>:
//标准I/O输入函数
int usart_getchar(void)
{
	loop_until_bit_is_set(UCSRA,RXC);
     178:	5f 9b       	sbis	0x0b, 7	; 11
     17a:	fe cf       	rjmp	.-4      	; 0x178
	return UDR;
     17c:	8c b1       	in	r24, 0x0c	; 12
     17e:	99 27       	eor	r25, r25
}
     180:	08 95       	ret

00000182 <IoInit>:

//初始化
void IoInit(void)
{
	//串行口初始化
	UCSRB=_BV(RXEN)|_BV(TXEN);/*(1<<RXCIE)|(1<<TXCIE)|*/
     182:	88 e1       	ldi	r24, 0x18	; 24
     184:	8a b9       	out	0x0a, r24	; 10
	UBRRL=25;	//9600 baud 6MHz:38  4MHz:25	
     186:	89 e1       	ldi	r24, 0x19	; 25
     188:	89 b9       	out	0x09, r24	; 9
	
	//UART用于标准I/O输入输出
	g_hFile=fdevopen(usart_putchar,usart_getchar,0);	
     18a:	40 e0       	ldi	r20, 0x00	; 0
     18c:	50 e0       	ldi	r21, 0x00	; 0
     18e:	6c eb       	ldi	r22, 0xBC	; 188
     190:	70 e0       	ldi	r23, 0x00	; 0
     192:	8f ea       	ldi	r24, 0xAF	; 175
     194:	90 e0       	ldi	r25, 0x00	; 0
     196:	e6 d4       	rcall	.+2508   	; 0xb64
     198:	90 93 91 00 	sts	0x0091, r25
     19c:	80 93 90 00 	sts	0x0090, r24
}
     1a0:	08 95       	ret

000001a2 <twi_stop>:
/*******************标准I/O功能**************结束**********/

/*************主模式TWI操作部分*************开始**************/

//总线上起动停止条件
void twi_stop(void)
{
	TWCR = _BV(TWINT) | _BV(TWSTO) | _BV(TWEN);
     1a2:	84 e9       	ldi	r24, 0x94	; 148
     1a4:	86 bf       	out	0x36, r24	; 54
}
     1a6:	08 95       	ret

000001a8 <twi_start>:
//总线上起动开始条件
uchar twi_start(void)
{
	TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN); 
     1a8:	84 ea       	ldi	r24, 0xA4	; 164
     1aa:	86 bf       	out	0x36, r24	; 54
	while ((TWCR & _BV(TWINT)) == 0) ;
     1ac:	06 b6       	in	r0, 0x36	; 54
     1ae:	07 fe       	sbrs	r0, 7
     1b0:	fd cf       	rjmp	.-6      	; 0x1ac

	
	return TW_STATUS;
     1b2:	81 b1       	in	r24, 0x01	; 1
     1b4:	99 27       	eor	r25, r25
     1b6:	88 7f       	andi	r24, 0xF8	; 248
     1b8:	90 70       	andi	r25, 0x00	; 0
}
     1ba:	08 95       	ret

000001bc <twi_writebyte>:

//写一字节
uchar twi_writebyte(uchar c)
{
	TWDR = c;
     1bc:	83 b9       	out	0x03, r24	; 3
	TWCR = _BV(TWINT) | _BV(TWEN); 	
     1be:	84 e8       	ldi	r24, 0x84	; 132
     1c0:	86 bf       	out	0x36, r24	; 54
	while ((TWCR & _BV(TWINT)) == 0);
     1c2:	06 b6       	in	r0, 0x36	; 54
     1c4:	07 fe       	sbrs	r0, 7
     1c6:	fd cf       	rjmp	.-6      	; 0x1c2
	return TW_STATUS;
     1c8:	81 b1       	in	r24, 0x01	; 1
     1ca:	99 27       	eor	r25, r25
     1cc:	88 7f       	andi	r24, 0xF8	; 248
     1ce:	90 70       	andi	r25, 0x00	; 0
}
     1d0:	08 95       	ret

000001d2 <twi_readbyte>:

//读一字节 ack: true时发ACK,false时发NACK
uchar twi_readbyte(uchar *c ,uchar ack)
{
     1d2:	fc 01       	movw	r30, r24
	uchar tmp=_BV(TWINT)|_BV(TWEN);
     1d4:	94 e8       	ldi	r25, 0x84	; 132
		
	if(ack)
     1d6:	61 11       	cpse	r22, r1
		tmp|=_BV(TWEA); 	
     1d8:	94 ec       	ldi	r25, 0xC4	; 196
	TWCR=tmp;
     1da:	96 bf       	out	0x36, r25	; 54
	while ((TWCR & _BV(TWINT)) == 0) ;
     1dc:	06 b6       	in	r0, 0x36	; 54
     1de:	07 fe       	sbrs	r0, 7
     1e0:	fd cf       	rjmp	.-6      	; 0x1dc

	*c=TWDR;
     1e2:	83 b1       	in	r24, 0x03	; 3
     1e4:	80 83       	st	Z, r24

	return TW_STATUS;
     1e6:	81 b1       	in	r24, 0x01	; 1
     1e8:	99 27       	eor	r25, r25
     1ea:	88 7f       	andi	r24, 0xF8	; 248
     1ec:	90 70       	andi	r25, 0x00	; 0
}
     1ee:	08 95       	ret

000001f0 <rtc_write>:
/*************主模式TWI操作部分*************结束**************/

/*************DS1307操作**************开始**************/
//对DS1307内存连续的写操作
uchar rtc_write(uchar addr,uchar *buf,uchar len)
{
     1f0:	0f 93       	push	r16
     1f2:	1f 93       	push	r17
     1f4:	cf 93       	push	r28
     1f6:	df 93       	push	r29
     1f8:	18 2f       	mov	r17, r24
     1fa:	eb 01       	movw	r28, r22
     1fc:	04 2f       	mov	r16, r20
	uchar i;
	
	twi_start();
     1fe:	d4 df       	rcall	.-88     	; 0x1a8
	twi_writebyte(DS1307_ADDR|TW_WRITE);
     200:	80 ed       	ldi	r24, 0xD0	; 208
     202:	dc df       	rcall	.-72     	; 0x1bc
	twi_writebyte(addr);//write address
     204:	81 2f       	mov	r24, r17
     206:	da df       	rcall	.-76     	; 0x1bc
	for(i=0;i<len;i++)
     208:	10 e0       	ldi	r17, 0x00	; 0
     20a:	10 17       	cp	r17, r16
     20c:	40 f4       	brcc	.+16     	; 0x21e

⌨️ 快捷键说明

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