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

📄 main.lss

📁 AVR红外遥控
💻 LSS
📖 第 1 页 / 共 5 页
字号:
 3e8:	c8 01       	movw	r24, r16
 3ea:	b7 01       	movw	r22, r14
 3ec:	20 e8       	ldi	r18, 0x80	; 128
 3ee:	36 e9       	ldi	r19, 0x96	; 150
 3f0:	48 e9       	ldi	r20, 0x98	; 152
 3f2:	50 e0       	ldi	r21, 0x00	; 0
 3f4:	5a d4       	rcall	.+2228   	; 0xcaa <__udivmodsi4>
 3f6:	7b 01       	movw	r14, r22
 3f8:	8c 01       	movw	r16, r24

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

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

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

    buff[4] = pdata/1000;         //  BCD码第4位
 454:	28 ee       	ldi	r18, 0xE8	; 232
 456:	33 e0       	ldi	r19, 0x03	; 3
 458:	40 e0       	ldi	r20, 0x00	; 0
 45a:	50 e0       	ldi	r21, 0x00	; 0
 45c:	26 d4       	rcall	.+2124   	; 0xcaa <__udivmodsi4>
 45e:	2c 83       	std	Y+4, r18	; 0x04
    pdata %= 1000;
 460:	c8 01       	movw	r24, r16
 462:	b7 01       	movw	r22, r14
 464:	28 ee       	ldi	r18, 0xE8	; 232
 466:	33 e0       	ldi	r19, 0x03	; 3
 468:	40 e0       	ldi	r20, 0x00	; 0
 46a:	50 e0       	ldi	r21, 0x00	; 0
 46c:	1e d4       	rcall	.+2108   	; 0xcaa <__udivmodsi4>
 46e:	7b 01       	movw	r14, r22
 470:	8c 01       	movw	r16, r24

    buff[5] = pdata/100;          //  BCD码第3位
 472:	24 e6       	ldi	r18, 0x64	; 100
 474:	30 e0       	ldi	r19, 0x00	; 0
 476:	40 e0       	ldi	r20, 0x00	; 0
 478:	50 e0       	ldi	r21, 0x00	; 0
 47a:	17 d4       	rcall	.+2094   	; 0xcaa <__udivmodsi4>
 47c:	2d 83       	std	Y+5, r18	; 0x05
    pdata %= 100;
 47e:	c8 01       	movw	r24, r16
 480:	b7 01       	movw	r22, r14
 482:	24 e6       	ldi	r18, 0x64	; 100
 484:	30 e0       	ldi	r19, 0x00	; 0
 486:	40 e0       	ldi	r20, 0x00	; 0
 488:	50 e0       	ldi	r21, 0x00	; 0
 48a:	0f d4       	rcall	.+2078   	; 0xcaa <__udivmodsi4>
 48c:	7b 01       	movw	r14, r22
 48e:	8c 01       	movw	r16, r24

    buff[6] = pdata/10;           //  BCD码第2位
 490:	2a e0       	ldi	r18, 0x0A	; 10
 492:	30 e0       	ldi	r19, 0x00	; 0
 494:	40 e0       	ldi	r20, 0x00	; 0
 496:	50 e0       	ldi	r21, 0x00	; 0
 498:	08 d4       	rcall	.+2064   	; 0xcaa <__udivmodsi4>
 49a:	2e 83       	std	Y+6, r18	; 0x06
    pdata %= 10;

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

000004c4 <htobcd5>:
   
  }
  
  return 1;
  
  
}



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

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

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

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

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

    buff[3] = pdata/10;           //  BCD码第2位
 546:	2a e0       	ldi	r18, 0x0A	; 10
 548:	30 e0       	ldi	r19, 0x00	; 0
 54a:	40 e0       	ldi	r20, 0x00	; 0
 54c:	50 e0       	ldi	r21, 0x00	; 0
 54e:	ad d3       	rcall	.+1882   	; 0xcaa <__udivmodsi4>
 550:	2b 83       	std	Y+3, r18	; 0x03
    pdata %= 10;

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

0000057a <checksum>:
#include "cc.h"

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

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

