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

📄 master.lss

📁 《AVR单片机GCC程序设计》
💻 LSS
字号:

master.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000128  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000000  00800060  00000128  000001bc  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000000  00800060  00000128  000001bc  2**0
                  ALLOC
  3 .noinit       00000000  00800060  00800060  000001bc  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000001bc  2**0
                  CONTENTS
  5 .stab         00000528  00000000  00000000  000001bc  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      000005d8  00000000  00000000  000006e4  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	12 c0       	rjmp	.+36     	; 0x26
   2:	2b c0       	rjmp	.+86     	; 0x5a
   4:	2a c0       	rjmp	.+84     	; 0x5a
   6:	29 c0       	rjmp	.+82     	; 0x5a
   8:	28 c0       	rjmp	.+80     	; 0x5a
   a:	27 c0       	rjmp	.+78     	; 0x5a
   c:	26 c0       	rjmp	.+76     	; 0x5a
   e:	25 c0       	rjmp	.+74     	; 0x5a
  10:	24 c0       	rjmp	.+72     	; 0x5a
  12:	23 c0       	rjmp	.+70     	; 0x5a
  14:	22 c0       	rjmp	.+68     	; 0x5a
  16:	21 c0       	rjmp	.+66     	; 0x5a
  18:	20 c0       	rjmp	.+64     	; 0x5a
  1a:	1f c0       	rjmp	.+62     	; 0x5a
  1c:	1e c0       	rjmp	.+60     	; 0x5a
  1e:	1d c0       	rjmp	.+58     	; 0x5a
  20:	1c c0       	rjmp	.+56     	; 0x5a
  22:	1b c0       	rjmp	.+54     	; 0x5a
  24:	1a c0       	rjmp	.+52     	; 0x5a

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:	e8 e2       	ldi	r30, 0x28	; 40
  3a:	f1 e0       	ldi	r31, 0x01	; 1
  3c:	02 c0       	rjmp	.+4      	; 0x42

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

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

00000050 <.do_clear_bss_loop>:
  50:	1d 92       	st	X+, r1

00000052 <.do_clear_bss_start>:
  52:	a0 36       	cpi	r26, 0x60	; 96
  54:	b1 07       	cpc	r27, r17
  56:	e1 f7       	brne	.-8      	; 0x50
  58:	47 c0       	rjmp	.+142    	; 0xe8

0000005a <__bad_interrupt>:
  5a:	d2 cf       	rjmp	.-92     	; 0x0

0000005c <DelayMs>:

void DelayMs(uint ms)
{
	uint i;
	for(i=0;i<ms;i++)
  5c:	00 97       	sbiw	r24, 0x00	; 0
  5e:	41 f0       	breq	.+16     	; 0x70
  60:	9c 01       	movw	r18, r24

/* 16-bit count, 4 cycles/loop */
static __inline__ void
_delay_loop_2(uint16_t __count)
{
  62:	88 ee       	ldi	r24, 0xE8	; 232
  64:	93 e0       	ldi	r25, 0x03	; 3
	asm volatile (
  66:	01 97       	sbiw	r24, 0x01	; 1
  68:	f1 f7       	brne	.-4      	; 0x66
  6a:	21 50       	subi	r18, 0x01	; 1
  6c:	30 40       	sbci	r19, 0x00	; 0
  6e:	c9 f7       	brne	.-14     	; 0x62
  70:	08 95       	ret

00000072 <twi_stop>:
		_delay_loop_2(FREQ *250);
}

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

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

00000078 <twi_start>:
}
//总线上起动开始条件
void twi_start(void)
{
	uchar trycount=0;

	TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN); 
  78:	84 ea       	ldi	r24, 0xA4	; 164
  7a:	86 bf       	out	0x36, r24	; 54
	while ((TWCR & _BV(TWINT)) == 0) ;
  7c:	06 b6       	in	r0, 0x36	; 54
  7e:	07 fe       	sbrs	r0, 7
  80:	fd cf       	rjmp	.-6      	; 0x7c

	return TW_STATUS;
  82:	81 b1       	in	r24, 0x01	; 1
  84:	08 95       	ret

00000086 <twi_writebyte>:
}

//写一字节
void twi_writebyte(uchar c)
{
	TWDR = c;
  86:	83 b9       	out	0x03, r24	; 3
	TWCR = _BV(TWINT) | _BV(TWEN); 	
  88:	84 e8       	ldi	r24, 0x84	; 132
  8a:	86 bf       	out	0x36, r24	; 54
	while ((TWCR & _BV(TWINT)) == 0);
  8c:	06 b6       	in	r0, 0x36	; 54
  8e:	07 fe       	sbrs	r0, 7
  90:	fd cf       	rjmp	.-6      	; 0x8c
	return TW_STATUS;
  92:	81 b1       	in	r24, 0x01	; 1
  94:	08 95       	ret

00000096 <twi_readbyte>:
}

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

	*c=TWDR;
  a6:	83 b1       	in	r24, 0x03	; 3
  a8:	80 83       	st	Z, r24

	return TW_STATUS;
  aa:	81 b1       	in	r24, 0x01	; 1
  ac:	99 27       	eor	r25, r25
}
  ae:	88 7f       	andi	r24, 0xF8	; 248
  b0:	90 70       	andi	r25, 0x00	; 0
  b2:	08 95       	ret

