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

📄 main.lss

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


	//sendIRstate
	//1:	传输引导码高电平			9ms
	//2:	传输引导码低电平			4.5ms
	//3:	传输客户码高位
	//4:	传输客户码低位		3+4=	18-27ms
	//5:	传输遥控码高位
	//6:	传输遥控码低位		5+6 =	27ms
	//7:	传输截止码高电平			560us
	//8:	传输截止码低电平			31.5MS--49.5MS
	
	//9:	传输重复发送引导码高电平	9ms
	//10:	传输重复发送引导码高电平	2.25ms
	//11:	传输截止码高电平			560us
	//12:	传输截止码低电平			96190us
ISR(TIMER0_OVF_vect)
{
 266:	1f 92       	push	r1
 268:	0f 92       	push	r0
 26a:	0f b6       	in	r0, 0x3f	; 63
 26c:	0f 92       	push	r0
 26e:	11 24       	eor	r1, r1
 270:	2f 93       	push	r18
 272:	3f 93       	push	r19
 274:	4f 93       	push	r20
 276:	5f 93       	push	r21
 278:	6f 93       	push	r22
 27a:	7f 93       	push	r23
 27c:	8f 93       	push	r24
 27e:	9f 93       	push	r25
 280:	af 93       	push	r26
 282:	bf 93       	push	r27
 284:	ef 93       	push	r30
 286:	ff 93       	push	r31
 288:	cf 93       	push	r28
 28a:	df 93       	push	r29
 28c:	cd b7       	in	r28, 0x3d	; 61
 28e:	de b7       	in	r29, 0x3e	; 62
 290:	22 97       	sbiw	r28, 0x02	; 2
 292:	de bf       	out	0x3e, r29	; 62
 294:	cd bf       	out	0x3d, r28	; 61
	TCNT0=TCNT0_560US;
 296:	8a ef       	ldi	r24, 0xFA	; 250
 298:	80 93 52 00 	sts	0x0052, r24
	if(sendIRstate!=0)
 29c:	80 91 77 00 	lds	r24, 0x0077
 2a0:	88 23       	and	r24, r24
 2a2:	09 f4       	brne	.+2      	; 0x2a6 <__vector_11+0x40>
 2a4:	ce c0       	rjmp	.+412    	; 0x442 <__vector_11+0x1dc>
	{
		sendIRintervaltimecount--;
 2a6:	80 91 79 00 	lds	r24, 0x0079
 2aa:	81 50       	subi	r24, 0x01	; 1
 2ac:	80 93 79 00 	sts	0x0079, r24
		if(sendIRintervaltimecount==0)
 2b0:	80 91 79 00 	lds	r24, 0x0079
 2b4:	88 23       	and	r24, r24
 2b6:	09 f0       	breq	.+2      	; 0x2ba <__vector_11+0x54>
 2b8:	c4 c0       	rjmp	.+392    	; 0x442 <__vector_11+0x1dc>
		{
			switch(sendIRstate)
 2ba:	80 91 77 00 	lds	r24, 0x0077
 2be:	28 2f       	mov	r18, r24
 2c0:	33 27       	eor	r19, r19
 2c2:	3a 83       	std	Y+2, r19	; 0x02
 2c4:	29 83       	std	Y+1, r18	; 0x01
 2c6:	89 81       	ldd	r24, Y+1	; 0x01
 2c8:	9a 81       	ldd	r25, Y+2	; 0x02
 2ca:	86 30       	cpi	r24, 0x06	; 6
 2cc:	91 05       	cpc	r25, r1
 2ce:	09 f4       	brne	.+2      	; 0x2d2 <__vector_11+0x6c>
 2d0:	7c c0       	rjmp	.+248    	; 0x3ca <__vector_11+0x164>
 2d2:	29 81       	ldd	r18, Y+1	; 0x01
 2d4:	3a 81       	ldd	r19, Y+2	; 0x02
 2d6:	27 30       	cpi	r18, 0x07	; 7
 2d8:	31 05       	cpc	r19, r1
 2da:	2c f5       	brge	.+74     	; 0x326 <__vector_11+0xc0>
 2dc:	89 81       	ldd	r24, Y+1	; 0x01
 2de:	9a 81       	ldd	r25, Y+2	; 0x02
 2e0:	83 30       	cpi	r24, 0x03	; 3
 2e2:	91 05       	cpc	r25, r1
 2e4:	09 f4       	brne	.+2      	; 0x2e8 <__vector_11+0x82>
 2e6:	64 c0       	rjmp	.+200    	; 0x3b0 <__vector_11+0x14a>
 2e8:	29 81       	ldd	r18, Y+1	; 0x01
 2ea:	3a 81       	ldd	r19, Y+2	; 0x02
 2ec:	24 30       	cpi	r18, 0x04	; 4
 2ee:	31 05       	cpc	r19, r1
 2f0:	6c f4       	brge	.+26     	; 0x30c <__vector_11+0xa6>
 2f2:	89 81       	ldd	r24, Y+1	; 0x01
 2f4:	9a 81       	ldd	r25, Y+2	; 0x02
 2f6:	81 30       	cpi	r24, 0x01	; 1
 2f8:	91 05       	cpc	r25, r1
 2fa:	09 f4       	brne	.+2      	; 0x2fe <__vector_11+0x98>
 2fc:	3d c0       	rjmp	.+122    	; 0x378 <__vector_11+0x112>
 2fe:	29 81       	ldd	r18, Y+1	; 0x01
 300:	3a 81       	ldd	r19, Y+2	; 0x02
 302:	22 30       	cpi	r18, 0x02	; 2
 304:	31 05       	cpc	r19, r1
 306:	09 f4       	brne	.+2      	; 0x30a <__vector_11+0xa4>
 308:	45 c0       	rjmp	.+138    	; 0x394 <__vector_11+0x12e>
 30a:	9b c0       	rjmp	.+310    	; 0x442 <__vector_11+0x1dc>
 30c:	89 81       	ldd	r24, Y+1	; 0x01
 30e:	9a 81       	ldd	r25, Y+2	; 0x02
 310:	84 30       	cpi	r24, 0x04	; 4
 312:	91 05       	cpc	r25, r1
 314:	09 f4       	brne	.+2      	; 0x318 <__vector_11+0xb2>
 316:	50 c0       	rjmp	.+160    	; 0x3b8 <__vector_11+0x152>
 318:	29 81       	ldd	r18, Y+1	; 0x01
 31a:	3a 81       	ldd	r19, Y+2	; 0x02
 31c:	25 30       	cpi	r18, 0x05	; 5
 31e:	31 05       	cpc	r19, r1
 320:	09 f4       	brne	.+2      	; 0x324 <__vector_11+0xbe>
 322:	4e c0       	rjmp	.+156    	; 0x3c0 <__vector_11+0x15a>
 324:	8e c0       	rjmp	.+284    	; 0x442 <__vector_11+0x1dc>
 326:	89 81       	ldd	r24, Y+1	; 0x01
 328:	9a 81       	ldd	r25, Y+2	; 0x02
 32a:	89 30       	cpi	r24, 0x09	; 9
 32c:	91 05       	cpc	r25, r1
 32e:	21 f1       	breq	.+72     	; 0x378 <__vector_11+0x112>
 330:	29 81       	ldd	r18, Y+1	; 0x01
 332:	3a 81       	ldd	r19, Y+2	; 0x02
 334:	2a 30       	cpi	r18, 0x0A	; 10
 336:	31 05       	cpc	r19, r1
 338:	6c f4       	brge	.+26     	; 0x354 <__vector_11+0xee>
 33a:	89 81       	ldd	r24, Y+1	; 0x01
 33c:	9a 81       	ldd	r25, Y+2	; 0x02
 33e:	87 30       	cpi	r24, 0x07	; 7
 340:	91 05       	cpc	r25, r1
 342:	09 f4       	brne	.+2      	; 0x346 <__vector_11+0xe0>
 344:	48 c0       	rjmp	.+144    	; 0x3d6 <__vector_11+0x170>
 346:	29 81       	ldd	r18, Y+1	; 0x01
 348:	3a 81       	ldd	r19, Y+2	; 0x02
 34a:	28 30       	cpi	r18, 0x08	; 8
 34c:	31 05       	cpc	r19, r1
 34e:	09 f4       	brne	.+2      	; 0x352 <__vector_11+0xec>
 350:	50 c0       	rjmp	.+160    	; 0x3f2 <__vector_11+0x18c>
 352:	77 c0       	rjmp	.+238    	; 0x442 <__vector_11+0x1dc>
 354:	89 81       	ldd	r24, Y+1	; 0x01
 356:	9a 81       	ldd	r25, Y+2	; 0x02
 358:	8b 30       	cpi	r24, 0x0B	; 11
 35a:	91 05       	cpc	r25, r1
 35c:	e1 f1       	breq	.+120    	; 0x3d6 <__vector_11+0x170>
 35e:	29 81       	ldd	r18, Y+1	; 0x01
 360:	3a 81       	ldd	r19, Y+2	; 0x02
 362:	2b 30       	cpi	r18, 0x0B	; 11
 364:	31 05       	cpc	r19, r1
 366:	0c f4       	brge	.+2      	; 0x36a <__vector_11+0x104>
 368:	53 c0       	rjmp	.+166    	; 0x410 <__vector_11+0x1aa>
 36a:	89 81       	ldd	r24, Y+1	; 0x01
 36c:	9a 81       	ldd	r25, Y+2	; 0x02
 36e:	8c 30       	cpi	r24, 0x0C	; 12
 370:	91 05       	cpc	r25, r1
 372:	09 f4       	brne	.+2      	; 0x376 <__vector_11+0x110>
 374:	5b c0       	rjmp	.+182    	; 0x42c <__vector_11+0x1c6>
 376:	65 c0       	rjmp	.+202    	; 0x442 <__vector_11+0x1dc>
			{

				case 1:
				case 9:
					SetPortIRLow();
 378:	80 91 32 00 	lds	r24, 0x0032
 37c:	8f 7d       	andi	r24, 0xDF	; 223
 37e:	80 93 32 00 	sts	0x0032, r24
					sendIRintervaltimecount=TIMER0_9MS;
 382:	80 e1       	ldi	r24, 0x10	; 16
 384:	80 93 79 00 	sts	0x0079, r24
					sendIRstate++;
 388:	80 91 77 00 	lds	r24, 0x0077
 38c:	8f 5f       	subi	r24, 0xFF	; 255
 38e:	80 93 77 00 	sts	0x0077, r24
					break;
 392:	57 c0       	rjmp	.+174    	; 0x442 <__vector_11+0x1dc>
				case 2:
					SetPortIRHigh();
 394:	80 91 32 00 	lds	r24, 0x0032
 398:	80 62       	ori	r24, 0x20	; 32
 39a:	80 93 32 00 	sts	0x0032, r24
					sendIRintervaltimecount=TIMER0_4500US;
 39e:	88 e0       	ldi	r24, 0x08	; 8
 3a0:	80 93 79 00 	sts	0x0079, r24
					sendIRstate++;
 3a4:	80 91 77 00 	lds	r24, 0x0077
 3a8:	8f 5f       	subi	r24, 0xFF	; 255
 3aa:	80 93 77 00 	sts	0x0077, r24
					break;
 3ae:	49 c0       	rjmp	.+146    	; 0x442 <__vector_11+0x1dc>
				case 3:
					SendIRByte(IRCUSTOMCODEH);
 3b0:	80 e1       	ldi	r24, 0x10	; 16
 3b2:	0e 94 e2 00 	call	0x1c4 <SendIRByte>
					break;
 3b6:	45 c0       	rjmp	.+138    	; 0x442 <__vector_11+0x1dc>
				case 4:
					SendIRByte(IRCUSTOMCODEL);
 3b8:	8f ee       	ldi	r24, 0xEF	; 239
 3ba:	0e 94 e2 00 	call	0x1c4 <SendIRByte>
					break;
 3be:	41 c0       	rjmp	.+130    	; 0x442 <__vector_11+0x1dc>
				case 5:
					SendIRByte(sendIRdata);
 3c0:	80 91 82 00 	lds	r24, 0x0082
 3c4:	0e 94 e2 00 	call	0x1c4 <SendIRByte>
					break;
 3c8:	3c c0       	rjmp	.+120    	; 0x442 <__vector_11+0x1dc>
				case 6:
					SendIRByte(~sendIRdata);
 3ca:	80 91 82 00 	lds	r24, 0x0082
 3ce:	80 95       	com	r24
 3d0:	0e 94 e2 00 	call	0x1c4 <SendIRByte>
					break;
 3d4:	36 c0       	rjmp	.+108    	; 0x442 <__vector_11+0x1dc>
				case 7:	
				case 11:		
					SetPortIRLow();
 3d6:	80 91 32 00 	lds	r24, 0x0032
 3da:	8f 7d       	andi	r24, 0xDF	; 223
 3dc:	80 93 32 00 	sts	0x0032, r24
					sendIRintervaltimecount=TIMER0_560US;
 3e0:	81 e0       	ldi	r24, 0x01	; 1
 3e2:	80 93 79 00 	sts	0x0079, r24
					sendIRstate++;
 3e6:	80 91 77 00 	lds	r24, 0x0077
 3ea:	8f 5f       	subi	r24, 0xFF	; 255
 3ec:	80 93 77 00 	sts	0x0077, r24
					break;
 3f0:	28 c0       	rjmp	.+80     	; 0x442 <__vector_11+0x1dc>
				case 8:		
					SetPortIRHigh();
 3f2:	80 91 32 00 	lds	r24, 0x0032
 3f6:	80 62       	ori	r24, 0x20	; 32
 3f8:	80 93 32 00 	sts	0x0032, r24
					sendIRintervaltimecount=sendIRintervaltimecounttemp;
 3fc:	80 91 71 00 	lds	r24, 0x0071
 400:	80 93 79 00 	sts	0x0079, r24
					sendIRstate++;
 404:	80 91 77 00 	lds	r24, 0x0077
 408:	8f 5f       	subi	r24, 0xFF	; 255
 40a:	80 93 77 00 	sts	0x0077, r24
					break;
 40e:	19 c0       	rjmp	.+50     	; 0x442 <__vector_11+0x1dc>
					
				case 10:		
					SetPortIRHigh();
 410:	80 91 32 00 	lds	r24, 0x0032
 414:	80 62       	ori	r24, 0x20	; 32
 416:	80 93 32 00 	sts	0x0032, r24
					sendIRintervaltimecount=TIMER0_2250US;
 41a:	84 e0       	ldi	r24, 0x04	; 4
 41c:	80 93 79 00 	sts	0x0079, r24
					sendIRstate++;
 420:	80 91 77 00 	lds	r24, 0x0077
 424:	8f 5f       	subi	r24, 0xFF	; 255
 426:	80 93 77 00 	sts	0x0077, r24
					break;
 42a:	0b c0       	rjmp	.+22     	; 0x442 <__vector_11+0x1dc>
				case 12:		
					SetPortIRHigh();
 42c:	80 91 32 00 	lds	r24, 0x0032
 430:	80 62       	ori	r24, 0x20	; 32
 432:	80 93 32 00 	sts	0x0032, r24
					sendIRintervaltimecount=TIMER0_96190us;
 436:	8c ea       	ldi	r24, 0xAC	; 172
 438:	80 93 79 00 	sts	0x0079, r24
					sendIRstate=9;								//重复发送
 43c:	89 e0       	ldi	r24, 0x09	; 9
 43e:	80 93 77 00 	sts	0x0077, r24
 442:	22 96       	adiw	r28, 0x02	; 2
 444:	f8 94       	cli
 446:	de bf       	out	0x3e, r29	; 62
 448:	cd bf       	out	0x3d, r28	; 61
 44a:	df 91       	pop	r29
 44c:	cf 91       	pop	r28
 44e:	ff 91       	pop	r31
 450:	ef 91       	pop	r30
 452:	bf 91       	pop	r27
 454:	af 91       	pop	r26
 456:	9f 91       	pop	r25
 458:	8f 91       	pop	r24
 45a:	7f 91       	pop	r23
 45c:	6f 91       	pop	r22
 45e:	5f 91       	pop	r21
 460:	4f 91       	pop	r20
 462:	3f 91       	pop	r19
 464:	2f 91       	pop	r18
 466:	0f 90       	pop	r0
 468:	0f be       	out	0x3f, r0	; 63
 46a:	0f 90       	pop	r0
 46c:	1f 90       	pop	r1
 46e:	18 95       	reti

00000470 <ir_get_bit>:
BYTE irKeyRptTimes;


static void ir_get_bit(char bit)
{	
 470:	cf 93       	push	r28
 472:	df 93       	push	r29
 474:	cd b7       	in	r28, 0x3d	; 61
 476:	de b7       	in	r29, 0x3e	; 62
 478:	21 97       	sbiw	r28, 0x01	; 1
 47a:	0f b6       	in	r0, 0x3f	; 63
 47c:	f8 94       	cli
 47e:	de bf       	out	0x3e, r29	; 62
 480:	0f be       	out	0x3f, r0	; 63
 482:	cd bf       	out	0x3d, r28	; 61
 484:	89 83       	std	Y+1, r24	; 0x01
	irDataBuff[irByteIndex]<<=1;
 486:	80 91 69 00 	lds	r24, 0x0069
 48a:	99 27       	eor	r25, r25
 48c:	dc 01       	movw	r26, r24
 48e:	a3 59       	subi	r26, 0x93	; 147
 490:	bf 4f       	sbci	r27, 0xFF	; 255
 492:	80 91 69 00 	lds	r24, 0x0069
 496:	99 27       	eor	r25, r25
 498:	fc 01       	movw	r30, r24
 49a:	e3 59       	subi	r30, 0x93	; 147
 49c:	ff 4f       	sbci	r31, 0xFF	; 255
 49e:	80 81       	ld	r24, Z
 4a0:	88 0f       	add	r24, r24
 4a2:	8c 93       	st	X, r24
	if(bit)
 4a4:	89 81       	ldd	r24, Y+1	; 0x01
 4a6:	88 23       	and	r24, r24
 4a8:	81 f0       	breq	.+32     	; 0x4ca <ir_get_bit+0x5a>
		irDataBuff[irByteIndex] |= 1;
 4aa:	80 91 69 00 	lds	r24, 0x0069
 4ae:	99 27       	eor	r25, r25
 4b0:	dc 01       	movw	r26, r24
 4b2:	a3 59       	subi	r26, 0x93	; 147
 4b4:	bf 4f       	sbci	r27, 0xFF	; 255
 4b6:	80 91 69 00 	lds	r24, 0x0069
 4ba:	99 27       	eor	r25, r25
 4bc:	fc 01       	movw	r30, r24
 4be:	e3 59       	subi	r30, 0x93	; 147
 4c0:	ff 4f       	sbci	r31, 0xFF	; 255
 4c2:	80 81       	ld	r24, Z
 4c4:	81 60       	ori	r24, 0x01	; 1
 4c6:	8c 93       	st	X, r24
 4c8:	10 c0       	rjmp	.+32     	; 0x4ea <ir_get_bit+0x7a>
	else
		irDataBuff[irByteIndex] &= 0xFE;
 4ca:	80 91 69 00 	lds	r24, 0x0069
 4ce:	99 27       	eor	r25, r25
 4d0:	dc 01       	movw	r26, r24
 4d2:	a3 59       	subi	r26, 0x93	; 147
 4d4:	bf 4f       	sbci	r27, 0xFF	; 255
 4d6:	80 91 69 00 	lds	r24, 0x0069
 4da:	99 27       	eor	r25, r25
 4dc:	fc 01       	movw	r30, r24
 4de:	e3 59       	subi	r30, 0x93	; 147
 4e0:	ff 4f       	sbci	r31, 0xFF	; 255
 4e2:	9e ef       	ldi	r25, 0xFE	; 254
 4e4:	80 81       	ld	r24, Z
 4e6:	89 23       	and	r24, r25
 4e8:	8c 93       	st	X, r24
	irBitIndex++;
 4ea:	80 91 6a 00 	lds	r24, 0x006A
 4ee:	8f 5f       	subi	r24, 0xFF	; 255
 4f0:	80 93 6a 00 	sts	0x006A, r24
	if(irBitIndex%8==0)
 4f4:	80 91 6a 00 	lds	r24, 0x006A
 4f8:	87 70       	andi	r24, 0x07	; 7
 4fa:	88 23       	and	r24, r24
 4fc:	29 f4       	brne	.+10     	; 0x508 <ir_get_bit+0x98>
		irByteIndex++;
 4fe:	80 91 69 00 	lds	r24, 0x0069
 502:	8f 5f       	subi	r24, 0xFF	; 255
 504:	80 93 69 00 	sts	0x0069, r24
	if(irBitIndex==32)//累计到32个,则发送遥控器接收完成标志
 508:	80 91 6a 00 	lds	r24, 0x006A
 50c:	80 32       	cpi	r24, 0x20	; 32
 50e:	29 f5       	brne	.+74     	; 0x55a <ir_get_bit+0xea>
	{
		if(irDataBuff[0]==REMOTE_ADDR&&irDataBuff[2]==~irDataBuff[3])//厂家码校验
 510:	80 91 6d 00 	lds	r24, 0x006D
 514:	80 31       	cpi	r24, 0x10	; 16
 516:	f9 f4       	brne	.+62     	; 0x556 <ir_get_bit+0xe6>
 518:	80 91 6f 00 	lds	r24, 0x006F
 51c:	28 2f       	mov	r18, r24
 51e:	33 27       	eor	r19, r19
 520:	80 91 70 00 	lds	r24, 0x0070
 524:	99 27       	eor	r25, r25
 526:	80 95       	com	r24
 528:	90 95       	com	r25
 52a:	28 17       	cp	r18, r24
 52c:	39 07       	cpc	r19, r25

⌨️ 快捷键说明

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