000005aa <proc_calculate>:



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

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


  // 计算采样显示电压(伏)
  tmp1 = (u32_t)sample_v;
 5c4:	60 91 0c 01 	lds	r22, 0x010C
 5c8:	70 91 0d 01 	lds	r23, 0x010D
 5cc:	88 27       	eor	r24, r24
 5ce:	99 27       	eor	r25, r25
  tmp1 *= C_DIS_U;
 5d0:	28 e2       	ldi	r18, 0x28	; 40
 5d2:	33 e2       	ldi	r19, 0x23	; 35
 5d4:	40 e0       	ldi	r20, 0x00	; 0
 5d6:	50 e0       	ldi	r21, 0x00	; 0
 5d8:	35 d3       	rcall	.+1642   	; 0xc44 <__mulsi3>
  tmp1 /= C_SMP_U;
 5da:	22 e1       	ldi	r18, 0x12	; 18
 5dc:	30 e2       	ldi	r19, 0x20	; 32
 5de:	40 e0       	ldi	r20, 0x00	; 0
 5e0:	50 e0       	ldi	r21, 0x00	; 0
 5e2:	63 d3       	rcall	.+1734   	; 0xcaa <__udivmodsi4>
 5e4:	79 01       	movw	r14, r18
 5e6:	8a 01       	movw	r16, r20
  disbuf.u = tmp1;
 5e8:	20 93 1c 01 	sts	0x011C, r18
 5ec:	30 93 1d 01 	sts	0x011D, r19
 5f0:	40 93 1e 01 	sts	0x011E, r20
 5f4:	50 93 1f 01 	sts	0x011F, r21
  // 测试计算结果
  //htobcd5(&bcd_buf[0], disbuf.u);

  // 计算采样显示电流(千安)
  tmp2 = (u32_t)sample_i;
 5f8:	60 91 02 01 	lds	r22, 0x0102
 5fc:	70 91 03 01 	lds	r23, 0x0103
 600:	88 27       	eor	r24, r24
 602:	99 27       	eor	r25, r25
  tmp2 *= C_DIS_I;
 604:	20 e4       	ldi	r18, 0x40	; 64
 606:	3f e1       	ldi	r19, 0x1F	; 31
 608:	40 e0       	ldi	r20, 0x00	; 0
 60a:	50 e0       	ldi	r21, 0x00	; 0
 60c:	1b d3       	rcall	.+1590   	; 0xc44 <__mulsi3>
  tmp2 /= C_SMP_I;
 60e:	22 e1       	ldi	r18, 0x12	; 18
 610:	30 e2       	ldi	r19, 0x20	; 32
 612:	40 e0       	ldi	r20, 0x00	; 0
 614:	50 e0       	ldi	r21, 0x00	; 0
 616:	49 d3       	rcall	.+1682   	; 0xcaa <__udivmodsi4>
  disbuf.i = tmp2;
 618:	20 93 20 01 	sts	0x0120, r18
 61c:	30 93 21 01 	sts	0x0121, r19
 620:	40 93 22 01 	sts	0x0122, r20
 624:	50 93 23 01 	sts	0x0123, r21
  // 测试计算结果
  //htobcd5(&bcd_buf[0], disbuf.i);


  // 计算显示功率(兆瓦)
  tmp3 = tmp1;
  tmp3 *= tmp2;
 628:	c8 01       	movw	r24, r16
 62a:	b7 01       	movw	r22, r14
 62c:	0b d3       	rcall	.+1558   	; 0xc44 <__mulsi3>
  tmp3 /= 1000;
 62e:	28 ee       	ldi	r18, 0xE8	; 232
 630:	33 e0       	ldi	r19, 0x03	; 3
 632:	40 e0       	ldi	r20, 0x00	; 0
 634:	50 e0       	ldi	r21, 0x00	; 0
 636:	39 d3       	rcall	.+1650   	; 0xcaa <__udivmodsi4>
  disbuf.p = tmp3;
 638:	20 93 24 01 	sts	0x0124, r18
 63c:	30 93 25 01 	sts	0x0125, r19
 640:	40 93 26 01 	sts	0x0126, r20
 644:	50 93 27 01 	sts	0x0127, r21
  // 测试计算结果
  //htobcd8(&bcd_buf[5], disbuf.p);

⌨️ 快捷键说明

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