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

📄 main.lss

📁 原创ateml avr 单片机遥控器解码程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000f9e  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000002  00800060  00000f9e  00001032  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000021  00800062  00800062  00001034  2**0
                  ALLOC
  3 .noinit       00000000  00800083  00800083  00001034  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00001034  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  00001034  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  000013a0  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000014  00000000  00000000  00001424  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 000002ba  00000000  00000000  00001438  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00000687  00000000  00000000  000016f2  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 0000015c  00000000  00000000  00001d79  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   00000754  00000000  00000000  00001ed5  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    0000000d  00000000  00000000  00002629  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 b6 02 	jmp	0x56c <__vector_6>
  1c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  20:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  24:	0c 94 f3 03 	jmp	0x7e6 <__vector_9>
  28:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  2c:	0c 94 33 01 	jmp	0x266 <__vector_11>
  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:	d8 e0       	ldi	r29, 0x08	; 8
  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:	ee e9       	ldi	r30, 0x9E	; 158
  68:	ff e0       	ldi	r31, 0x0F	; 15
  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:	a2 36       	cpi	r26, 0x62	; 98
  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:	a2 e6       	ldi	r26, 0x62	; 98
  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:	a3 38       	cpi	r26, 0x83	; 131
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0c 94 22 05 	jmp	0xa44 <main>

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

0000008e <TIMER0Init>:
	//12:	传输截止码低电平			96190us


