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

📄 main.lss

📁 DS18B20最全驱动.包含CRC8算法.ROM Search等.主机采用AVR mega16或者mega32.原创作品.
💻 LSS
📖 第 1 页 / 共 5 页
字号:
	}
}
 4c6:	28 96       	adiw	r28, 0x08	; 8
 4c8:	0f b6       	in	r0, 0x3f	; 63
 4ca:	f8 94       	cli
 4cc:	de bf       	out	0x3e, r29	; 62
 4ce:	0f be       	out	0x3f, r0	; 63
 4d0:	cd bf       	out	0x3d, r28	; 61
 4d2:	cf 91       	pop	r28
 4d4:	df 91       	pop	r29
 4d6:	1f 91       	pop	r17
 4d8:	0f 91       	pop	r16
 4da:	ff 90       	pop	r15
 4dc:	ef 90       	pop	r14
 4de:	08 95       	ret

000004e0 <TemperatureProcessing>:

//温度处理函数,按照用户设定,有温度报警时,可以有一个IO进行开启或关闭操作.
//目前软件设定是一个加热设备.低温开启IO,高温关闭IO.
//在参数设置中,可以设置是否启用温度报警IO机制
void TemperatureProcessing(void)
{
 4e0:	0f 93       	push	r16
 4e2:	1f 93       	push	r17
 4e4:	df 93       	push	r29
 4e6:	cf 93       	push	r28
 4e8:	cd b7       	in	r28, 0x3d	; 61
 4ea:	de b7       	in	r29, 0x3e	; 62
 4ec:	2a 97       	sbiw	r28, 0x0a	; 10
 4ee:	0f b6       	in	r0, 0x3f	; 63
 4f0:	f8 94       	cli
 4f2:	de bf       	out	0x3e, r29	; 62
 4f4:	0f be       	out	0x3f, r0	; 63
 4f6:	cd bf       	out	0x3d, r28	; 61
	unsigned char temp[10]={'\0'};
 4f8:	8e 01       	movw	r16, r28
 4fa:	0f 5f       	subi	r16, 0xFF	; 255
 4fc:	1f 4f       	sbci	r17, 0xFF	; 255
 4fe:	8a e0       	ldi	r24, 0x0A	; 10
 500:	f8 01       	movw	r30, r16
 502:	11 92       	st	Z+, r1
 504:	8a 95       	dec	r24
 506:	e9 f7       	brne	.-6      	; 0x502 <TemperatureProcessing+0x22>
	
	UartSendString((unsigned char *)"当前温度是:");
 508:	8f e7       	ldi	r24, 0x7F	; 127
 50a:	90 e0       	ldi	r25, 0x00	; 0
 50c:	0e 94 33 04 	call	0x866	; 0x866 <UartSendString>
	if(_T)	//+
 510:	80 91 ce 00 	lds	r24, 0x00CE
 514:	88 23       	and	r24, r24
 516:	09 f4       	brne	.+2      	; 0x51a <TemperatureProcessing+0x3a>
 518:	65 c0       	rjmp	.+202    	; 0x5e4 <TemperatureProcessing+0x104>
	{
		if(TemperatrueBuffer[0])		//最高百位
 51a:	80 91 ec 00 	lds	r24, 0x00EC
 51e:	88 23       	and	r24, r24
 520:	51 f1       	breq	.+84     	; 0x576 <TemperatureProcessing+0x96>
		{
			sprintf(temp,"%d%d%d.%d%d%d",TemperatrueBuffer[0]%256,TemperatrueBuffer[1]%256,TemperatrueBuffer[2]%256,TemperatrueBuffer[3]%256,TemperatrueBuffer[4]%256,TemperatrueBuffer[5]%256);
 522:	80 91 f1 00 	lds	r24, 0x00F1
 526:	20 91 f0 00 	lds	r18, 0x00F0
 52a:	40 91 ef 00 	lds	r20, 0x00EF
 52e:	60 91 ee 00 	lds	r22, 0x00EE
 532:	e0 91 ed 00 	lds	r30, 0x00ED
 536:	a0 91 ec 00 	lds	r26, 0x00EC
 53a:	90 e0       	ldi	r25, 0x00	; 0
 53c:	9f 93       	push	r25
 53e:	8f 93       	push	r24
 540:	30 e0       	ldi	r19, 0x00	; 0
 542:	3f 93       	push	r19
 544:	2f 93       	push	r18
 546:	50 e0       	ldi	r21, 0x00	; 0
 548:	5f 93       	push	r21
 54a:	4f 93       	push	r20
 54c:	70 e0       	ldi	r23, 0x00	; 0
 54e:	7f 93       	push	r23
 550:	6f 93       	push	r22
 552:	f0 e0       	ldi	r31, 0x00	; 0
 554:	ff 93       	push	r31
 556:	ef 93       	push	r30
 558:	b0 e0       	ldi	r27, 0x00	; 0
 55a:	bf 93       	push	r27
 55c:	af 93       	push	r26
 55e:	8b e8       	ldi	r24, 0x8B	; 139
 560:	90 e0       	ldi	r25, 0x00	; 0
 562:	9f 93       	push	r25
 564:	8f 93       	push	r24
 566:	1f 93       	push	r17
 568:	0f 93       	push	r16
 56a:	0e 94 cd 04 	call	0x99a	; 0x99a <sprintf>
 56e:	8d b7       	in	r24, 0x3d	; 61
 570:	9e b7       	in	r25, 0x3e	; 62
 572:	40 96       	adiw	r24, 0x10	; 16
 574:	84 c0       	rjmp	.+264    	; 0x67e <TemperatureProcessing+0x19e>
		}
		else if(TemperatrueBuffer[1])	//最高十位
 576:	80 91 ed 00 	lds	r24, 0x00ED
 57a:	88 23       	and	r24, r24
 57c:	e1 f0       	breq	.+56     	; 0x5b6 <TemperatureProcessing+0xd6>
		{
			sprintf(temp,"%d%d.%d%d%d",TemperatrueBuffer[1]%256,TemperatrueBuffer[2]%256,TemperatrueBuffer[3]%256,TemperatrueBuffer[4]%256,TemperatrueBuffer[5]%256);
 57e:	80 91 f1 00 	lds	r24, 0x00F1
 582:	20 91 f0 00 	lds	r18, 0x00F0
 586:	40 91 ef 00 	lds	r20, 0x00EF
 58a:	60 91 ee 00 	lds	r22, 0x00EE
 58e:	e0 91 ed 00 	lds	r30, 0x00ED
 592:	90 e0       	ldi	r25, 0x00	; 0
 594:	9f 93       	push	r25
 596:	8f 93       	push	r24
 598:	30 e0       	ldi	r19, 0x00	; 0
 59a:	3f 93       	push	r19
 59c:	2f 93       	push	r18
 59e:	50 e0       	ldi	r21, 0x00	; 0
 5a0:	5f 93       	push	r21
 5a2:	4f 93       	push	r20
 5a4:	70 e0       	ldi	r23, 0x00	; 0
 5a6:	7f 93       	push	r23
 5a8:	6f 93       	push	r22
 5aa:	f0 e0       	ldi	r31, 0x00	; 0
 5ac:	ff 93       	push	r31
 5ae:	ef 93       	push	r30
 5b0:	89 e9       	ldi	r24, 0x99	; 153
 5b2:	90 e0       	ldi	r25, 0x00	; 0
 5b4:	36 c0       	rjmp	.+108    	; 0x622 <TemperatureProcessing+0x142>
		}
		else							//最高个位
		{
			sprintf(temp,"%d.%d%d%d",TemperatrueBuffer[2]%256,TemperatrueBuffer[3]%256,TemperatrueBuffer[4]%256,TemperatrueBuffer[5]%256);
 5b6:	80 91 f1 00 	lds	r24, 0x00F1
 5ba:	20 91 f0 00 	lds	r18, 0x00F0
 5be:	40 91 ef 00 	lds	r20, 0x00EF
 5c2:	60 91 ee 00 	lds	r22, 0x00EE
 5c6:	90 e0       	ldi	r25, 0x00	; 0
 5c8:	9f 93       	push	r25
 5ca:	8f 93       	push	r24
 5cc:	30 e0       	ldi	r19, 0x00	; 0
 5ce:	3f 93       	push	r19
 5d0:	2f 93       	push	r18
 5d2:	50 e0       	ldi	r21, 0x00	; 0
 5d4:	5f 93       	push	r21
 5d6:	4f 93       	push	r20
 5d8:	70 e0       	ldi	r23, 0x00	; 0
 5da:	7f 93       	push	r23
 5dc:	6f 93       	push	r22
 5de:	85 ea       	ldi	r24, 0xA5	; 165
 5e0:	90 e0       	ldi	r25, 0x00	; 0
 5e2:	44 c0       	rjmp	.+136    	; 0x66c <TemperatureProcessing+0x18c>
		}
	}
	else	//-
	{
		if(TemperatrueBuffer[1])		//最高十位
 5e4:	80 91 ed 00 	lds	r24, 0x00ED
 5e8:	88 23       	and	r24, r24
 5ea:	51 f1       	breq	.+84     	; 0x640 <TemperatureProcessing+0x160>
		{
			sprintf(temp,"-%d%d.%d%d%d",TemperatrueBuffer[1]%256,TemperatrueBuffer[2]%256,TemperatrueBuffer[3]%256,TemperatrueBuffer[4]%256,TemperatrueBuffer[5]%256);
 5ec:	80 91 f1 00 	lds	r24, 0x00F1
 5f0:	20 91 f0 00 	lds	r18, 0x00F0
 5f4:	40 91 ef 00 	lds	r20, 0x00EF
 5f8:	60 91 ee 00 	lds	r22, 0x00EE
 5fc:	e0 91 ed 00 	lds	r30, 0x00ED
 600:	90 e0       	ldi	r25, 0x00	; 0
 602:	9f 93       	push	r25
 604:	8f 93       	push	r24
 606:	30 e0       	ldi	r19, 0x00	; 0
 608:	3f 93       	push	r19
 60a:	2f 93       	push	r18
 60c:	50 e0       	ldi	r21, 0x00	; 0
 60e:	5f 93       	push	r21
 610:	4f 93       	push	r20
 612:	70 e0       	ldi	r23, 0x00	; 0
 614:	7f 93       	push	r23
 616:	6f 93       	push	r22
 618:	f0 e0       	ldi	r31, 0x00	; 0
 61a:	ff 93       	push	r31
 61c:	ef 93       	push	r30
 61e:	8f ea       	ldi	r24, 0xAF	; 175
 620:	90 e0       	ldi	r25, 0x00	; 0
 622:	9f 93       	push	r25
 624:	8f 93       	push	r24
 626:	1f 93       	push	r17
 628:	0f 93       	push	r16
 62a:	0e 94 cd 04 	call	0x99a	; 0x99a <sprintf>
 62e:	ed b7       	in	r30, 0x3d	; 61
 630:	fe b7       	in	r31, 0x3e	; 62
 632:	3e 96       	adiw	r30, 0x0e	; 14
 634:	0f b6       	in	r0, 0x3f	; 63
 636:	f8 94       	cli
 638:	fe bf       	out	0x3e, r31	; 62
 63a:	0f be       	out	0x3f, r0	; 63
 63c:	ed bf       	out	0x3d, r30	; 61
 63e:	24 c0       	rjmp	.+72     	; 0x688 <TemperatureProcessing+0x1a8>
		}
		else							//最高个位
		{
			sprintf(temp,"-%d.%d%d%d",TemperatrueBuffer[2]%256,TemperatrueBuffer[3]%256,TemperatrueBuffer[4]%256,TemperatrueBuffer[5]%256);
 640:	80 91 f1 00 	lds	r24, 0x00F1
 644:	20 91 f0 00 	lds	r18, 0x00F0
 648:	40 91 ef 00 	lds	r20, 0x00EF
 64c:	60 91 ee 00 	lds	r22, 0x00EE
 650:	90 e0       	ldi	r25, 0x00	; 0
 652:	9f 93       	push	r25
 654:	8f 93       	push	r24
 656:	30 e0       	ldi	r19, 0x00	; 0
 658:	3f 93       	push	r19
 65a:	2f 93       	push	r18
 65c:	50 e0       	ldi	r21, 0x00	; 0
 65e:	5f 93       	push	r21
 660:	4f 93       	push	r20
 662:	70 e0       	ldi	r23, 0x00	; 0
 664:	7f 93       	push	r23
 666:	6f 93       	push	r22
 668:	8c eb       	ldi	r24, 0xBC	; 188
 66a:	90 e0       	ldi	r25, 0x00	; 0
 66c:	9f 93       	push	r25
 66e:	8f 93       	push	r24
 670:	1f 93       	push	r17
 672:	0f 93       	push	r16
 674:	0e 94 cd 04 	call	0x99a	; 0x99a <sprintf>
 678:	8d b7       	in	r24, 0x3d	; 61
 67a:	9e b7       	in	r25, 0x3e	; 62
 67c:	0c 96       	adiw	r24, 0x0c	; 12
 67e:	0f b6       	in	r0, 0x3f	; 63
 680:	f8 94       	cli
 682:	9e bf       	out	0x3e, r25	; 62
 684:	0f be       	out	0x3f, r0	; 63
 686:	8d bf       	out	0x3d, r24	; 61
		}
	}
	UartSendString(temp);
 688:	ce 01       	movw	r24, r28
 68a:	01 96       	adiw	r24, 0x01	; 1
 68c:	0e 94 33 04 	call	0x866	; 0x866 <UartSendString>
	UartSendString((unsigned char *)"℃");
 690:	87 ec       	ldi	r24, 0xC7	; 199
 692:	90 e0       	ldi	r25, 0x00	; 0
 694:	0e 94 33 04 	call	0x866	; 0x866 <UartSendString>
	UartSendString((unsigned char *)"\r\n");
 698:	8c e7       	ldi	r24, 0x7C	; 124
 69a:	90 e0       	ldi	r25, 0x00	; 0
 69c:	0e 94 33 04 	call	0x866	; 0x866 <UartSendString>
}
 6a0:	2a 96       	adiw	r28, 0x0a	; 10
 6a2:	0f b6       	in	r0, 0x3f	; 63
 6a4:	f8 94       	cli
 6a6:	de bf       	out	0x3e, r29	; 62
 6a8:	0f be       	out	0x3f, r0	; 63
 6aa:	cd bf       	out	0x3d, r28	; 61
 6ac:	cf 91       	pop	r28
 6ae:	df 91       	pop	r29
 6b0:	1f 91       	pop	r17
 6b2:	0f 91       	pop	r16
 6b4:	08 95       	ret

