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

📄 main.lss

📁 avr单片机的一些实际应用源码
💻 LSS
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0000016e  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000000  00800060  0000016e  00000202  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000001  00800060  00800060  00000202  2**0
                  ALLOC
  3 .noinit       00000000  00800061  00800061  00000202  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000202  2**0
                  CONTENTS
  5 .stab         00000540  00000000  00000000  00000204  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000690  00000000  00000000  00000744  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0b c0       	rjmp	.+22     	; 0x18
   2:	2e c0       	rjmp	.+92     	; 0x60
   4:	2d c0       	rjmp	.+90     	; 0x60
   6:	2c c0       	rjmp	.+88     	; 0x60
   8:	2b c0       	rjmp	.+86     	; 0x60
   a:	2a c0       	rjmp	.+84     	; 0x60
   c:	29 c0       	rjmp	.+82     	; 0x60
   e:	28 c0       	rjmp	.+80     	; 0x60
  10:	27 c0       	rjmp	.+78     	; 0x60
  12:	26 c0       	rjmp	.+76     	; 0x60
  14:	25 c0       	rjmp	.+74     	; 0x60

00000016 <__ctors_start>:
  16:	ab 00       	.word	0x00ab	; ????

00000018 <__ctors_end>:
  18:	11 24       	eor	r1, r1
  1a:	1f be       	out	0x3f, r1	; 63
  1c:	cf ed       	ldi	r28, 0xDF	; 223
  1e:	cd bf       	out	0x3d, r28	; 61

00000020 <__do_copy_data>:
  20:	10 e0       	ldi	r17, 0x00	; 0
  22:	a0 e6       	ldi	r26, 0x60	; 96
  24:	b0 e0       	ldi	r27, 0x00	; 0
  26:	ee e6       	ldi	r30, 0x6E	; 110
  28:	f1 e0       	ldi	r31, 0x01	; 1
  2a:	03 c0       	rjmp	.+6      	; 0x32

0000002c <.do_copy_data_loop>:
  2c:	c8 95       	lpm
  2e:	31 96       	adiw	r30, 0x01	; 1
  30:	0d 92       	st	X+, r0

00000032 <.do_copy_data_start>:
  32:	a0 36       	cpi	r26, 0x60	; 96
  34:	b1 07       	cpc	r27, r17
  36:	d1 f7       	brne	.-12     	; 0x2c

00000038 <__do_clear_bss>:
  38:	10 e0       	ldi	r17, 0x00	; 0
  3a:	a0 e6       	ldi	r26, 0x60	; 96
  3c:	b0 e0       	ldi	r27, 0x00	; 0
  3e:	01 c0       	rjmp	.+2      	; 0x42

00000040 <.do_clear_bss_loop>:
  40:	1d 92       	st	X+, r1

00000042 <.do_clear_bss_start>:
  42:	a1 36       	cpi	r26, 0x61	; 97
  44:	b1 07       	cpc	r27, r17
  46:	e1 f7       	brne	.-8      	; 0x40

00000048 <__do_global_ctors>:
  48:	10 e0       	ldi	r17, 0x00	; 0
  4a:	c8 e1       	ldi	r28, 0x18	; 24
  4c:	d0 e0       	ldi	r29, 0x00	; 0
  4e:	04 c0       	rjmp	.+8      	; 0x58

00000050 <.do_global_ctors_loop>:
  50:	22 97       	sbiw	r28, 0x02	; 2
  52:	fd 2f       	mov	r31, r29
  54:	ec 2f       	mov	r30, r28
  56:	85 d0       	rcall	.+266    	; 0x162

00000058 <.do_global_ctors_start>:
  58:	c6 31       	cpi	r28, 0x16	; 22
  5a:	d1 07       	cpc	r29, r17
  5c:	c9 f7       	brne	.-14     	; 0x50
  5e:	58 c0       	rjmp	.+176    	; 0x110

00000060 <__bad_interrupt>:
  60:	cf cf       	rjmp	.-98     	; 0x0

00000062 <_ZN8CControlC2Ev>:
	void RunMotor(uchar direction);
};

CControl::CControl()
{
  62:	f9 2f       	mov	r31, r25
  64:	e8 2f       	mov	r30, r24
	m_bCounter=0;
  66:	10 82       	st	Z, r1
  68:	08 95       	ret

0000006a <_ZN8CControlC1Ev>:
  6a:	f9 2f       	mov	r31, r25
  6c:	e8 2f       	mov	r30, r24
  6e:	10 82       	st	Z, r1
  70:	08 95       	ret

00000072 <_ZN8CControl7DelayMsEj>:

}