void TIMER0Init(void)
{	
  8e:	cf 93       	push	r28
  90:	df 93       	push	r29
  92:	cd b7       	in	r28, 0x3d	; 61
  94:	de b7       	in	r29, 0x3e	; 62
  96:	23 97       	sbiw	r28, 0x03	; 3
  98:	0f b6       	in	r0, 0x3f	; 63
  9a:	f8 94       	cli
  9c:	de bf       	out	0x3e, r29	; 62
  9e:	0f be       	out	0x3f, r0	; 63
  a0:	cd bf       	out	0x3d, r28	; 61
	BYTE i,j,k;
	
	SetPortIROutPut();							//遥控输出所使用的IO口设为输出
  a2:	80 91 31 00 	lds	r24, 0x0031
  a6:	80 62       	ori	r24, 0x20	; 32
  a8:	80 93 31 00 	sts	0x0031, r24
	SetPortIRHigh();							//设置遥控输出口为高电平
  ac:	80 91 32 00 	lds	r24, 0x0032
  b0:	80 62       	ori	r24, 0x20	; 32
  b2:	80 93 32 00 	sts	0x0032, r24
	TCNT_IR=0;//TCNT0=0;						//初始化T0计数器
  b6:	10 92 52 00 	sts	0x0052, r1

	//*******************************************设置T0的工作时钟频率是主频的几分之一  
	sbi(TCCR0,CS02);
  ba:	80 91 53 00 	lds	r24, 0x0053
  be:	84 60       	ori	r24, 0x04	; 4
  c0:	80 93 53 00 	sts	0x0053, r24
	cbi(TCCR0,CS01);
  c4:	80 91 53 00 	lds	r24, 0x0053
  c8:	8d 7f       	andi	r24, 0xFD	; 253
  ca:	80 93 53 00 	sts	0x0053, r24
	sbi(TCCR0,CS00);
  ce:	80 91 53 00 	lds	r24, 0x0053
  d2:	81 60       	ori	r24, 0x01	; 1
  d4:	80 93 53 00 	sts	0x0053, r24
	//*******************************************设置T0的工作时钟频率是主频的几分之一  
			
	sendIRstate=0;								//初始化遥控码发送状态
  d8:	10 92 77 00 	sts	0x0077, r1

	//********************************************计算第一次发送数据后低电平持续的时间  31.5MS--49.5MS
	j=IRCUSTOMCODEH;
  dc:	80 e1       	ldi	r24, 0x10	; 16
  de:	8a 83       	std	Y+2, r24	; 0x02
	k=0;
  e0:	1b 82       	std	Y+3, r1	; 0x03
	for(i=0;i<8;i++)
  e2:	19 82       	std	Y+1, r1	; 0x01
  e4:	89 81       	ldd	r24, Y+1	; 0x01
  e6:	88 30       	cpi	r24, 0x08	; 8
  e8:	68 f4       	brcc	.+26     	; 0x104 <TIMER0Init+0x76>
	{
		if(j&0x80)
  ea:	8a 81       	ldd	r24, Y+2	; 0x02
  ec:	88 23       	and	r24, r24
  ee:	1c f4       	brge	.+6      	; 0xf6 <TIMER0Init+0x68>
			k++;
  f0:	8b 81       	ldd	r24, Y+3	; 0x03
  f2:	8f 5f       	subi	r24, 0xFF	; 255
  f4:	8b 83       	std	Y+3, r24	; 0x03
		j<<=1;
  f6:	8a 81       	ldd	r24, Y+2	; 0x02
  f8:	88 0f       	add	r24, r24
  fa:	8a 83       	std	Y+2, r24	; 0x02
  fc:	89 81       	ldd	r24, Y+1	; 0x01
  fe:	8f 5f       	subi	r24, 0xFF	; 255
 100:	89 83       	std	Y+1, r24	; 0x01
 102:	f0 cf       	rjmp	.-32     	; 0xe4 <TIMER0Init+0x56>
	}
	j=IRCUSTOMCODEL;
 104:	8f ee       	ldi	r24, 0xEF	; 239
 106:	8a 83       	std	Y+2, r24	; 0x02
	for(i=0;i<8;i++)
 108:	19 82       	std	Y+1, r1	; 0x01
 10a:	89 81       	ldd	r24, Y+1	; 0x01
 10c:	88 30       	cpi	r24, 0x08	; 8
 10e:	68 f4       	brcc	.+26     	; 0x12a <TIMER0Init+0x9c>
	{
		if(j&0x80)
 110:	8a 81       	ldd	r24, Y+2	; 0x02
 112:	88 23       	and	r24, r24
 114:	1c f4       	brge	.+6      	; 0x11c <TIMER0Init+0x8e>
			k++;
 116:	8b 81       	ldd	r24, Y+3	; 0x03
 118:	8f 5f       	subi	r24, 0xFF	; 255
 11a:	8b 83       	std	Y+3, r24	; 0x03
		j<<=1;
 11c:	8a 81       	ldd	r24, Y+2	; 0x02
 11e:	88 0f       	add	r24, r24
 120:	8a 83       	std	Y+2, r24	; 0x02
 122:	89 81       	ldd	r24, Y+1	; 0x01
 124:	8f 5f       	subi	r24, 0xFF	; 255
 126:	89 83       	std	Y+1, r24	; 0x01
 128:	f0 cf       	rjmp	.-32     	; 0x10a <TIMER0Init+0x7c>
	}
	sendIRintervaltimecounttemp=TIMER0_108MS-TIMER0_9MS*4-TIMER0_4500US-TIMER0_560US*32-
 12a:	8b 81       	ldd	r24, Y+3	; 0x03
 12c:	28 2f       	mov	r18, r24
 12e:	33 27       	eor	r19, r19
 130:	c9 01       	movw	r24, r18
 132:	28 0f       	add	r18, r24
 134:	39 1f       	adc	r19, r25
 136:	89 e5       	ldi	r24, 0x59	; 89
 138:	90 e0       	ldi	r25, 0x00	; 0
 13a:	82 1b       	sub	r24, r18
 13c:	93 0b       	sbc	r25, r19
 13e:	90 93 72 00 	sts	0x0072, r25
 142:	80 93 71 00 	sts	0x0071, r24
 146:	23 96       	adiw	r28, 0x03	; 3
 148:	0f b6       	in	r0, 0x3f	; 63
 14a:	f8 94       	cli
 14c:	de bf       	out	0x3e, r29	; 62
 14e:	0f be       	out	0x3f, r0	; 63
 150:	cd bf       	out	0x3d, r28	; 61
 152:	df 91       	pop	r29
 154:	cf 91       	pop	r28
 156:	08 95       	ret

00000158 <SendIRCodeStart>:
									(TIMER0_1685US-TIMER0_560US)*k;				
	//*********************************************计算第一次发送数据后低电平持续的时间  31.5MS--49.5MS
}


