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

📄 winctrler.lss

📁 一个使用AVR单片机控制直流马达的程序
💻 LSS
📖 第 1 页 / 共 2 页
字号:
 292:	69 f4       	brne	.+26     	; 0x2ae <main+0xc6>
 294:	80 91 08 01 	lds	r24, 0x0108
 298:	8d 7f       	andi	r24, 0xFD	; 253
 29a:	80 93 08 01 	sts	0x0108, r24
 29e:	84 e0       	ldi	r24, 0x04	; 4
 2a0:	80 93 09 01 	sts	0x0109, r24
 2a4:	80 91 08 01 	lds	r24, 0x0108
 2a8:	84 60       	ori	r24, 0x04	; 4
 2aa:	80 93 08 01 	sts	0x0108, r24
 2ae:	80 91 08 01 	lds	r24, 0x0108
 2b2:	80 ff       	sbrs	r24, 0
 2b4:	3f c0       	rjmp	.+126    	; 0x334 <__stack+0x35>
 2b6:	80 91 08 01 	lds	r24, 0x0108
 2ba:	8e 7f       	andi	r24, 0xFE	; 254
 2bc:	80 93 08 01 	sts	0x0108, r24
 2c0:	80 91 06 01 	lds	r24, 0x0106
 2c4:	88 23       	and	r24, r24
 2c6:	29 f0       	breq	.+10     	; 0x2d2 <main+0xea>
 2c8:	80 91 06 01 	lds	r24, 0x0106
 2cc:	81 50       	subi	r24, 0x01	; 1
 2ce:	80 93 06 01 	sts	0x0106, r24
 2d2:	35 9b       	sbis	0x06, 5	; 6
 2d4:	03 c0       	rjmp	.+6      	; 0x2dc <main+0xf4>
 2d6:	10 92 03 01 	sts	0x0103, r1
 2da:	03 c0       	rjmp	.+6      	; 0x2e2 <main+0xfa>
 2dc:	82 e0       	ldi	r24, 0x02	; 2
 2de:	80 93 03 01 	sts	0x0103, r24
 2e2:	80 91 08 01 	lds	r24, 0x0108
 2e6:	81 fd       	sbrc	r24, 1
 2e8:	16 c0       	rjmp	.+44     	; 0x316 <__stack+0x17>
 2ea:	33 99       	sbic	0x06, 3	; 6
 2ec:	06 c0       	rjmp	.+12     	; 0x2fa <main+0x112>
 2ee:	81 e0       	ldi	r24, 0x01	; 1
 2f0:	80 93 09 01 	sts	0x0109, r24
 2f4:	82 e0       	ldi	r24, 0x02	; 2
 2f6:	80 93 05 01 	sts	0x0105, r24
 2fa:	34 99       	sbic	0x06, 4	; 6
 2fc:	05 c0       	rjmp	.+10     	; 0x308 <__stack+0x9>
 2fe:	82 e0       	ldi	r24, 0x02	; 2
 300:	80 93 09 01 	sts	0x0109, r24
 304:	80 93 05 01 	sts	0x0105, r24
 308:	33 9b       	sbis	0x06, 3	; 6
 30a:	05 c0       	rjmp	.+10     	; 0x316 <__stack+0x17>
 30c:	34 9b       	sbis	0x06, 4	; 6
 30e:	03 c0       	rjmp	.+6      	; 0x316 <__stack+0x17>
 310:	84 e0       	ldi	r24, 0x04	; 4
 312:	80 93 09 01 	sts	0x0109, r24
 316:	80 91 05 01 	lds	r24, 0x0105
 31a:	88 23       	and	r24, r24
 31c:	31 f0       	breq	.+12     	; 0x32a <__stack+0x2b>
 31e:	80 91 05 01 	lds	r24, 0x0105
 322:	81 50       	subi	r24, 0x01	; 1
 324:	80 93 05 01 	sts	0x0105, r24
 328:	05 c0       	rjmp	.+10     	; 0x334 <__stack+0x35>
 32a:	80 91 08 01 	lds	r24, 0x0108
 32e:	84 60       	ori	r24, 0x04	; 4
 330:	80 93 08 01 	sts	0x0108, r24
 334:	32 99       	sbic	0x06, 2	; 6
 336:	08 c0       	rjmp	.+16     	; 0x348 <__stack+0x49>
 338:	84 e0       	ldi	r24, 0x04	; 4
 33a:	80 93 09 01 	sts	0x0109, r24
 33e:	80 91 08 01 	lds	r24, 0x0108
 342:	84 60       	ori	r24, 0x04	; 4
 344:	80 93 08 01 	sts	0x0108, r24
 348:	80 91 09 01 	lds	r24, 0x0109
 34c:	88 23       	and	r24, r24
 34e:	29 f0       	breq	.+10     	; 0x35a <__stack+0x5b>
 350:	80 91 09 01 	lds	r24, 0x0109
 354:	af de       	rcall	.-674    	; 0xb4 <MotoDriver>
 356:	80 93 09 01 	sts	0x0109, r24
 35a:	80 91 08 01 	lds	r24, 0x0108
 35e:	82 fd       	sbrc	r24, 2
 360:	eb de       	rcall	.-554    	; 0x138 <EnPowerDownMode>
 362:	88 95       	sleep
 364:	71 cf       	rjmp	.-286    	; 0x248 <main+0x60>