void CControl::RunMotor(uchar direction)
{
	if(direction==1)
	{
		SET_GRN_LED;
		CLR_RED_LED;
	}
	else if(direction==2)
	{
		CLR_GRN_LED;
		SET_RED_LED;
	}
	else
	{
		CLR_GRN_LED;
		CLR_RED_LED;
	}	

	for(uchar i=0;i<m_bCounter;i++)
	{
		while((PINB&_BV(0))==1);				
		while((PINB&_BV(0))==0);	
			
		if(direction==1)
		{
			PORTB|=_BV(PB3);
			DelayMs(2);
			PORTB&=~_BV(PB3);
		}
		else if(direction==2)
		{
			PORTB|=_BV(PB2);
			DelayMs(2);
			PORTB&=~_BV(PB2);
		}
		else
			PORTB=0;	
	}	
}

void CControl::DelayMs(uint ms)
{
	uint k=0;
	for(k=0;k<ms;k++)
  72:	61 15       	cp	r22, r1
  74:	71 05       	cpc	r23, r1
  76:	39 f0       	breq	.+14     	; 0x86
  78:	88 ee       	ldi	r24, 0xE8	; 232
  7a:	93 e0       	ldi	r25, 0x03	; 3
  7c:	01 97       	sbiw	r24, 0x01	; 1
  7e:	f1 f7       	brne	.-4      	; 0x7c
  80:	61 50       	subi	r22, 0x01	; 1
  82:	70 40       	sbci	r23, 0x00	; 0
  84:	f6 cf       	rjmp	.-20     	; 0x72
  86:	08 95       	ret

00000088 <_ZN8CControl8RunMotorEh>:
  88:	0f 93       	push	r16
  8a:	1f 93       	push	r17
  8c:	cf 93       	push	r28
  8e:	df 93       	push	r29
  90:	d9 2f       	mov	r29, r25
  92:	c8 2f       	mov	r28, r24
  94:	16 2f       	mov	r17, r22
  96:	61 30       	cpi	r22, 0x01	; 1
  98:	11 f4       	brne	.+4      	; 0x9e
  9a:	94 9a       	sbi	0x12, 4	; 18
  9c:	06 c0       	rjmp	.+12     	; 0xaa
  9e:	62 30       	cpi	r22, 0x02	; 2
  a0:	19 f4       	brne	.+6      	; 0xa8
  a2:	94 98       	cbi	0x12, 4	; 18
  a4:	95 9a       	sbi	0x12, 5	; 18
  a6:	02 c0       	rjmp	.+4      	; 0xac
  a8:	94 98       	cbi	0x12, 4	; 18
  aa:	95 98       	cbi	0x12, 5	; 18
  ac:	00 e0       	ldi	r16, 0x00	; 0
  ae:	88 81       	ld	r24, Y
  b0:	08 17       	cp	r16, r24
  b2:	48 f5       	brcc	.+82     	; 0x106
  b4:	86 b3       	in	r24, 0x16	; 22
  b6:	99 27       	eor	r25, r25
  b8:	81 70       	andi	r24, 0x01	; 1
  ba:	90 70       	andi	r25, 0x00	; 0
  bc:	88 23       	and	r24, r24
  be:	d1 f7       	brne	.-12     	; 0xb4
  c0:	21 e0       	ldi	r18, 0x01	; 1
  c2:	30 e0       	ldi	r19, 0x00	; 0
  c4:	86 b3       	in	r24, 0x16	; 22
  c6:	99 27       	eor	r25, r25
  c8:	82 27       	eor	r24, r18
  ca:	93 27       	eor	r25, r19
  cc:	81 70       	andi	r24, 0x01	; 1
  ce:	90 70       	andi	r25, 0x00	; 0
  d0:	88 23       	and	r24, r24
  d2:	c1 f7       	brne	.-16     	; 0xc4
  d4:	11 30       	cpi	r17, 0x01	; 1
  d6:	41 f4       	brne	.+16     	; 0xe8
  d8:	c3 9a       	sbi	0x18, 3	; 24
  da:	62 e0       	ldi	r22, 0x02	; 2
  dc:	70 e0       	ldi	r23, 0x00	; 0
  de:	8c 2f       	mov	r24, r28
  e0:	9d 2f       	mov	r25, r29
  e2:	c7 df       	rcall	.-114    	; 0x72
  e4:	c3 98       	cbi	0x18, 3	; 24
  e6:	0b c0       	rjmp	.+22     	; 0xfe
  e8:	12 30       	cpi	r17, 0x02	; 2
  ea:	41 f4       	brne	.+16     	; 0xfc
  ec:	c2 9a       	sbi	0x18, 2	; 24
  ee:	62 e0       	ldi	r22, 0x02	; 2
  f0:	70 e0       	ldi	r23, 0x00	; 0
  f2:	8c 2f       	mov	r24, r28
  f4:	9d 2f       	mov	r25, r29
  f6:	bd df       	rcall	.-134    	; 0x72
  f8:	c2 98       	cbi	0x18, 2	; 24
  fa:	01 c0       	rjmp	.+2      	; 0xfe
  fc:	88 bb       	out	0x18, r24	; 24
  fe:	0f 5f       	subi	r16, 0xFF	; 255
 100:	88 81       	ld	r24, Y
 102:	08 17       	cp	r16, r24
 104:	b8 f2       	brcs	.-82     	; 0xb4
 106:	df 91       	pop	r29
 108:	cf 91       	pop	r28
 10a:	1f 91       	pop	r17
 10c:	0f 91       	pop	r16
 10e:	08 95       	ret

00000110 <main>:
		_delay_loop_2(1000);
}