//向遥控接收口发送一个遥控码IRdata,客户码高位是IRCUSTOMCODEH,客户码低位是IRCUSTOMCODEL

void SendIRCodeStart(BYTE IRdata)
{
 158:	cf 93       	push	r28
 15a:	df 93       	push	r29
 15c:	cd b7       	in	r28, 0x3d	; 61
 15e:	de b7       	in	r29, 0x3e	; 62
 160:	21 97       	sbiw	r28, 0x01	; 1
 162:	0f b6       	in	r0, 0x3f	; 63
 164:	f8 94       	cli
 166:	de bf       	out	0x3e, r29	; 62
 168:	0f be       	out	0x3f, r0	; 63
 16a:	cd bf       	out	0x3d, r28	; 61
 16c:	89 83       	std	Y+1, r24	; 0x01
	sendIRdata=IRdata;
 16e:	89 81       	ldd	r24, Y+1	; 0x01
 170:	80 93 82 00 	sts	0x0082, r24
	sendIRintervaltimecount=0;	
 174:	10 92 79 00 	sts	0x0079, r1
	sendIRstate=1;
 178:	81 e0       	ldi	r24, 0x01	; 1
 17a:	80 93 77 00 	sts	0x0077, r24
	TCNT_IR=0;
 17e:	10 92 52 00 	sts	0x0052, r1
	sbi(TIMSK,TOV0);//TIMSK |=0x01;									//T0中断允许
 182:	80 91 59 00 	lds	r24, 0x0059
 186:	81 60       	ori	r24, 0x01	; 1
 188:	80 93 59 00 	sts	0x0059, r24
 18c:	21 96       	adiw	r28, 0x01	; 1
 18e:	0f b6       	in	r0, 0x3f	; 63
 190:	f8 94       	cli
 192:	de bf       	out	0x3e, r29	; 62
 194:	0f be       	out	0x3f, r0	; 63
 196:	cd bf       	out	0x3d, r28	; 61
 198:	df 91       	pop	r29
 19a:	cf 91       	pop	r28
 19c:	08 95       	ret

0000019e <SendIRCodeStop>:
}


//停止发送遥控码
void SendIRCodeStop(void)
{
 19e:	cf 93       	push	r28
 1a0:	df 93       	push	r29
 1a2:	cd b7       	in	r28, 0x3d	; 61
 1a4:	de b7       	in	r29, 0x3e	; 62
	sendIRstate=0;
 1a6:	10 92 77 00 	sts	0x0077, r1
	SetPortIRHigh();
 1aa:	80 91 32 00 	lds	r24, 0x0032
 1ae:	80 62       	ori	r24, 0x20	; 32
 1b0:	80 93 32 00 	sts	0x0032, r24
	cbi(TIMSK,TOV0); //TIMSK &=0xFE;								//T0中断关闭
 1b4:	80 91 59 00 	lds	r24, 0x0059
 1b8:	8e 7f       	andi	r24, 0xFE	; 254
 1ba:	80 93 59 00 	sts	0x0059, r24
 1be:	df 91       	pop	r29
 1c0:	cf 91       	pop	r28
 1c2:	08 95       	ret

000001c4 <SendIRByte>:
}