000006b6 <DS18B20Processing>:


void DS18B20Processing(void)
{
 6b6:	80 91 cb 00 	lds	r24, 0x00CB
 6ba:	88 23       	and	r24, r24
 6bc:	29 f0       	breq	.+10     	; 0x6c8 <DS18B20Processing+0x12>
	if(OneWireConnectFlag)
	{
		ReadTemperature();
 6be:	0e 94 72 01 	call	0x2e4	; 0x2e4 <ReadTemperature>
		TemperatureProcessing();
 6c2:	0e 94 70 02 	call	0x4e0	; 0x4e0 <TemperatureProcessing>
 6c6:	08 95       	ret
	}
	else
	{
		if(EnableOneWireFlag)//如果的确设置的测温器件,那么隔ns检测一下器件是否重新连接
 6c8:	80 91 ca 00 	lds	r24, 0x00CA
 6cc:	88 23       	and	r24, r24
 6ce:	41 f0       	breq	.+16     	; 0x6e0 <DS18B20Processing+0x2a>
		{
			if(CheckDS18B20TimeoutFlag)
 6d0:	80 91 de 00 	lds	r24, 0x00DE
 6d4:	88 23       	and	r24, r24
 6d6:	21 f0       	breq	.+8      	; 0x6e0 <DS18B20Processing+0x2a>
			{
				CheckDS18B20TimeoutFlag=0;
 6d8:	10 92 de 00 	sts	0x00DE, r1
				OneWireInit();
 6dc:	0e 94 e5 00 	call	0x1ca	; 0x1ca <OneWireInit>
 6e0:	08 95       	ret

000006e2 <Timer0Init>:

//--------------定时器0——5ms程序--------------
//系统时钟:11059200Hz  分频:1024
//Timer0初始化
void Timer0Init(void)			//5ms
{
 6e2:	13 be       	out	0x33, r1	; 51
	TCCR0=0x00;
	TCNT0=0xcb;
 6e4:	8b ec       	ldi	r24, 0xCB	; 203
 6e6:	82 bf       	out	0x32, r24	; 50
	OCR0=0x35;
 6e8:	85 e3       	ldi	r24, 0x35	; 53
 6ea:	8c bf       	out	0x3c, r24	; 60
	TCCR0=(1<<WGM01)|(1<<CS02)|(1<<CS00);
 6ec:	8d e0       	ldi	r24, 0x0D	; 13
 6ee:	83 bf       	out	0x33, r24	; 51
	TIMSK|=(1<<OCIE0);
 6f0:	89 b7       	in	r24, 0x39	; 57
 6f2:	82 60       	ori	r24, 0x02	; 2
 6f4:	89 bf       	out	0x39, r24	; 57
}
 6f6:	08 95       	ret

000006f8 <__vector_10>:

//Timer0 CTC中断,此中断发生周期是:5毫秒
ISR(TIMER0_COMP_vect)
{
 6f8:	1f 92       	push	r1
 6fa:	0f 92       	push	r0
 6fc:	0f b6       	in	r0, 0x3f	; 63
 6fe:	0f 92       	push	r0
 700:	11 24       	eor	r1, r1
 702:	2f 93       	push	r18
 704:	8f 93       	push	r24
 706:	9f 93       	push	r25
	if(UartTimeoutFlag)
 708:	80 91 e1 00 	lds	r24, 0x00E1
 70c:	88 23       	and	r24, r24
 70e:	91 f0       	breq	.+36     	; 0x734 <__vector_10+0x3c>
	{
		if(WaitForUartCounter>=1)
 710:	80 91 e2 00 	lds	r24, 0x00E2
 714:	88 23       	and	r24, r24
 716:	49 f0       	breq	.+18     	; 0x72a <__vector_10+0x32>
		{
			UartTimeoutFlag=0;
 718:	10 92 e1 00 	sts	0x00E1, r1
			WaitForUartCounter=0;
 71c:	10 92 e2 00 	sts	0x00E2, r1
			UartDataReadyFlag=1;
 720:	81 e0       	ldi	r24, 0x01	; 1
 722:	80 93 e3 00 	sts	0x00E3, r24
			UCSRB&=~(1<<RXCIE);		//禁止接收
 726:	57 98       	cbi	0x0a, 7	; 10
 728:	05 c0       	rjmp	.+10     	; 0x734 <__vector_10+0x3c>
		}
		else WaitForUartCounter++;
 72a:	80 91 e2 00 	lds	r24, 0x00E2
 72e:	8f 5f       	subi	r24, 0xFF	; 255
 730:	80 93 e2 00 	sts	0x00E2, r24
	}
	if(ReadTFlag)
 734:	80 91 d8 00 	lds	r24, 0x00D8
 738:	88 23       	and	r24, r24
 73a:	89 f0       	breq	.+34     	; 0x75e <__vector_10+0x66>
	{
		if(ReadTCounter>=ReadTCounterTimeout)
 73c:	80 91 d9 00 	lds	r24, 0x00D9
 740:	88 32       	cpi	r24, 0x28	; 40
 742:	40 f0       	brcs	.+16     	; 0x754 <__vector_10+0x5c>
		{
			ReadTFlag=0;

⌨️ 快捷键说明

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