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

📄 main.lss

📁 DS18B20测试温度
💻 LSS
📖 第 1 页 / 共 4 页
字号:
 3dc:	9a 95       	dec	r25
 3de:	f1 f7       	brne	.-4      	; 0x3dc <Reset_DS18B20+0x40>
 3e0:	82 95       	swap	r24
 3e2:	8f 70       	andi	r24, 0x0F	; 15
 3e4:	80 95       	com	r24
 3e6:	81 70       	andi	r24, 0x01	; 1
 3e8:	99 27       	eor	r25, r25
 3ea:	08 95       	ret

000003ec <Write_DS18B20>:


//写命令或数据到温度芯片DS18B20(发送一个字节)*****************************//
void Write_DS18B20(uchar data)
{
 3ec:	98 2f       	mov	r25, r24
   uchar i=0;
   Set_DS18B20_dq_DDR();
 3ee:	8c 9a       	sbi	0x11, 4	; 17
 3f0:	20 e0       	ldi	r18, 0x00	; 0
 3f2:	65 e1       	ldi	r22, 0x15	; 21
 3f4:	55 ef       	ldi	r21, 0xF5	; 245
 3f6:	40 e0       	ldi	r20, 0x00	; 0
 3f8:	3a e0       	ldi	r19, 0x0A	; 10
   for(i=0;i<8;i++)
   {
     if(data&0x01)
 3fa:	90 ff       	sbrs	r25, 0
 3fc:	07 c0       	rjmp	.+14     	; 0x40c <Write_DS18B20+0x20>
	 {
       Clr_DS18B20_dq();
 3fe:	94 98       	cbi	0x12, 4	; 18
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 400:	86 2f       	mov	r24, r22
 402:	8a 95       	dec	r24
 404:	f1 f7       	brne	.-4      	; 0x402 <Write_DS18B20+0x16>
       _delay_us(8);        
       Set_DS18B20_dq();
 406:	94 9a       	sbi	0x12, 4	; 18
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 408:	85 2f       	mov	r24, r21
 40a:	06 c0       	rjmp	.+12     	; 0x418 <Write_DS18B20+0x2c>
       _delay_us(92);
      }
       else
       {
         Clr_DS18B20_dq();
 40c:	94 98       	cbi	0x12, 4	; 18
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 40e:	84 2f       	mov	r24, r20
 410:	8a 95       	dec	r24
 412:	f1 f7       	brne	.-4      	; 0x410 <Write_DS18B20+0x24>
         _delay_us(98);
         Set_DS18B20_dq();
 414:	94 9a       	sbi	0x12, 4	; 18
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 416:	83 2f       	mov	r24, r19
 418:	8a 95       	dec	r24
 41a:	f1 f7       	brne	.-4      	; 0x418 <Write_DS18B20+0x2c>
 41c:	2f 5f       	subi	r18, 0xFF	; 255
 41e:	28 30       	cpi	r18, 0x08	; 8
 420:	11 f0       	breq	.+4      	; 0x426 <Write_DS18B20+0x3a>
         _delay_us(4);
		}
       data>>=1;
 422:	96 95       	lsr	r25
 424:	ea cf       	rjmp	.-44     	; 0x3fa <Write_DS18B20+0xe>
 426:	08 95       	ret

00000428 <Read_DS18B20>:
   } 
}

