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

📄 main.lss

📁 AVR红外遥控
💻 LSS
📖 第 1 页 / 共 5 页
字号:
 3f6:	48 e9       	ldi	r20, 0x98	; 152
 3f8:	50 e0       	ldi	r21, 0x00	; 0
 3fa:	87 d5       	rcall	.+2830   	; 0xf0a <__udivmodsi4>
 3fc:	7b 01       	movw	r14, r22
 3fe:	8c 01       	movw	r16, r24

    buff[1] = pdata/1000000;      //  BCD码第7位
 400:	20 e4       	ldi	r18, 0x40	; 64
 402:	32 e4       	ldi	r19, 0x42	; 66
 404:	4f e0       	ldi	r20, 0x0F	; 15
 406:	50 e0       	ldi	r21, 0x00	; 0
 408:	80 d5       	rcall	.+2816   	; 0xf0a <__udivmodsi4>
 40a:	29 83       	std	Y+1, r18	; 0x01
    pdata %= 1000000;
 40c:	c8 01       	movw	r24, r16
 40e:	b7 01       	movw	r22, r14
 410:	20 e4       	ldi	r18, 0x40	; 64
 412:	32 e4       	ldi	r19, 0x42	; 66
 414:	4f e0       	ldi	r20, 0x0F	; 15
 416:	50 e0       	ldi	r21, 0x00	; 0
 418:	78 d5       	rcall	.+2800   	; 0xf0a <__udivmodsi4>
 41a:	7b 01       	movw	r14, r22
 41c:	8c 01       	movw	r16, r24

    buff[2] = pdata/100000;       //  BCD码第6位
 41e:	20 ea       	ldi	r18, 0xA0	; 160
 420:	36 e8       	ldi	r19, 0x86	; 134
 422:	41 e0       	ldi	r20, 0x01	; 1
 424:	50 e0       	ldi	r21, 0x00	; 0
 426:	71 d5       	rcall	.+2786   	; 0xf0a <__udivmodsi4>
 428:	2a 83       	std	Y+2, r18	; 0x02
    pdata %= 100000;
 42a:	c8 01       	movw	r24, r16
 42c:	b7 01       	movw	r22, r14
 42e:	20 ea       	ldi	r18, 0xA0	; 160
 430:	36 e8       	ldi	r19, 0x86	; 134
 432:	41 e0       	ldi	r20, 0x01	; 1
 434:	50 e0       	ldi	r21, 0x00	; 0
 436:	69 d5       	rcall	.+2770   	; 0xf0a <__udivmodsi4>
 438:	7b 01       	movw	r14, r22
 43a:	8c 01       	movw	r16, r24

    buff[3] = pdata/10000;        //  BCD码第5位
 43c:	20 e1       	ldi	r18, 0x10	; 16
 43e:	37 e2       	ldi	r19, 0x27	; 39
 440:	40 e0       	ldi	r20, 0x00	; 0
 442:	50 e0       	ldi	r21, 0x00	; 0
 444:	62 d5       	rcall	.+2756   	; 0xf0a <__udivmodsi4>
 446:	2b 83       	std	Y+3, r18	; 0x03
    pdata %= 10000;
 448:	c8 01       	movw	r24, r16
 44a:	b7 01       	movw	r22, r14
 44c:	20 e1       	ldi	r18, 0x10	; 16
 44e:	37 e2       	ldi	r19, 0x27	; 39
 450:	40 e0       	ldi	r20, 0x00	; 0
 452:	50 e0       	ldi	r21, 0x00	; 0
 454:	5a d5       	rcall	.+2740   	; 0xf0a <__udivmodsi4>
 456:	7b 01       	movw	r14, r22
 458:	8c 01       	movw	r16, r24

    buff[4] = pdata/1000;         //  BCD码第4位
 45a:	28 ee       	ldi	r18, 0xE8	; 232
 45c:	33 e0       	ldi	r19, 0x03	; 3
 45e:	40 e0       	ldi	r20, 0x00	; 0
 460:	50 e0       	ldi	r21, 0x00	; 0
 462:	53 d5       	rcall	.+2726   	; 0xf0a <__udivmodsi4>
 464:	2c 83       	std	Y+4, r18	; 0x04
    pdata %= 1000;
 466:	c8 01       	movw	r24, r16
 468:	b7 01       	movw	r22, r14
 46a:	28 ee       	ldi	r18, 0xE8	; 232
 46c:	33 e0       	ldi	r19, 0x03	; 3
 46e:	40 e0       	ldi	r20, 0x00	; 0
 470:	50 e0       	ldi	r21, 0x00	; 0
 472:	4b d5       	rcall	.+2710   	; 0xf0a <__udivmodsi4>
 474:	7b 01       	movw	r14, r22
 476:	8c 01       	movw	r16, r24

    buff[5] = pdata/100;          //  BCD码第3位
 478:	24 e6       	ldi	r18, 0x64	; 100
 47a:	30 e0       	ldi	r19, 0x00	; 0
 47c:	40 e0       	ldi	r20, 0x00	; 0
 47e:	50 e0       	ldi	r21, 0x00	; 0
 480:	44 d5       	rcall	.+2696   	; 0xf0a <__udivmodsi4>
 482:	2d 83       	std	Y+5, r18	; 0x05
    pdata %= 100;
 484:	c8 01       	movw	r24, r16
 486:	b7 01       	movw	r22, r14
 488:	24 e6       	ldi	r18, 0x64	; 100
 48a:	30 e0       	ldi	r19, 0x00	; 0
 48c:	40 e0       	ldi	r20, 0x00	; 0
 48e:	50 e0       	ldi	r21, 0x00	; 0
 490:	3c d5       	rcall	.+2680   	; 0xf0a <__udivmodsi4>
 492:	7b 01       	movw	r14, r22
 494:	8c 01       	movw	r16, r24

    buff[6] = pdata/10;           //  BCD码第2位
 496:	2a e0       	ldi	r18, 0x0A	; 10
 498:	30 e0       	ldi	r19, 0x00	; 0
 49a:	40 e0       	ldi	r20, 0x00	; 0
 49c:	50 e0       	ldi	r21, 0x00	; 0
 49e:	35 d5       	rcall	.+2666   	; 0xf0a <__udivmodsi4>
 4a0:	2e 83       	std	Y+6, r18	; 0x06
    pdata %= 10;

    buff[7] = pdata;                //  BCD码第1位
 4a2:	c8 01       	movw	r24, r16
 4a4:	b7 01       	movw	r22, r14
 4a6:	2a e0       	ldi	r18, 0x0A	; 10
 4a8:	30 e0       	ldi	r19, 0x00	; 0
 4aa:	40 e0       	ldi	r20, 0x00	; 0
 4ac:	50 e0       	ldi	r21, 0x00	; 0
 4ae:	2d d5       	rcall	.+2650   	; 0xf0a <__udivmodsi4>
 4b0:	6f 83       	std	Y+7, r22	; 0x07
 4b2:	81 e0       	ldi	r24, 0x01	; 1
 4b4:	90 e0       	ldi	r25, 0x00	; 0
 4b6:	02 c0       	rjmp	.+4      	; 0x4bc <htobcd8+0x102>
 4b8:	80 e0       	ldi	r24, 0x00	; 0
 4ba:	90 e0       	ldi	r25, 0x00	; 0
 4bc:	df 91       	pop	r29
 4be:	cf 91       	pop	r28
 4c0:	1f 91       	pop	r17
 4c2:	0f 91       	pop	r16
 4c4:	ff 90       	pop	r15
 4c6:	ef 90       	pop	r14
 4c8:	08 95       	ret