000000b4 <WaitKeyDown>:
/*************主模式IIC操作部分*************结束**************/

//检测按键
uchar WaitKeyDown(void)
{
  b4:	cf 93       	push	r28
	uchar key;
	
	while(1)
	{
		key=PIND & KEY;
		if(	key!=KEY)
  b6:	82 99       	sbic	0x10, 2	; 16
  b8:	08 c0       	rjmp	.+16     	; 0xca
		{
			DelayMs(30);
  ba:	8e e1       	ldi	r24, 0x1E	; 30
  bc:	90 e0       	ldi	r25, 0x00	; 0
  be:	ce df       	rcall	.-100    	; 0x5c
			key=PIND & KEY;
  c0:	80 b3       	in	r24, 0x10	; 16
			if(key!=KEY)
  c2:	c8 2f       	mov	r28, r24
  c4:	c4 70       	andi	r28, 0x04	; 4
  c6:	82 ff       	sbrs	r24, 2
  c8:	04 c0       	rjmp	.+8      	; 0xd2
				break;
		}
		DelayMs(1);
  ca:	81 e0       	ldi	r24, 0x01	; 1
  cc:	90 e0       	ldi	r25, 0x00	; 0
  ce:	c6 df       	rcall	.-116    	; 0x5c
  d0:	f2 cf       	rjmp	.-28     	; 0xb6
	}

	while((PIND & KEY)!=KEY)
		DelayMs(10);
  d2:	82 99       	sbic	0x10, 2	; 16
  d4:	05 c0       	rjmp	.+10     	; 0xe0
  d6:	8a e0       	ldi	r24, 0x0A	; 10
  d8:	90 e0       	ldi	r25, 0x00	; 0
  da:	c0 df       	rcall	.-128    	; 0x5c
  dc:	82 9b       	sbis	0x10, 2	; 16
  de:	fb cf       	rjmp	.-10     	; 0xd6
		
	return key;
}
  e0:	8c 2f       	mov	r24, r28
  e2:	99 27       	eor	r25, r25
  e4:	cf 91       	pop	r28
  e6:	08 95       	ret

000000e8 <main>:

int main(void)
{
  e8:	cf e5       	ldi	r28, 0x5F	; 95
  ea:	d4 e0       	ldi	r29, 0x04	; 4
  ec:	de bf       	out	0x3e, r29	; 62
  ee:	cd bf       	out	0x3d, r28	; 61
	uchar i;
	
	//便能SCL、SDA引脚内部上拉电阻
	DDRC=0;
  f0:	14 ba       	out	0x14, r1	; 20
	PORTC=0X30;
  f2:	80 e3       	ldi	r24, 0x30	; 48
  f4:	85 bb       	out	0x15, r24	; 21
	
	//
	DDRD=0;
  f6:	11 ba       	out	0x11, r1	; 17
	PORTD=0;
  f8:	12 ba       	out	0x12, r1	; 18
	
	TWBR=73;
  fa:	89 e4       	ldi	r24, 0x49	; 73
  fc:	80 b9       	out	0x00, r24	; 0
	
	while(1)
	{
		WaitKeyDown();
  fe:	da df       	rcall	.-76     	; 0xb4
	
		twi_start();
 100:	bb df       	rcall	.-138    	; 0x78
		WAITPRINTDEBUG;
 102:	84 e6       	ldi	r24, 0x64	; 100
 104:	90 e0       	ldi	r25, 0x00	; 0
 106:	aa df       	rcall	.-172    	; 0x5c
		twi_writebyte(TWI_ADDRESS|TW_WRITE);
 108:	82 e3       	ldi	r24, 0x32	; 50
 10a:	bd df       	rcall	.-134    	; 0x86
		WAITPRINTDEBUG;
 10c:	84 e6       	ldi	r24, 0x64	; 100
 10e:	90 e0       	ldi	r25, 0x00	; 0
 110:	a5 df       	rcall	.-182    	; 0x5c
		for(i=0;i<10;i++)
 112:	c0 e0       	ldi	r28, 0x00	; 0
		{
			twi_writebyte(i);
 114:	8c 2f       	mov	r24, r28
 116:	b7 df       	rcall	.-146    	; 0x86
			WAITPRINTDEBUG;
 118:	84 e6       	ldi	r24, 0x64	; 100
 11a:	90 e0       	ldi	r25, 0x00	; 0
 11c:	9f df       	rcall	.-194    	; 0x5c
 11e:	cf 5f       	subi	r28, 0xFF	; 255
 120:	ca 30       	cpi	r28, 0x0A	; 10
 122:	c0 f3       	brcs	.-16     	; 0x114
		}
		twi_stop();
 124:	a6 df       	rcall	.-180    	; 0x72
 126:	eb cf       	rjmp	.-42     	; 0xfe

⌨️ 快捷键说明

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