//从温度芯片DS18B20读配置或数据(接收一个字节)*****************************//
uchar Read_DS18B20(void)
{
 428:	8c 9a       	sbi	0x11, 4	; 17
 42a:	90 e0       	ldi	r25, 0x00	; 0
 42c:	20 e0       	ldi	r18, 0x00	; 0
 42e:	55 e1       	ldi	r21, 0x15	; 21
 430:	4a e0       	ldi	r20, 0x0A	; 10
 432:	3a eb       	ldi	r19, 0xBA	; 186
  uchar data=0,i=0;
  Set_DS18B20_dq_DDR();
  for(i=0;i<8;i++)
  {
    data>>=1;
 434:	96 95       	lsr	r25
	Clr_DS18B20_dq();
 436:	94 98       	cbi	0x12, 4	; 18
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 438:	85 2f       	mov	r24, r21
 43a:	8a 95       	dec	r24
 43c:	f1 f7       	brne	.-4      	; 0x43a <Read_DS18B20+0x12>
    _delay_us(8);
    Set_DS18B20_dq();
 43e:	94 9a       	sbi	0x12, 4	; 18
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 440:	84 2f       	mov	r24, r20
 442:	8a 95       	dec	r24
 444:	f1 f7       	brne	.-4      	; 0x442 <Read_DS18B20+0x1a>
    _delay_us(4);
	if(In_DS18B20_dq()) 
 446:	84 99       	sbic	0x10, 4	; 16
      data|=0x80;
 448:	90 68       	ori	r25, 0x80	; 128
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 44a:	83 2f       	mov	r24, r19
 44c:	8a 95       	dec	r24
 44e:	f1 f7       	brne	.-4      	; 0x44c <Read_DS18B20+0x24>
 450:	2f 5f       	subi	r18, 0xFF	; 255
 452:	28 30       	cpi	r18, 0x08	; 8
 454:	79 f7       	brne	.-34     	; 0x434 <Read_DS18B20+0xc>
    _delay_us(70);
//     data>>=1;
  }
  return(data);
}
 456:	89 2f       	mov	r24, r25
 458:	99 27       	eor	r25, r25
 45a:	08 95       	ret

0000045c <Get_Temperature>:

//读取温度****************************************************************//
void Get_Temperature()
{
 45c:	0e 94 ce 01 	call	0x39c	; 0x39c <Reset_DS18B20>
	Reset_DS18B20();				  // 总线复位 
	Write_DS18B20(DS18B20_skip_rom);  	     
 460:	8c ec       	ldi	r24, 0xCC	; 204
 462:	0e 94 f6 01 	call	0x3ec	; 0x3ec <Write_DS18B20>
	Write_DS18B20(DS18B20_read_ram);  
 466:	8e eb       	ldi	r24, 0xBE	; 190
 468:	0e 94 f6 01 	call	0x3ec	; 0x3ec <Write_DS18B20>
	temp_low=Read_DS18B20();	  // 温度的低8位
 46c:	0e 94 14 02 	call	0x428	; 0x428 <Read_DS18B20>
 470:	80 93 74 00 	sts	0x0074, r24
	temp_high=Read_DS18B20();	  // 温度的高8位
 474:	0e 94 14 02 	call	0x428	; 0x428 <Read_DS18B20>
 478:	80 93 72 00 	sts	0x0072, r24
	Reset_DS18B20();		 		    
 47c:	0e 94 ce 01 	call	0x39c	; 0x39c <Reset_DS18B20>
	Write_DS18B20(DS18B20_skip_rom); 
 480:	8c ec       	ldi	r24, 0xCC	; 204
 482:	0e 94 f6 01 	call	0x3ec	; 0x3ec <Write_DS18B20>
	Write_DS18B20(DS18B20_convert_tem);  	
 486:	84 e4       	ldi	r24, 0x44	; 68
 488:	0e 94 f6 01 	call	0x3ec	; 0x3ec <Write_DS18B20>
 48c:	08 95       	ret

0000048e <Convert_Temperature>:

}