000004ca <htobcd5>:
   
  }
  
  return 1;
  
  
}



// buff: BCD的数据指针,指向8单元的数组
// pdata: 数据最大99999
// 转换正确返回: 1
u8_t htobcd5(u8_t *buff, u32_t pdata) {
 4ca:	ef 92       	push	r14
 4cc:	ff 92       	push	r15
 4ce:	0f 93       	push	r16
 4d0:	1f 93       	push	r17
 4d2:	cf 93       	push	r28
 4d4:	df 93       	push	r29
 4d6:	ec 01       	movw	r28, r24
 4d8:	7a 01       	movw	r14, r20
 4da:	8b 01       	movw	r16, r22

  
  if (pdata > 99999) {
 4dc:	40 3a       	cpi	r20, 0xA0	; 160
 4de:	86 e8       	ldi	r24, 0x86	; 134
 4e0:	58 07       	cpc	r21, r24
 4e2:	81 e0       	ldi	r24, 0x01	; 1
 4e4:	68 07       	cpc	r22, r24
 4e6:	80 e0       	ldi	r24, 0x00	; 0
 4e8:	78 07       	cpc	r23, r24
 4ea:	08 f0       	brcs	.+2      	; 0x4ee <htobcd5+0x24>
 4ec:	40 c0       	rjmp	.+128    	; 0x56e <htobcd5+0xa4>
    return 0;
  }
  else {

    buff[0] = pdata/10000;        //  BCD码第5位
 4ee:	cb 01       	movw	r24, r22
 4f0:	ba 01       	movw	r22, r20
 4f2:	20 e1       	ldi	r18, 0x10	; 16
 4f4:	37 e2       	ldi	r19, 0x27	; 39
 4f6:	40 e0       	ldi	r20, 0x00	; 0
 4f8:	50 e0       	ldi	r21, 0x00	; 0
 4fa:	07 d5       	rcall	.+2574   	; 0xf0a <__udivmodsi4>
 4fc:	28 83       	st	Y, r18
    pdata %= 10000;
 4fe:	c8 01       	movw	r24, r16
 500:	b7 01       	movw	r22, r14
 502:	20 e1       	ldi	r18, 0x10	; 16
 504:	37 e2       	ldi	r19, 0x27	; 39
 506:	40 e0       	ldi	r20, 0x00	; 0
 508:	50 e0       	ldi	r21, 0x00	; 0
 50a:	ff d4       	rcall	.+2558   	; 0xf0a <__udivmodsi4>
 50c:	7b 01       	movw	r14, r22
 50e:	8c 01       	movw	r16, r24

    buff[1] = pdata/1000;         //  BCD码第4位
 510:	28 ee       	ldi	r18, 0xE8	; 232
 512:	33 e0       	ldi	r19, 0x03	; 3
 514:	40 e0       	ldi	r20, 0x00	; 0
 516:	50 e0       	ldi	r21, 0x00	; 0
 518:	f8 d4       	rcall	.+2544   	; 0xf0a <__udivmodsi4>
 51a:	29 83       	std	Y+1, r18	; 0x01
    pdata %= 1000;
 51c:	c8 01       	movw	r24, r16
 51e:	b7 01       	movw	r22, r14
 520:	28 ee       	ldi	r18, 0xE8	; 232
 522:	33 e0       	ldi	r19, 0x03	; 3
 524:	40 e0       	ldi	r20, 0x00	; 0
 526:	50 e0       	ldi	r21, 0x00	; 0
 528:	f0 d4       	rcall	.+2528   	; 0xf0a <__udivmodsi4>
 52a:	7b 01       	movw	r14, r22
 52c:	8c 01       	movw	r16, r24

    buff[2] = pdata/100;          //  BCD码第3位
 52e:	24 e6       	ldi	r18, 0x64	; 100
 530:	30 e0       	ldi	r19, 0x00	; 0
 532:	40 e0       	ldi	r20, 0x00	; 0
 534:	50 e0       	ldi	r21, 0x00	; 0
 536:	e9 d4       	rcall	.+2514   	; 0xf0a <__udivmodsi4>
 538:	2a 83       	std	Y+2, r18	; 0x02
    pdata %= 100;
 53a:	c8 01       	movw	r24, r16
 53c:	b7 01       	movw	r22, r14
 53e:	24 e6       	ldi	r18, 0x64	; 100
 540:	30 e0       	ldi	r19, 0x00	; 0
 542:	40 e0       	ldi	r20, 0x00	; 0
 544:	50 e0       	ldi	r21, 0x00	; 0
 546:	e1 d4       	rcall	.+2498   	; 0xf0a <__udivmodsi4>
 548:	7b 01       	movw	r14, r22
 54a:	8c 01       	movw	r16, r24

    buff[3] = pdata/10;           //  BCD码第2位
 54c:	2a e0       	ldi	r18, 0x0A	; 10
 54e:	30 e0       	ldi	r19, 0x00	; 0
 550:	40 e0       	ldi	r20, 0x00	; 0
 552:	50 e0       	ldi	r21, 0x00	; 0
 554:	da d4       	rcall	.+2484   	; 0xf0a <__udivmodsi4>
 556:	2b 83       	std	Y+3, r18	; 0x03
    pdata %= 10;

    buff[4] = pdata;              //  BCD码第1位
 558:	c8 01       	movw	r24, r16
 55a:	b7 01       	movw	r22, r14
 55c:	2a e0       	ldi	r18, 0x0A	; 10
 55e:	30 e0       	ldi	r19, 0x00	; 0
 560:	40 e0       	ldi	r20, 0x00	; 0
 562:	50 e0       	ldi	r21, 0x00	; 0
 564:	d2 d4       	rcall	.+2468   	; 0xf0a <__udivmodsi4>
 566:	6c 83       	std	Y+4, r22	; 0x04
 568:	81 e0       	ldi	r24, 0x01	; 1
 56a:	90 e0       	ldi	r25, 0x00	; 0
 56c:	02 c0       	rjmp	.+4      	; 0x572 <htobcd5+0xa8>
 56e:	80 e0       	ldi	r24, 0x00	; 0
 570:	90 e0       	ldi	r25, 0x00	; 0
 572:	df 91       	pop	r29
 574:	cf 91       	pop	r28
 576:	1f 91       	pop	r17
 578:	0f 91       	pop	r16
 57a:	ff 90       	pop	r15
 57c:	ef 90       	pop	r14
 57e:	08 95       	ret

00000580 <checksum>:
#include "cc.h"

u8_t checksum(u8_t *mbuf, u8_t len){	
 580:	fc 01       	movw	r30, r24
	u8_t sum8;
	u16_t sum16, tmp;

	for (sum16 = 0; len > 0; len--){
 582:	66 23       	and	r22, r22
 584:	91 f0       	breq	.+36     	; 0x5aa <checksum+0x2a>
 586:	40 e0       	ldi	r20, 0x00	; 0
 588:	50 e0       	ldi	r21, 0x00	; 0
		sum16 += (u16_t)*mbuf++;
 58a:	81 91       	ld	r24, Z+
 58c:	48 0f       	add	r20, r24
 58e:	51 1d       	adc	r21, r1
 590:	61 50       	subi	r22, 0x01	; 1
 592:	d9 f7       	brne	.-10     	; 0x58a <checksum+0xa>
 594:	25 2f       	mov	r18, r21
 596:	33 27       	eor	r19, r19
 598:	24 0f       	add	r18, r20
 59a:	31 1d       	adc	r19, r1
 59c:	83 2f       	mov	r24, r19
 59e:	99 27       	eor	r25, r25
 5a0:	82 0f       	add	r24, r18
 5a2:	91 1d       	adc	r25, r1
 5a4:	80 95       	com	r24
 5a6:	99 27       	eor	r25, r25
    }

	// First: proccess CY
	tmp = (sum16 >> 8) & 0x00ff;
	sum16 = (sum16 & 0x00ff) + tmp;
	// Second: since CY may be happend , proccess CY again 
	tmp = (sum16 >> 8) & 0x00ff;
	sum16 = (sum16 & 0x00ff) + tmp;
	// if len <= 0xff, CY must be not happend, reassuring to get checksum
	sum8 = (u8_t)sum16;

	return ~sum8;
}																		  
 5a8:	08 95       	ret
 5aa:	8f ef       	ldi	r24, 0xFF	; 255
 5ac:	90 e0       	ldi	r25, 0x00	; 0
 5ae:	08 95       	ret

000005b0 <proc_calculate>:



// =========================================================================
void proc_calculate(void) {
 5b0:	ef 92       	push	r14
 5b2:	ff 92       	push	r15
 5b4:	0f 93       	push	r16
 5b6:	1f 93       	push	r17
  u32_t tmp1, tmp2, tmp3;
  
  if ((flag0 & _BV(FLAG0_T1)) == 0) {
 5b8:	80 91 07 01 	lds	r24, 0x0107
 5bc:	81 ff       	sbrs	r24, 1
 5be:	c3 c0       	rjmp	.+390    	; 0x746 <proc_calculate+0x196>
    return; // 没到1秒,等待采样
  }
  else {
    flag0 &= ~_BV(FLAG0_T1);  // 清标志
 5c0:	80 91 07 01 	lds	r24, 0x0107
 5c4:	8d 7f       	andi	r24, 0xFD	; 253
 5c6:	80 93 07 01 	sts	0x0107, r24
  }
  

  // 警告:类型不匹配的计算将导致意外的结果!


  // 计算采样显示电压(伏)
  tmp1 = (u32_t)sample_i;
 5ca:	60 91 02 01 	lds	r22, 0x0102
 5ce:	70 91 03 01 	lds	r23, 0x0103
  tmp1 *= C_DIS_U;
 5d2:	88 27       	eor	r24, r24
 5d4:	99 27       	eor	r25, r25
 5d6:	c3 d3       	rcall	.+1926   	; 0xd5e <__floatsisf>
 5d8:	27 e4       	ldi	r18, 0x47	; 71
 5da:	35 e5       	ldi	r19, 0x55	; 85
 5dc:	40 ed       	ldi	r20, 0xD0	; 208
 5de:	55 e4       	ldi	r21, 0x45	; 69
 5e0:	35 d4       	rcall	.+2154   	; 0xe4c <__mulsf3>
 5e2:	a0 d3       	rcall	.+1856   	; 0xd24 <__fixsfsi>
  tmp1 /= C_SMP_U;

   if (tmp1-C_DIS_U*0.1 >= 0){
 5e4:	24 e4       	ldi	r18, 0x44	; 68
 5e6:	30 e2       	ldi	r19, 0x20	; 32
 5e8:	40 e0       	ldi	r20, 0x00	; 0
 5ea:	50 e0       	ldi	r21, 0x00	; 0
 5ec:	8e d4       	rcall	.+2332   	; 0xf0a <__udivmodsi4>
 5ee:	57 fd       	sbrc	r21, 7
 5f0:	93 c0       	rjmp	.+294    	; 0x718 <proc_calculate+0x168>
 5f2:	ca 01       	movw	r24, r20
 5f4:	b9 01       	movw	r22, r18
 5f6:	b3 d3       	rcall	.+1894   	; 0xd5e <__floatsisf>
 5f8:	2f e9       	ldi	r18, 0x9F	; 159
 5fa:	3a ea       	ldi	r19, 0xAA	; 170
 5fc:	46 e2       	ldi	r20, 0x26	; 38
 5fe:	54 e4       	ldi	r21, 0x44	; 68
 600:	4e d3       	rcall	.+1692   	; 0xc9e <__subsf3>
 602:	7b 01       	movw	r14, r22
 604:	8c 01       	movw	r16, r24
 606:	20 e0       	ldi	r18, 0x00	; 0
 608:	30 e0       	ldi	r19, 0x00	; 0
 60a:	40 e0       	ldi	r20, 0x00	; 0
 60c:	50 e0       	ldi	r21, 0x00	; 0
 60e:	b4 d3       	rcall	.+1896   	; 0xd78 <__gesf2>
 610:	87 fd       	sbrc	r24, 7
 612:	95 c0       	rjmp	.+298    	; 0x73e <proc_calculate+0x18e>
 		  tmp1 -= C_DIS_U*0.1;
 614:	c8 01       	movw	r24, r16
 616:	b7 01       	movw	r22, r14
 618:	85 d3       	rcall	.+1802   	; 0xd24 <__fixsfsi>
 61a:	7b 01       	movw	r14, r22
 61c:	8c 01       	movw	r16, r24
 		}
    else  {
  		tmp1 = 0 ;
 	}
      

  disbuf.u = tmp1;
 61e:	e0 92 1c 01 	sts	0x011C, r14
 622:	f0 92 1d 01 	sts	0x011D, r15
 626:	00 93 1e 01 	sts	0x011E, r16
 62a:	10 93 1f 01 	sts	0x011F, r17
  // 测试计算结果
  //htobcd5(&bcd_buf[0], disbuf.u);

  // 计算采样显示电流(千安)
  tmp2 = (u32_t)sample_v;
 62e:	60 91 0c 01 	lds	r22, 0x010C
 632:	70 91 0d 01 	lds	r23, 0x010D
  tmp2 *= C_DIS_I;
 636:	88 27       	eor	r24, r24
 638:	99 27       	eor	r25, r25
 63a:	91 d3       	rcall	.+1826   	; 0xd5e <__floatsisf>
 63c:	25 e8       	ldi	r18, 0x85	; 133
 63e:	33 ee       	ldi	r19, 0xE3	; 227
 640:	4a e8       	ldi	r20, 0x8A	; 138
 642:	55 e4       	ldi	r21, 0x45	; 69
 644:	03 d4       	rcall	.+2054   	; 0xe4c <__mulsf3>
 646:	6e d3       	rcall	.+1756   	; 0xd24 <__fixsfsi>
  tmp2 /= C_SMP_I;
  disbuf.i = tmp2;
 648:	27 eb       	ldi	r18, 0xB7	; 183

⌨️ 快捷键说明

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