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

📄 main.lss

📁 AVR红外遥控
💻 LSS
📖 第 1 页 / 共 5 页
字号:
 3f2:	20 e8       	ldi	r18, 0x80	; 128
 3f4:	36 e9       	ldi	r19, 0x96	; 150
 3f6:	48 e9       	ldi	r20, 0x98	; 152
 3f8:	50 e0       	ldi	r21, 0x00	; 0
 3fa:	56 d4       	rcall	.+2220   	; 0xca8 <__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:	4f d4       	rcall	.+2206   	; 0xca8 <__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:	47 d4       	rcall	.+2190   	; 0xca8 <__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:	40 d4       	rcall	.+2176   	; 0xca8 <__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:	38 d4       	rcall	.+2160   	; 0xca8 <__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:	31 d4       	rcall	.+2146   	; 0xca8 <__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:	29 d4       	rcall	.+2130   	; 0xca8 <__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:	22 d4       	rcall	.+2116   	; 0xca8 <__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:	1a d4       	rcall	.+2100   	; 0xca8 <__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:	13 d4       	rcall	.+2086   	; 0xca8 <__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:	0b d4       	rcall	.+2070   	; 0xca8 <__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:	04 d4       	rcall	.+2056   	; 0xca8 <__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:	fc d3       	rcall	.+2040   	; 0xca8 <__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:	d6 d3       	rcall	.+1964   	; 0xca8 <__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:	ce d3       	rcall	.+1948   	; 0xca8 <__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:	c7 d3       	rcall	.+1934   	; 0xca8 <__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:	bf d3       	rcall	.+1918   	; 0xca8 <__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:	b8 d3       	rcall	.+1904   	; 0xca8 <__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:	b0 d3       	rcall	.+1888   	; 0xca8 <__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:	a9 d3       	rcall	.+1874   	; 0xca8 <__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:	a1 d3       	rcall	.+1858   	; 0xca8 <__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:	99 c0       	rjmp	.+306    	; 0x6f2 <proc_calculate+0x142>
    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_v;
 5ca:	60 91 0c 01 	lds	r22, 0x010C
 5ce:	70 91 0d 01 	lds	r23, 0x010D
 5d2:	88 27       	eor	r24, r24
 5d4:	99 27       	eor	r25, r25
  tmp1 *= C_DIS_U;
 5d6:	28 e2       	ldi	r18, 0x28	; 40
 5d8:	33 e2       	ldi	r19, 0x23	; 35
 5da:	40 e0       	ldi	r20, 0x00	; 0
 5dc:	50 e0       	ldi	r21, 0x00	; 0
 5de:	31 d3       	rcall	.+1634   	; 0xc42 <__mulsi3>
  tmp1 /= C_SMP_U;
 5e0:	27 ea       	ldi	r18, 0xA7	; 167
 5e2:	30 e2       	ldi	r19, 0x20	; 32
 5e4:	40 e0       	ldi	r20, 0x00	; 0
 5e6:	50 e0       	ldi	r21, 0x00	; 0
 5e8:	5f d3       	rcall	.+1726   	; 0xca8 <__udivmodsi4>
 5ea:	79 01       	movw	r14, r18
 5ec:	8a 01       	movw	r16, r20
  disbuf.u = tmp1;
 5ee:	20 93 1c 01 	sts	0x011C, r18
 5f2:	30 93 1d 01 	sts	0x011D, r19
 5f6:	40 93 1e 01 	sts	0x011E, r20
 5fa:	50 93 1f 01 	sts	0x011F, r21
  // 测试计算结果
  //htobcd5(&bcd_buf[0], disbuf.u);

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


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

⌨️ 快捷键说明

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