//将得到的数据转换成摄氏度************************************************//
int Convert_Temperature(void)
{
 48e:	80 91 72 00 	lds	r24, 0x0072
 492:	20 91 74 00 	lds	r18, 0x0074
 496:	87 ff       	sbrs	r24, 7
 498:	13 c0       	rjmp	.+38     	; 0x4c0 <Convert_Temperature+0x32>
    int T_Value; 
	uchar flag=0;
	if(temp_high>127)
	{
	 	temp_high = 256-temp_high;
 49a:	81 95       	neg	r24
 49c:	80 93 72 00 	sts	0x0072, r24
		temp_low  = 256-temp_low;
 4a0:	21 95       	neg	r18
 4a2:	20 93 74 00 	sts	0x0074, r18
		flag=1;	
	}
	T_Value = (temp_high*256+temp_low)/16;	
 4a6:	99 27       	eor	r25, r25
 4a8:	98 2f       	mov	r25, r24
 4aa:	88 27       	eor	r24, r24
 4ac:	82 0f       	add	r24, r18
 4ae:	91 1d       	adc	r25, r1
 4b0:	60 e1       	ldi	r22, 0x10	; 16
 4b2:	70 e0       	ldi	r23, 0x00	; 0
 4b4:	0e 94 9d 03 	call	0x73a	; 0x73a <__divmodhi4>
	if(flag)
	{
	    T_Value=(-1)*T_Value;
 4b8:	70 95       	com	r23
 4ba:	61 95       	neg	r22
 4bc:	7f 4f       	sbci	r23, 0xFF	; 255
 4be:	09 c0       	rjmp	.+18     	; 0x4d2 <Convert_Temperature+0x44>
 4c0:	99 27       	eor	r25, r25
 4c2:	98 2f       	mov	r25, r24
 4c4:	88 27       	eor	r24, r24
 4c6:	82 0f       	add	r24, r18
 4c8:	91 1d       	adc	r25, r1
 4ca:	60 e1       	ldi	r22, 0x10	; 16
 4cc:	70 e0       	ldi	r23, 0x00	; 0
 4ce:	0e 94 9d 03 	call	0x73a	; 0x73a <__divmodhi4>
	}
    
	return T_Value;
}
 4d2:	cb 01       	movw	r24, r22
 4d4:	08 95       	ret

000004d6 <main>:
#include"DS18B20.c"