CControl g_oMotorCtl;

int main(void)
{
 110:	cf ed       	ldi	r28, 0xDF	; 223
 112:	d0 e0       	ldi	r29, 0x00	; 0
 114:	de bf       	out	0x3e, r29	; 62
 116:	cd bf       	out	0x3d, r28	; 61
	DDRD=_BV(4)|_BV(5); //发光管I/O初始化
 118:	80 e3       	ldi	r24, 0x30	; 48
 11a:	81 bb       	out	0x11, r24	; 17
	PORTD=0X00;
 11c:	12 ba       	out	0x12, r1	; 18
	
	PORTB=0;			//控制口I/O初始化
 11e:	18 ba       	out	0x18, r1	; 24
	DDRB=_BV(PB3)|_BV(PB2);
 120:	8c e0       	ldi	r24, 0x0C	; 12
 122:	87 bb       	out	0x17, r24	; 23

	g_oMotorCtl.m_bCounter=200;
 124:	88 ec       	ldi	r24, 0xC8	; 200
 126:	80 93 60 00 	sts	0x0060, r24

//	SET_GRN_LED;	 
	
	g_oMotorCtl.DelayMs(2000);
 12a:	60 ed       	ldi	r22, 0xD0	; 208
 12c:	77 e0       	ldi	r23, 0x07	; 7
 12e:	80 e6       	ldi	r24, 0x60	; 96
 130:	90 e0       	ldi	r25, 0x00	; 0
 132:	9f df       	rcall	.-194    	; 0x72
	
	while(1)
	{	
		g_oMotorCtl.RunMotor(1);
 134:	61 e0       	ldi	r22, 0x01	; 1
 136:	80 e6       	ldi	r24, 0x60	; 96
 138:	90 e0       	ldi	r25, 0x00	; 0
 13a:	a6 df       	rcall	.-180    	; 0x88
		g_oMotorCtl.RunMotor(0);
 13c:	60 e0       	ldi	r22, 0x00	; 0
 13e:	80 e6       	ldi	r24, 0x60	; 96
 140:	90 e0       	ldi	r25, 0x00	; 0
 142:	a2 df       	rcall	.-188    	; 0x88
		g_oMotorCtl.RunMotor(2);
 144:	62 e0       	ldi	r22, 0x02	; 2
 146:	80 e6       	ldi	r24, 0x60	; 96
 148:	90 e0       	ldi	r25, 0x00	; 0
 14a:	9e df       	rcall	.-196    	; 0x88
		g_oMotorCtl.RunMotor(0);
 14c:	60 e0       	ldi	r22, 0x00	; 0
 14e:	80 e6       	ldi	r24, 0x60	; 96
 150:	90 e0       	ldi	r25, 0x00	; 0
 152:	9a df       	rcall	.-204    	; 0x88
 154:	ef cf       	rjmp	.-34     	; 0x134

00000156 <_GLOBAL__I__ZN8CControlC2Ev>:
 156:	80 e6       	ldi	r24, 0x60	; 96
 158:	90 e0       	ldi	r25, 0x00	; 0
 15a:	87 df       	rcall	.-242    	; 0x6a
 15c:	08 95       	ret

0000015e <__tablejump2__>:
 15e:	ee 0f       	add	r30, r30
 160:	ff 1f       	adc	r31, r31

00000162 <__tablejump__>:
 162:	c8 95       	lpm
 164:	31 96       	adiw	r30, 0x01	; 1
 166:	0f 92       	push	r0
 168:	c8 95       	lpm
 16a:	0f 92       	push	r0
 16c:	08 95       	ret

⌨️ 快捷键说明

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