00000366 <__vector_16>:
 366:	1f 92       	push	r1
 368:	0f 92       	push	r0
 36a:	0f b6       	in	r0, 0x3f	; 63
 36c:	0f 92       	push	r0
 36e:	11 24       	eor	r1, r1
 370:	8f 93       	push	r24
 372:	8f ef       	ldi	r24, 0xFF	; 255
 374:	86 bd       	out	0x26, r24	; 38
 376:	80 91 07 01 	lds	r24, 0x0107
 37a:	8f 5f       	subi	r24, 0xFF	; 255
 37c:	80 93 07 01 	sts	0x0107, r24
 380:	80 91 07 01 	lds	r24, 0x0107
 384:	8a 30       	cpi	r24, 0x0A	; 10
 386:	38 f0       	brcs	.+14     	; 0x396 <__vector_16+0x30>
 388:	80 91 08 01 	lds	r24, 0x0108
 38c:	81 60       	ori	r24, 0x01	; 1
 38e:	80 93 08 01 	sts	0x0108, r24
 392:	10 92 07 01 	sts	0x0107, r1
 396:	8f 91       	pop	r24
 398:	0f 90       	pop	r0
 39a:	0f be       	out	0x3f, r0	; 63
 39c:	0f 90       	pop	r0
 39e:	1f 90       	pop	r1
 3a0:	18 95       	reti

000003a2 <__vector_1>:
 3a2:	1f 92       	push	r1
 3a4:	0f 92       	push	r0
 3a6:	0f b6       	in	r0, 0x3f	; 63
 3a8:	0f 92       	push	r0
 3aa:	11 24       	eor	r1, r1
 3ac:	0f 90       	pop	r0
 3ae:	0f be       	out	0x3f, r0	; 63
 3b0:	0f 90       	pop	r0
 3b2:	1f 90       	pop	r1
 3b4:	18 95       	reti

000003b6 <WDT_off>:
}

