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

📄 main.lss

📁 AVR红外遥控
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     3b6:	43 98       	cbi	0x08, 3	; 8
     3b8:	08 95       	ret

000003ba <htobcd8>:
  
  return ;
  
}


// buff: BCD的数据指针,指向8单元的数组
// pdata: 数据最大99999999
// 转换正确返回: 1
u8_t htobcd8(u8_t *buff, u32_t pdata) {
     3ba:	ef 92       	push	r14
     3bc:	ff 92       	push	r15
     3be:	0f 93       	push	r16
     3c0:	1f 93       	push	r17
     3c2:	cf 93       	push	r28
     3c4:	df 93       	push	r29
     3c6:	ec 01       	movw	r28, r24
     3c8:	7a 01       	movw	r14, r20
     3ca:	8b 01       	movw	r16, r22

  
  if (pdata > 99999999) {
     3cc:	40 30       	cpi	r20, 0x00	; 0
     3ce:	81 ee       	ldi	r24, 0xE1	; 225
     3d0:	58 07       	cpc	r21, r24
     3d2:	85 ef       	ldi	r24, 0xF5	; 245
     3d4:	68 07       	cpc	r22, r24
     3d6:	85 e0       	ldi	r24, 0x05	; 5
     3d8:	78 07       	cpc	r23, r24
     3da:	08 f0       	brcs	.+2      	; 0x3de <htobcd8+0x24>
     3dc:	6d c0       	rjmp	.+218    	; 0x4b8 <htobcd8+0xfe>
    return 0;
  }
  else {
    buff[0]= pdata/10000000;     //  BCD码第8位
     3de:	cb 01       	movw	r24, r22
     3e0:	ba 01       	movw	r22, r20
     3e2:	20 e8       	ldi	r18, 0x80	; 128
     3e4:	36 e9       	ldi	r19, 0x96	; 150
     3e6:	48 e9       	ldi	r20, 0x98	; 152
     3e8:	50 e0       	ldi	r21, 0x00	; 0
     3ea:	f3 d5       	rcall	.+3046   	; 0xfd2 <__udivmodsi4>
     3ec:	28 83       	st	Y, r18
    pdata %= 10000000;
     3ee:	c8 01       	movw	r24, r16
     3f0:	b7 01       	movw	r22, r14
     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:	eb d5       	rcall	.+3030   	; 0xfd2 <__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:	e4 d5       	rcall	.+3016   	; 0xfd2 <__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:	dc d5       	rcall	.+3000   	; 0xfd2 <__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:	d5 d5       	rcall	.+2986   	; 0xfd2 <__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:	cd d5       	rcall	.+2970   	; 0xfd2 <__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:	c6 d5       	rcall	.+2956   	; 0xfd2 <__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:	be d5       	rcall	.+2940   	; 0xfd2 <__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:	b7 d5       	rcall	.+2926   	; 0xfd2 <__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:	af d5       	rcall	.+2910   	; 0xfd2 <__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:	a8 d5       	rcall	.+2896   	; 0xfd2 <__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:	a0 d5       	rcall	.+2880   	; 0xfd2 <__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:	99 d5       	rcall	.+2866   	; 0xfd2 <__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:	91 d5       	rcall	.+2850   	; 0xfd2 <__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:	6b d5       	rcall	.+2774   	; 0xfd2 <__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:	63 d5       	rcall	.+2758   	; 0xfd2 <__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:	5c d5       	rcall	.+2744   	; 0xfd2 <__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:	54 d5       	rcall	.+2728   	; 0xfd2 <__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:	4d d5       	rcall	.+2714   	; 0xfd2 <__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:	45 d5       	rcall	.+2698   	; 0xfd2 <__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:	3e d5       	rcall	.+2684   	; 0xfd2 <__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:	36 d5       	rcall	.+2668   	; 0xfd2 <__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:	af 92       	push	r10
     5b2:	bf 92       	push	r11
     5b4:	cf 92       	push	r12
     5b6:	df 92       	push	r13
     5b8:	ef 92       	push	r14
     5ba:	ff 92       	push	r15
     5bc:	0f 93       	push	r16
     5be:	1f 93       	push	r17
  u32_t tmp1, tmp2, tmp3;
  
  if ((flag0 & _BV(FLAG0_T1)) == 0) {
     5c0:	80 91 07 01 	lds	r24, 0x0107
     5c4:	81 ff       	sbrs	r24, 1
     5c6:	00 c1       	rjmp	.+512    	; 0x7c8 <proc_calculate+0x218>
    return; // 没到1秒,等待采样
  }
  else {
    flag0 &= ~_BV(FLAG0_T1);  // 清标志
     5c8:	80 91 07 01 	lds	r24, 0x0107
     5cc:	8d 7f       	andi	r24, 0xFD	; 253
     5ce:	80 93 07 01 	sts	0x0107, r24
  }
  

⌨️ 快捷键说明

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