int main(void)
{
 4d6:	0e 94 7f 00 	call	0xfe	; 0xfe <disp_Initial>
   uchar temp;
   disp_Initial();
   while(1)
    {
     Reset_DS18B20();
 4da:	0e 94 ce 01 	call	0x39c	; 0x39c <Reset_DS18B20>
     Get_Temperature();
 4de:	0e 94 2e 02 	call	0x45c	; 0x45c <Get_Temperature>
	 temp=Convert_Temperature();
 4e2:	0e 94 47 02 	call	0x48e	; 0x48e <Convert_Temperature>
	 PrintInt(temp);
 4e6:	99 27       	eor	r25, r25
 4e8:	aa 27       	eor	r26, r26
 4ea:	bb 27       	eor	r27, r27
 4ec:	bc 01       	movw	r22, r24
 4ee:	cd 01       	movw	r24, r26
 4f0:	0e 94 84 00 	call	0x108	; 0x108 <PrintInt>
	 delay(20);
 4f4:	84 e1       	ldi	r24, 0x14	; 20
 4f6:	0e 94 47 00 	call	0x8e	; 0x8e <delay>
 4fa:	ef cf       	rjmp	.-34     	; 0x4da <main+0x4>

000004fc <__subsf3>:
 4fc:	50 58       	subi	r21, 0x80	; 128

000004fe <__addsf3>:
 4fe:	19 2e       	mov	r1, r25
 500:	84 d0       	rcall	.+264    	; 0x60a <__fp_split3>
 502:	01 d0       	rcall	.+2      	; 0x506 <__addsf3x>
 504:	6a c0       	rjmp	.+212    	; 0x5da <__fp_merge>

00000506 <__addsf3x>:
 506:	ba 17       	cp	r27, r26
 508:	62 07       	cpc	r22, r18
 50a:	73 07       	cpc	r23, r19
 50c:	84 07       	cpc	r24, r20
 50e:	95 07       	cpc	r25, r21
 510:	b1 f1       	breq	.+108    	; 0x57e <__addsf3x+0x78>
 512:	88 f4       	brcc	.+34     	; 0x536 <__addsf3x+0x30>
 514:	0e f4       	brtc	.+2      	; 0x518 <__addsf3x+0x12>
 516:	10 94       	com	r1
 518:	0b 2e       	mov	r0, r27
 51a:	ba 2f       	mov	r27, r26
 51c:	a0 2d       	mov	r26, r0
 51e:	06 2e       	mov	r0, r22
 520:	62 2f       	mov	r22, r18
 522:	20 2d       	mov	r18, r0
 524:	07 2e       	mov	r0, r23
 526:	73 2f       	mov	r23, r19
 528:	30 2d       	mov	r19, r0
 52a:	08 2e       	mov	r0, r24
 52c:	84 2f       	mov	r24, r20
 52e:	40 2d       	mov	r20, r0
 530:	09 2e       	mov	r0, r25
 532:	95 2f       	mov	r25, r21
 534:	50 2d       	mov	r21, r0
 536:	ff 27       	eor	r31, r31
 538:	55 23       	and	r21, r21
 53a:	b9 f0       	breq	.+46     	; 0x56a <__addsf3x+0x64>
 53c:	59 1b       	sub	r21, r25
 53e:	49 f0       	breq	.+18     	; 0x552 <__addsf3x+0x4c>
 540:	57 3e       	cpi	r21, 0xE7	; 231
 542:	98 f0       	brcs	.+38     	; 0x56a <__addsf3x+0x64>
 544:	46 95       	lsr	r20
 546:	37 95       	ror	r19
 548:	27 95       	ror	r18
 54a:	a7 95       	ror	r26
 54c:	f0 40       	sbci	r31, 0x00	; 0
 54e:	53 95       	inc	r21
 550:	c9 f7       	brne	.-14     	; 0x544 <__addsf3x+0x3e>
 552:	76 f0       	brts	.+28     	; 0x570 <__addsf3x+0x6a>
 554:	ba 0f       	add	r27, r26
 556:	62 1f       	adc	r22, r18
 558:	73 1f       	adc	r23, r19
 55a:	84 1f       	adc	r24, r20
 55c:	30 f4       	brcc	.+12     	; 0x56a <__addsf3x+0x64>
 55e:	87 95       	ror	r24
 560:	77 95       	ror	r23
 562:	67 95       	ror	r22
 564:	b7 95       	ror	r27
 566:	f0 40       	sbci	r31, 0x00	; 0
 568:	93 95       	inc	r25
 56a:	17 fa       	bst	r1, 7
 56c:	0f 2e       	mov	r0, r31
 56e:	08 95       	ret
 570:	bf 1b       	sub	r27, r31
 572:	bb 27       	eor	r27, r27
 574:	ba 0b       	sbc	r27, r26
 576:	62 0b       	sbc	r22, r18
 578:	73 0b       	sbc	r23, r19
 57a:	84 0b       	sbc	r24, r20
 57c:	f6 cf       	rjmp	.-20     	; 0x56a <__addsf3x+0x64>
 57e:	de f6       	brtc	.-74     	; 0x536 <__addsf3x+0x30>
 580:	70 c0       	rjmp	.+224    	; 0x662 <__fp_zerox>

00000582 <__fixsfsi>:
 582:	97 fb       	bst	r25, 7
 584:	4e d0       	rcall	.+156    	; 0x622 <__fp_split1>
 586:	9f 37       	cpi	r25, 0x7F	; 127
 588:	38 f0       	brcs	.+14     	; 0x598 <__fixsfsi+0x16>
 58a:	fe e9       	ldi	r31, 0x9E	; 158
 58c:	f9 1b       	sub	r31, r25
 58e:	98 2f       	mov	r25, r24
 590:	87 2f       	mov	r24, r23
 592:	76 2f       	mov	r23, r22
 594:	6b 2f       	mov	r22, r27
 596:	05 c0       	rjmp	.+10     	; 0x5a2 <__fixsfsi+0x20>
 598:	61 c0       	rjmp	.+194    	; 0x65c <__fp_zero>
 59a:	96 95       	lsr	r25
 59c:	87 95       	ror	r24
 59e:	77 95       	ror	r23
 5a0:	67 95       	ror	r22
 5a2:	f1 50       	subi	r31, 0x01	; 1
 5a4:	d0 f7       	brcc	.-12     	; 0x59a <__fixsfsi+0x18>
 5a6:	3e f4       	brtc	.+14     	; 0x5b6 <__fp_lneg+0xe>

000005a8 <__fp_lneg>:
 5a8:	90 95       	com	r25

⌨️ 快捷键说明

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