void WDT_off(void)
{
	/*MCUSR 中的WDRF 清零*/
	MCUSR = 0x00;
 3b6:	14 be       	out	0x34, r1	; 52
	/* 置位WDCE 与WDE */
	WDTCSR = (1<<WDCE) | (1<<WDE);
 3b8:	88 e1       	ldi	r24, 0x18	; 24
 3ba:	80 93 60 00 	sts	0x0060, r24
	/* 关闭WDT */
	WDTCSR = 0x06;
 3be:	86 e0       	ldi	r24, 0x06	; 6
 3c0:	80 93 60 00 	sts	0x0060, r24
 3c4:	08 95       	ret

000003c6 <ICEInit>:
//#define interrupt_handler SIGNAL
//*pragma interrupt_handler IceInt:6 // 中断程序说明
void ICEInit(void) // T/C1初始化
{
	TIMSK1 = (BV(ICIE1));//0x20; // 使能捕获中断
 3c6:	80 e2       	ldi	r24, 0x20	; 32
 3c8:	80 93 6f 00 	sts	0x006F, r24
	TCCR1A = 0x00; // T/C1时钟与系统相同,本文使用系统AVR内部自带1MHz振荡源.
 3cc:	10 92 80 00 	sts	0x0080, r1
	               // T/C1时钟周期为1μs
	TCCR1B = 0x81; // 使能噪音抑制,下降沿触发中断
 3d0:	81 e8       	ldi	r24, 0x81	; 129
 3d2:	80 93 81 00 	sts	0x0081, r24
 3d6:	08 95       	ret

000003d8 <__vector_10>:
}

BOOL bCollectData = 0;  // 采集数据开始标志
byte bData;
TIMER_INTERRUPT_HANDLER(SIG_INPUT_CAPTURE1)
{
 3d8:	1f 92       	push	r1
 3da:	0f 92       	push	r0
 3dc:	0f b6       	in	r0, 0x3f	; 63
 3de:	0f 92       	push	r0
 3e0:	11 24       	eor	r1, r1
 3e2:	2f 93       	push	r18
 3e4:	3f 93       	push	r19
 3e6:	4f 93       	push	r20
 3e8:	5f 93       	push	r21
 3ea:	8f 93       	push	r24
 3ec:	9f 93       	push	r25
 3ee:	ef 93       	push	r30
 3f0:	ff 93       	push	r31
	static uint oldFall;
	uint newFall;
	uint temp;
	newFall = ICR1;
 3f2:	80 91 86 00 	lds	r24, 0x0086
 3f6:	90 91 87 00 	lds	r25, 0x0087
	temp = newFall - oldFall; // 计算脉冲加间隔的时间
 3fa:	20 91 01 01 	lds	r18, 0x0101
 3fe:	30 91 02 01 	lds	r19, 0x0102
 402:	ac 01       	movw	r20, r24
 404:	42 1b       	sub	r20, r18
 406:	53 0b       	sbc	r21, r19
 408:	9a 01       	movw	r18, r20
	oldFall = newFall;
 40a:	90 93 02 01 	sts	0x0102, r25
 40e:	80 93 01 01 	sts	0x0101, r24

	if (temp > 1100 && temp < 1300 && bCollectData) // "0"信号
 412:	ca 01       	movw	r24, r20
 414:	8d 54       	subi	r24, 0x4D	; 77
 416:	94 40       	sbci	r25, 0x04	; 4
 418:	87 3c       	cpi	r24, 0xC7	; 199
 41a:	91 05       	cpc	r25, r1
 41c:	38 f4       	brcc	.+14     	; 0x42c <__vector_10+0x54>
 41e:	80 91 00 01 	lds	r24, 0x0100
 422:	88 23       	and	r24, r24
 424:	19 f0       	breq	.+6      	; 0x42c <__vector_10+0x54>
	{
		temp = 0;
 426:	20 e0       	ldi	r18, 0x00	; 0
 428:	30 e0       	ldi	r19, 0x00	; 0
 42a:	1f c0       	rjmp	.+62     	; 0x46a <__vector_10+0x92>
		bitcnt++;
	}
	else if (temp > 1700 && temp < 1900 && bCollectData) //“1”信号
 42c:	c9 01       	movw	r24, r18
 42e:	85 5a       	subi	r24, 0xA5	; 165
 430:	96 40       	sbci	r25, 0x06	; 6
 432:	87 3c       	cpi	r24, 0xC7	; 199
 434:	91 05       	cpc	r25, r1
 436:	38 f4       	brcc	.+14     	; 0x446 <__vector_10+0x6e>
 438:	80 91 00 01 	lds	r24, 0x0100
 43c:	88 23       	and	r24, r24
 43e:	19 f0       	breq	.+6      	; 0x446 <__vector_10+0x6e>
	{
		temp = 1;
 440:	21 e0       	ldi	r18, 0x01	; 1
 442:	30 e0       	ldi	r19, 0x00	; 0
 444:	12 c0       	rjmp	.+36     	; 0x46a <__vector_10+0x92>
		bitcnt++;
	}
	else if (temp > 2400 && temp < 2600) // header信号
 446:	21 56       	subi	r18, 0x61	; 97
 448:	39 40       	sbci	r19, 0x09	; 9
 44a:	27 3c       	cpi	r18, 0xC7	; 199
 44c:	31 05       	cpc	r19, r1
 44e:	40 f4       	brcc	.+16     	; 0x460 <__vector_10+0x88>
  	{
		bitcnt = 0;
 450:	10 92 17 01 	sts	0x0117, r1
		bData  = 0;
 454:	10 92 15 01 	sts	0x0115, r1
		bCollectData = 1;
 458:	81 e0       	ldi	r24, 0x01	; 1
 45a:	80 93 00 01 	sts	0x0100, r24
		//WorkTimer     = 2;
		//WakeForSleepTimer = 3;
		return; // 返回,等待下次开始接收
 45e:	39 c0       	rjmp	.+114    	; 0x4d2 <__vector_10+0xfa>
	}
	else // 干扰信号
	{
		bitcnt = 0;
 460:	10 92 17 01 	sts	0x0117, r1
		bData  = 0;
 464:	10 92 15 01 	sts	0x0115, r1
		return;
 468:	34 c0       	rjmp	.+104    	; 0x4d2 <__vector_10+0xfa>
 46a:	80 91 17 01 	lds	r24, 0x0117
 46e:	8f 5f       	subi	r24, 0xFF	; 255
 470:	80 93 17 01 	sts	0x0117, r24
	}


	if (bCollectData && bitcnt > 0)
 474:	80 91 00 01 	lds	r24, 0x0100
 478:	88 23       	and	r24, r24
 47a:	59 f1       	breq	.+86     	; 0x4d2 <__vector_10+0xfa>
 47c:	90 91 17 01 	lds	r25, 0x0117
 480:	99 23       	and	r25, r25
 482:	39 f1       	breq	.+78     	; 0x4d2 <__vector_10+0xfa>
 484:	80 91 15 01 	lds	r24, 0x0115
	{
		if (bitcnt < 2) // 开始接1位
 488:	92 30       	cpi	r25, 0x02	; 2
 48a:	28 f4       	brcc	.+10     	; 0x496 <__vector_10+0xbe>
		{
			bData |= (byte)temp;
 48c:	82 2b       	or	r24, r18
			bData = bData << 1;
 48e:	88 0f       	add	r24, r24
 490:	80 93 15 01 	sts	0x0115, r24
 494:	1e c0       	rjmp	.+60     	; 0x4d2 <__vector_10+0xfa>
		}
		else // 接收完最后一位
		{
			bData |= (byte)temp;
 496:	98 2f       	mov	r25, r24
 498:	92 2b       	or	r25, r18
 49a:	90 93 15 01 	sts	0x0115, r25
			
			// 数据入队
			if (++IRKeyCodeHead >= KEYBUFLENGTH ) 
 49e:	80 91 16 01 	lds	r24, 0x0116
 4a2:	8f 5f       	subi	r24, 0xFF	; 255
 4a4:	80 93 16 01 	sts	0x0116, r24
 4a8:	80 91 16 01 	lds	r24, 0x0116
 4ac:	8a 30       	cpi	r24, 0x0A	; 10
 4ae:	10 f0       	brcs	.+4      	; 0x4b4 <__vector_10+0xdc>
				IRKeyCodeHead = 0;
 4b0:	10 92 16 01 	sts	0x0116, r1
        	IRKeyCodeBuf[IRKeyCodeHead] = bData;
 4b4:	80 91 16 01 	lds	r24, 0x0116
 4b8:	e8 2f       	mov	r30, r24
 4ba:	ff 27       	eor	r31, r31
 4bc:	e5 5f       	subi	r30, 0xF5	; 245
 4be:	fe 4f       	sbci	r31, 0xFE	; 254
 4c0:	90 83       	st	Z, r25

			bCollectData = 0;
 4c2:	10 92 00 01 	sts	0x0100, r1

			WorkTimer     = 2;
 4c6:	82 e0       	ldi	r24, 0x02	; 2
 4c8:	80 93 06 01 	sts	0x0106, r24
			WakeForSleepTimer = 3;
 4cc:	83 e0       	ldi	r24, 0x03	; 3
 4ce:	80 93 05 01 	sts	0x0105, r24
 4d2:	ff 91       	pop	r31
 4d4:	ef 91       	pop	r30
 4d6:	9f 91       	pop	r25
 4d8:	8f 91       	pop	r24
 4da:	5f 91       	pop	r21
 4dc:	4f 91       	pop	r20
 4de:	3f 91       	pop	r19
 4e0:	2f 91       	pop	r18
 4e2:	0f 90       	pop	r0
 4e4:	0f be       	out	0x3f, r0	; 63
 4e6:	0f 90       	pop	r0
 4e8:	1f 90       	pop	r1
 4ea:	18 95       	reti

000004ec <GetIRKey>:
		}
	}

	//WorkTimer     = 2;
	//WakeForSleepTimer = 3;
/*	
	bitcnt++;
	// 数据入队
			if (++IRKeyCodeHead >= KEYBUFLENGTH ) 
				IRKeyCodeHead = 0;
        	IRKeyCodeBuf[IRKeyCodeHead] = bitcnt;*/
}
byte GetIRKey(void)
{
    if (IRKeyCodeTail != IRKeyCodeHead)
 4ec:	90 91 0a 01 	lds	r25, 0x010A
 4f0:	80 91 16 01 	lds	r24, 0x0116
 4f4:	98 17       	cp	r25, r24
 4f6:	a1 f0       	breq	.+40     	; 0x520 <GetIRKey+0x34>
	{
        if (++IRKeyCodeTail >= KEYBUFLENGTH) 
 4f8:	80 91 0a 01 	lds	r24, 0x010A
 4fc:	8f 5f       	subi	r24, 0xFF	; 255
 4fe:	80 93 0a 01 	sts	0x010A, r24
 502:	80 91 0a 01 	lds	r24, 0x010A
 506:	8a 30       	cpi	r24, 0x0A	; 10
 508:	10 f0       	brcs	.+4      	; 0x50e <GetIRKey+0x22>
        	IRKeyCodeTail = 0;
 50a:	10 92 0a 01 	sts	0x010A, r1
        
        return (IRKeyCodeBuf[IRKeyCodeTail]);
 50e:	80 91 0a 01 	lds	r24, 0x010A
 512:	e8 2f       	mov	r30, r24
 514:	ff 27       	eor	r31, r31
 516:	e5 5f       	subi	r30, 0xF5	; 245
 518:	fe 4f       	sbci	r31, 0xFE	; 254
 51a:	80 81       	ld	r24, Z
 51c:	99 27       	eor	r25, r25
 51e:	08 95       	ret
    }
	else
	{
        return (0xff);
 520:	8f ef       	ldi	r24, 0xFF	; 255
 522:	90 e0       	ldi	r25, 0x00	; 0
    }     
}
 524:	08 95       	ret

00000526 <__udivmodsi4>:
 526:	a1 e2       	ldi	r26, 0x21	; 33
 528:	1a 2e       	mov	r1, r26
 52a:	aa 1b       	sub	r26, r26
 52c:	bb 1b       	sub	r27, r27
 52e:	fd 01       	movw	r30, r26
 530:	0d c0       	rjmp	.+26     	; 0x54c <__udivmodsi4_ep>

00000532 <__udivmodsi4_loop>:
 532:	aa 1f       	adc	r26, r26
 534:	bb 1f       	adc	r27, r27
 536:	ee 1f       	adc	r30, r30
 538:	ff 1f       	adc	r31, r31
 53a:	a2 17       	cp	r26, r18
 53c:	b3 07       	cpc	r27, r19
 53e:	e4 07       	cpc	r30, r20
 540:	f5 07       	cpc	r31, r21
 542:	20 f0       	brcs	.+8      	; 0x54c <__udivmodsi4_ep>
 544:	a2 1b       	sub	r26, r18
 546:	b3 0b       	sbc	r27, r19
 548:	e4 0b       	sbc	r30, r20
 54a:	f5 0b       	sbc	r31, r21

0000054c <__udivmodsi4_ep>:
 54c:	66 1f       	adc	r22, r22
 54e:	77 1f       	adc	r23, r23
 550:	88 1f       	adc	r24, r24
 552:	99 1f       	adc	r25, r25
 554:	1a 94       	dec	r1
 556:	69 f7       	brne	.-38     	; 0x532 <__udivmodsi4_loop>
 558:	60 95       	com	r22
 55a:	70 95       	com	r23
 55c:	80 95       	com	r24
 55e:	90 95       	com	r25
 560:	9b 01       	movw	r18, r22
 562:	ac 01       	movw	r20, r24
 564:	bd 01       	movw	r22, r26
 566:	cf 01       	movw	r24, r30
 568:	08 95       	ret

⌨️ 快捷键说明

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