//向遥控接收口发送一个字节数据
void SendIRByte(BYTE data)
{
 1c4:	cf 93       	push	r28
 1c6:	df 93       	push	r29
 1c8:	cd b7       	in	r28, 0x3d	; 61
 1ca:	de b7       	in	r29, 0x3e	; 62
 1cc:	21 97       	sbiw	r28, 0x01	; 1
 1ce:	0f b6       	in	r0, 0x3f	; 63
 1d0:	f8 94       	cli
 1d2:	de bf       	out	0x3e, r29	; 62
 1d4:	0f be       	out	0x3f, r0	; 63
 1d6:	cd bf       	out	0x3d, r28	; 61
 1d8:	89 83       	std	Y+1, r24	; 0x01
	if(sendIRbitcount==0)
 1da:	80 91 73 00 	lds	r24, 0x0073
 1de:	88 23       	and	r24, r24
 1e0:	31 f4       	brne	.+12     	; 0x1ee <SendIRByte+0x2a>
	{
		sendIRbitcount=16;
 1e2:	80 e1       	ldi	r24, 0x10	; 16
 1e4:	80 93 73 00 	sts	0x0073, r24
		sendIRdatatemp=data;
 1e8:	89 81       	ldd	r24, Y+1	; 0x01
 1ea:	80 93 76 00 	sts	0x0076, r24
	}	
	if(sendIRbitcount&0x01)
 1ee:	80 91 73 00 	lds	r24, 0x0073
 1f2:	99 27       	eor	r25, r25
 1f4:	81 70       	andi	r24, 0x01	; 1
 1f6:	90 70       	andi	r25, 0x00	; 0
 1f8:	00 97       	sbiw	r24, 0x00	; 0
 1fa:	b1 f0       	breq	.+44     	; 0x228 <SendIRByte+0x64>
	{	
		SetPortIRHigh();
 1fc:	80 91 32 00 	lds	r24, 0x0032
 200:	80 62       	ori	r24, 0x20	; 32
 202:	80 93 32 00 	sts	0x0032, r24
		if(sendIRdatatemp&0x80)
 206:	80 91 76 00 	lds	r24, 0x0076
 20a:	88 23       	and	r24, r24
 20c:	24 f4       	brge	.+8      	; 0x216 <SendIRByte+0x52>
			sendIRintervaltimecount=TIMER0_1685US;
 20e:	83 e0       	ldi	r24, 0x03	; 3
 210:	80 93 79 00 	sts	0x0079, r24
 214:	03 c0       	rjmp	.+6      	; 0x21c <SendIRByte+0x58>
		else
			sendIRintervaltimecount=TIMER0_560US;
 216:	81 e0       	ldi	r24, 0x01	; 1
 218:	80 93 79 00 	sts	0x0079, r24
		sendIRdatatemp<<=1;
 21c:	80 91 76 00 	lds	r24, 0x0076
 220:	88 0f       	add	r24, r24
 222:	80 93 76 00 	sts	0x0076, r24
 226:	08 c0       	rjmp	.+16     	; 0x238 <SendIRByte+0x74>
	}
	else
	{					
		SetPortIRLow();
 228:	80 91 32 00 	lds	r24, 0x0032
 22c:	8f 7d       	andi	r24, 0xDF	; 223
 22e:	80 93 32 00 	sts	0x0032, r24
		sendIRintervaltimecount=TIMER0_560US;
 232:	81 e0       	ldi	r24, 0x01	; 1
 234:	80 93 79 00 	sts	0x0079, r24
	}
	sendIRbitcount--;
 238:	80 91 73 00 	lds	r24, 0x0073
 23c:	81 50       	subi	r24, 0x01	; 1
 23e:	80 93 73 00 	sts	0x0073, r24
	if(sendIRbitcount==0)
 242:	80 91 73 00 	lds	r24, 0x0073
 246:	88 23       	and	r24, r24
 248:	29 f4       	brne	.+10     	; 0x254 <SendIRByte+0x90>
		sendIRstate++;
 24a:	80 91 77 00 	lds	r24, 0x0077
 24e:	8f 5f       	subi	r24, 0xFF	; 255
 250:	80 93 77 00 	sts	0x0077, r24
 254:	21 96       	adiw	r28, 0x01	; 1
 256:	0f b6       	in	r0, 0x3f	; 63
 258:	f8 94       	cli
 25a:	de bf       	out	0x3e, r29	; 62
 25c:	0f be       	out	0x3f, r0	; 63
 25e:	cd bf       	out	0x3d, r28	; 61
 260:	df 91       	pop	r29
 262:	cf 91       	pop	r28
 264:	08 95       	ret

00000266 <__vector_11>:
}

⌨️ 快捷键说明

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