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

📄 main.lss

📁 这是使用AVR GCC的读取DS18B20的代码。 代码功能很全
💻 LSS
📖 第 1 页 / 共 5 页
字号:
	#ifndef OW_ONE_BUS
	//ow_set_bus(&PIND,&PORTD,&DDRD,PD6);
	#endif
	
	sei();
     738:	78 94       	sei
	
	uart_puts_P( "\rDS18X20 1-Wire-Reader Demo by Martin Thomas\r" );
     73a:	8a e9       	ldi	r24, 0x9A	; 154
     73c:	90 e0       	ldi	r25, 0x00	; 0
     73e:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
	uart_puts_P( "-------------------------------------------" );
     742:	88 ec       	ldi	r24, 0xC8	; 200
     744:	90 e0       	ldi	r25, 0x00	; 0
     746:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
	
	// dbg uart_puts_P( "\r" );
	// dbg uart_puti((int) OW_CONF_DELAYOFFSET);
	// dbg uart_puts_P( "\r" );
	
	nSensors = search_sensors();
     74a:	0e 94 c8 02 	call	0x590 <search_sensors>
     74e:	c8 2e       	mov	r12, r24
	uart_puti((int) nSensors);
     750:	99 27       	eor	r25, r25
     752:	0e 94 a0 0b 	call	0x1740 <uart_puti>
	uart_puts_P( " DS18X20 Sensor(s) available:\r" );
     756:	84 ef       	ldi	r24, 0xF4	; 244
     758:	90 e0       	ldi	r25, 0x00	; 0
     75a:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
	
	#ifdef DS18X20_VERBOSE
	for (i=0; i<nSensors; i++) {
     75e:	dd 24       	eor	r13, r13
     760:	dc 14       	cp	r13, r12
     762:	18 f5       	brcc	.+70     	; 0x7aa <main+0x86>
     764:	3f ea       	ldi	r19, 0xAF	; 175
     766:	e3 2e       	mov	r14, r19
     768:	30 e0       	ldi	r19, 0x00	; 0
     76a:	f3 2e       	mov	r15, r19
     76c:	00 e0       	ldi	r16, 0x00	; 0
     76e:	10 e0       	ldi	r17, 0x00	; 0
		uart_puts_P("# in Bus :");
     770:	83 e1       	ldi	r24, 0x13	; 19
     772:	91 e0       	ldi	r25, 0x01	; 1
     774:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
		uart_puti((int) i+1);
     778:	0f 5f       	subi	r16, 0xFF	; 255
     77a:	1f 4f       	sbci	r17, 0xFF	; 255
     77c:	c8 01       	movw	r24, r16
     77e:	0e 94 a0 0b 	call	0x1740 <uart_puti>
		uart_puts_P(" : ");
     782:	8e e1       	ldi	r24, 0x1E	; 30
     784:	91 e0       	ldi	r25, 0x01	; 1
     786:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
		DS18X20_show_id_uart( &gSensorIDs[i][0], OW_ROMCODE_SIZE );
     78a:	68 e0       	ldi	r22, 0x08	; 8
     78c:	70 e0       	ldi	r23, 0x00	; 0
     78e:	c7 01       	movw	r24, r14
     790:	0e 94 25 07 	call	0xe4a <DS18X20_show_id_uart>
		uart_puts_P( "\r" );
     794:	82 e2       	ldi	r24, 0x22	; 34
     796:	91 e0       	ldi	r25, 0x01	; 1
     798:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
     79c:	d3 94       	inc	r13
     79e:	28 e0       	ldi	r18, 0x08	; 8
     7a0:	30 e0       	ldi	r19, 0x00	; 0
     7a2:	e2 0e       	add	r14, r18
     7a4:	f3 1e       	adc	r15, r19
     7a6:	dc 14       	cp	r13, r12
     7a8:	18 f3       	brcs	.-58     	; 0x770 <main+0x4c>
	}
	#endif
		
	for (i=0; i<nSensors; i++) {
     7aa:	dd 24       	eor	r13, r13
     7ac:	dc 14       	cp	r13, r12
     7ae:	e0 f5       	brcc	.+120    	; 0x828 <main+0x104>
     7b0:	0f ea       	ldi	r16, 0xAF	; 175
     7b2:	10 e0       	ldi	r17, 0x00	; 0
     7b4:	58 01       	movw	r10, r16
     7b6:	ee 24       	eor	r14, r14
     7b8:	ff 24       	eor	r15, r15
		uart_puts_P("Sensor# ");
     7ba:	84 e2       	ldi	r24, 0x24	; 36
     7bc:	91 e0       	ldi	r25, 0x01	; 1
     7be:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
		uart_puti((int) i+1);
     7c2:	c7 01       	movw	r24, r14
     7c4:	01 96       	adiw	r24, 0x01	; 1
     7c6:	0e 94 a0 0b 	call	0x1740 <uart_puti>
		uart_puts_P(" is a ");
     7ca:	8d e2       	ldi	r24, 0x2D	; 45
     7cc:	91 e0       	ldi	r25, 0x01	; 1
     7ce:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
		if ( gSensorIDs[i][0] == DS18S20_ID)
     7d2:	f5 01       	movw	r30, r10
     7d4:	80 81       	ld	r24, Z
     7d6:	28 e0       	ldi	r18, 0x08	; 8
     7d8:	30 e0       	ldi	r19, 0x00	; 0
     7da:	a2 0e       	add	r10, r18
     7dc:	b3 1e       	adc	r11, r19
     7de:	80 31       	cpi	r24, 0x10	; 16
     7e0:	19 f4       	brne	.+6      	; 0x7e8 <main+0xc4>
			uart_puts_P("DS18S20/DS1820");
     7e2:	84 e3       	ldi	r24, 0x34	; 52
     7e4:	91 e0       	ldi	r25, 0x01	; 1
     7e6:	02 c0       	rjmp	.+4      	; 0x7ec <main+0xc8>
		else uart_puts_P("DS18B20");
     7e8:	83 e4       	ldi	r24, 0x43	; 67
     7ea:	91 e0       	ldi	r25, 0x01	; 1
     7ec:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
		uart_puts_P(" which is ");
     7f0:	8b e4       	ldi	r24, 0x4B	; 75
     7f2:	91 e0       	ldi	r25, 0x01	; 1
     7f4:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
		if ( DS18X20_get_power_status( &gSensorIDs[i][0] ) ==
     7f8:	c8 01       	movw	r24, r16
     7fa:	0e 94 57 09 	call	0x12ae <DS18X20_get_power_status>
     7fe:	88 23       	and	r24, r24
     800:	19 f4       	brne	.+6      	; 0x808 <main+0xe4>
			DS18X20_POWER_PARASITE ) 
			uart_puts_P( "parasite" );
     802:	86 e5       	ldi	r24, 0x56	; 86
     804:	91 e0       	ldi	r25, 0x01	; 1
     806:	02 c0       	rjmp	.+4      	; 0x80c <main+0xe8>
		else uart_puts_P( "externally" ); 
     808:	8f e5       	ldi	r24, 0x5F	; 95
     80a:	91 e0       	ldi	r25, 0x01	; 1
     80c:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
		uart_puts_P( " powered\r" );
     810:	8a e6       	ldi	r24, 0x6A	; 106
     812:	91 e0       	ldi	r25, 0x01	; 1
     814:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
     818:	d3 94       	inc	r13
     81a:	08 94       	sec
     81c:	e1 1c       	adc	r14, r1
     81e:	f1 1c       	adc	r15, r1
     820:	08 5f       	subi	r16, 0xF8	; 248
     822:	1f 4f       	sbci	r17, 0xFF	; 255
     824:	dc 14       	cp	r13, r12
     826:	48 f2       	brcs	.-110    	; 0x7ba <main+0x96>
	}
	
#ifdef DS18X20_EEPROMSUPPORT
	if (nSensors>0) {
     828:	cc 20       	and	r12, r12
     82a:	09 f4       	brne	.+2      	; 0x82e <main+0x10a>
     82c:	69 c0       	rjmp	.+210    	; 0x900 <main+0x1dc>
     82e:	84 e7       	ldi	r24, 0x74	; 116
     830:	91 e0       	ldi	r25, 0x01	; 1
     832:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
     836:	be 01       	movw	r22, r28
     838:	6f 5f       	subi	r22, 0xFF	; 255
     83a:	7f 4f       	sbci	r23, 0xFF	; 255
     83c:	8f ea       	ldi	r24, 0xAF	; 175
     83e:	90 e0       	ldi	r25, 0x00	; 0
     840:	0e 94 81 0a 	call	0x1502 <DS18X20_read_scratchpad>
     844:	1b 81       	ldd	r17, Y+3	; 0x03
     846:	0c 81       	ldd	r16, Y+4	; 0x04
     848:	82 ea       	ldi	r24, 0xA2	; 162
     84a:	91 e0       	ldi	r25, 0x01	; 1
     84c:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
     850:	81 2f       	mov	r24, r17
     852:	99 27       	eor	r25, r25
     854:	0e 94 a0 0b 	call	0x1740 <uart_puti>
     858:	80 ec       	ldi	r24, 0xC0	; 192
     85a:	91 e0       	ldi	r25, 0x01	; 1
     85c:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
     860:	80 2f       	mov	r24, r16
     862:	99 27       	eor	r25, r25
     864:	0e 94 a0 0b 	call	0x1740 <uart_puti>
     868:	84 ec       	ldi	r24, 0xC4	; 196
     86a:	91 e0       	ldi	r25, 0x01	; 1
     86c:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
     870:	0f 5f       	subi	r16, 0xFF	; 255
     872:	1f 5f       	subi	r17, 0xFF	; 255
     874:	20 e6       	ldi	r18, 0x60	; 96
     876:	40 2f       	mov	r20, r16
     878:	61 2f       	mov	r22, r17
     87a:	8f ea       	ldi	r24, 0xAF	; 175
     87c:	90 e0       	ldi	r25, 0x00	; 0
     87e:	0e 94 53 0a 	call	0x14a6 <DS18X20_write_scratchpad>
     882:	86 ec       	ldi	r24, 0xC6	; 198
     884:	91 e0       	ldi	r25, 0x01	; 1
     886:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
     88a:	6f ea       	ldi	r22, 0xAF	; 175
     88c:	70 e0       	ldi	r23, 0x00	; 0
     88e:	80 e0       	ldi	r24, 0x00	; 0
     890:	0e 94 a7 0a 	call	0x154e <DS18X20_copy_scratchpad>
     894:	8b ee       	ldi	r24, 0xEB	; 235
     896:	91 e0       	ldi	r25, 0x01	; 1
     898:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
     89c:	8f ea       	ldi	r24, 0xAF	; 175
     89e:	90 e0       	ldi	r25, 0x00	; 0
     8a0:	0e 94 d1 0a 	call	0x15a2 <DS18X20_recall_E2>
     8a4:	80 e1       	ldi	r24, 0x10	; 16
     8a6:	92 e0       	ldi	r25, 0x02	; 2
     8a8:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
     8ac:	be 01       	movw	r22, r28
     8ae:	6f 5f       	subi	r22, 0xFF	; 255
     8b0:	7f 4f       	sbci	r23, 0xFF	; 255
     8b2:	8f ea       	ldi	r24, 0xAF	; 175
     8b4:	90 e0       	ldi	r25, 0x00	; 0
     8b6:	0e 94 81 0a 	call	0x1502 <DS18X20_read_scratchpad>
     8ba:	8b 81       	ldd	r24, Y+3	; 0x03
     8bc:	18 17       	cp	r17, r24
     8be:	31 f4       	brne	.+12     	; 0x8cc <main+0x1a8>
     8c0:	8c 81       	ldd	r24, Y+4	; 0x04
     8c2:	08 17       	cp	r16, r24
     8c4:	19 f4       	brne	.+6      	; 0x8cc <main+0x1a8>
     8c6:	8a e3       	ldi	r24, 0x3A	; 58
     8c8:	92 e0       	ldi	r25, 0x02	; 2
     8ca:	02 c0       	rjmp	.+4      	; 0x8d0 <main+0x1ac>
     8cc:	8e e4       	ldi	r24, 0x4E	; 78
     8ce:	92 e0       	ldi	r25, 0x02	; 2
     8d0:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
     8d4:	1b 81       	ldd	r17, Y+3	; 0x03
     8d6:	0c 81       	ldd	r16, Y+4	; 0x04
     8d8:	8d e5       	ldi	r24, 0x5D	; 93
     8da:	92 e0       	ldi	r25, 0x02	; 2
     8dc:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
     8e0:	81 2f       	mov	r24, r17
     8e2:	99 27       	eor	r25, r25
     8e4:	0e 94 a0 0b 	call	0x1740 <uart_puti>
     8e8:	8f e7       	ldi	r24, 0x7F	; 127
     8ea:	92 e0       	ldi	r25, 0x02	; 2
     8ec:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
     8f0:	80 2f       	mov	r24, r16
     8f2:	99 27       	eor	r25, r25
     8f4:	0e 94 a0 0b 	call	0x1740 <uart_puti>
     8f8:	83 e8       	ldi	r24, 0x83	; 131
     8fa:	92 e0       	ldi	r25, 0x02	; 2
     8fc:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
		eeprom_test();
	}
#endif

	if ( nSensors == 1 ) {
     900:	31 e0       	ldi	r19, 0x01	; 1
     902:	c3 16       	cp	r12, r19
     904:	31 f5       	brne	.+76     	; 0x952 <main+0x22e>
		uart_puts_P( "\rThere is only one sensor -> Demo of \"read_meas_single\":\r" ); 
     906:	85 e8       	ldi	r24, 0x85	; 133
     908:	92 e0       	ldi	r25, 0x02	; 2
     90a:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
		i = gSensorIDs[0][0]; // family-code for conversion-routine
     90e:	d0 90 af 00 	lds	r13, 0x00AF
		DS18X20_start_meas( DS18X20_POWER_PARASITE, NULL );
     912:	60 e0       	ldi	r22, 0x00	; 0
     914:	70 e0       	ldi	r23, 0x00	; 0
     916:	80 e0       	ldi	r24, 0x00	; 0
     918:	0e 94 6f 09 	call	0x12de <DS18X20_start_meas>
		delay_ms(DS18B20_TCONV_12BIT);
     91c:	66 e4       	ldi	r22, 0x46	; 70
     91e:	71 e4       	ldi	r23, 0x41	; 65
     920:	8f e0       	ldi	r24, 0x0F	; 15
     922:	90 e0       	ldi	r25, 0x00	; 0
     924:	0e 94 af 06 	call	0xd5e <delayloop32>
		DS18X20_read_meas_single(i, &subzero, &cel, &cel_frac_bits);
     928:	9e 01       	movw	r18, r28
     92a:	26 5f       	subi	r18, 0xF6	; 246
     92c:	3f 4f       	sbci	r19, 0xFF	; 255
     92e:	ae 01       	movw	r20, r28
     930:	45 5f       	subi	r20, 0xF5	; 245
     932:	5f 4f       	sbci	r21, 0xFF	; 255
     934:	be 01       	movw	r22, r28
     936:	64 5f       	subi	r22, 0xF4	; 244
     938:	7f 4f       	sbci	r23, 0xFF	; 255
     93a:	8d 2d       	mov	r24, r13
     93c:	0e 94 f3 09 	call	0x13e6 <DS18X20_read_meas_single>
		uart_put_temp(subzero, cel, cel_frac_bits);
     940:	4a 85       	ldd	r20, Y+10	; 0x0a
     942:	6b 85       	ldd	r22, Y+11	; 0x0b
     944:	8c 85       	ldd	r24, Y+12	; 0x0c
     946:	0e 94 10 03 	call	0x620 <uart_put_temp>
		uart_puts_P("\r");
     94a:	8f eb       	ldi	r24, 0xBF	; 191
     94c:	92 e0       	ldi	r25, 0x02	; 2
     94e:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
	}
		
	
	for(;;) {				// main loop
	
		uart_puts_P( "\rConvert_T and Read Sensor by Sensor (reverse order)\r" ); 
     952:	81 ec       	ldi	r24, 0xC1	; 193
     954:	92 e0       	ldi	r25, 0x02	; 2
     956:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
		for ( i=nSensors; i>0; i-- ) {
     95a:	dc 2c       	mov	r13, r12
     95c:	dd 20       	and	r13, r13
     95e:	09 f4       	brne	.+2      	; 0x962 <main+0x23e>
     960:	42 c0       	rjmp	.+132    	; 0x9e6 <main+0x2c2>
			if ( DS18X20_start_meas( DS18X20_POWER_PARASITE, 
     962:	ed 2c       	mov	r14, r13
     964:	ff 24       	eor	r15, r15
     966:	87 01       	movw	r16, r14
     968:	23 e0       	ldi	r18, 0x03	; 3
     96a:	00 0f       	add	r16, r16
     96c:	11 1f       	adc	r17, r17
     96e:	2a 95       	dec	r18
     970:	e1 f7       	brne	.-8      	; 0x96a <main+0x246>
     972:	09 55       	subi	r16, 0x59	; 89
     974:	1f 4f       	sbci	r17, 0xFF	; 255
     976:	b8 01       	movw	r22, r16
     978:	80 e0       	ldi	r24, 0x00	; 0
     97a:	0e 94 6f 09 	call	0x12de <DS18X20_start_meas>
     97e:	88 23       	and	r24, r24
     980:	61 f5       	brne	.+88     	; 0x9da <main+0x2b6>
				&gSensorIDs[i-1][0] ) == DS18X20_OK ) {
				delay_ms(DS18B20_TCONV_12BIT);
     982:	66 e4       	ldi	r22, 0x46	; 70
     984:	71 e4       	ldi	r23, 0x41	; 65
     986:	8f e0       	ldi	r24, 0x0F	; 15
     988:	90 e0       	ldi	r25, 0x00	; 0
     98a:	0e 94 af 06 	call	0xd5e <delayloop32>
				uart_puts_P("Sensor# ");
     98e:	87 ef       	ldi	r24, 0xF7	; 247
     990:	92 e0       	ldi	r25, 0x02	; 2
     992:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
				uart_puti((int) i);
     996:	c7 01       	movw	r24, r14
     998:	0e 94 a0 0b 	call	0x1740 <uart_puti>
				uart_puts_P(" = ");
     99c:	80 e0       	ldi	r24, 0x00	; 0
     99e:	93 e0       	ldi	r25, 0x03	; 3
     9a0:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
				if ( DS18X20_read_meas( &gSensorIDs[i-1][0], &subzero,
     9a4:	9e 01       	movw	r18, r28
     9a6:	26 5f       	subi	r18, 0xF6	; 246
     9a8:	3f 4f       	sbci	r19, 0xFF	; 255
     9aa:	ae 01       	movw	r20, r28
     9ac:	45 5f       	subi	r20, 0xF5	; 245
     9ae:	5f 4f       	sbci	r21, 0xFF	; 255
     9b0:	be 01       	movw	r22, r28
     9b2:	64 5f       	subi	r22, 0xF4	; 244
     9b4:	7f 4f       	sbci	r23, 0xFF	; 255
     9b6:	c8 01       	movw	r24, r16
     9b8:	0e 94 8f 09 	call	0x131e <DS18X20_read_meas>
     9bc:	88 23       	and	r24, r24
     9be:	31 f4       	brne	.+12     	; 0x9cc <main+0x2a8>
						&cel, &cel_frac_bits) == DS18X20_OK ) {
					uart_put_temp(subzero, cel, cel_frac_bits);
     9c0:	4a 85       	ldd	r20, Y+10	; 0x0a
     9c2:	6b 85       	ldd	r22, Y+11	; 0x0b
     9c4:	8c 85       	ldd	r24, Y+12	; 0x0c
     9c6:	0e 94 10 03 	call	0x620 <uart_put_temp>
     9ca:	04 c0       	rjmp	.+8      	; 0x9d4 <main+0x2b0>
				}
				else uart_puts_P("CRC Error (lost connection?)");
     9cc:	84 e0       	ldi	r24, 0x04	; 4
     9ce:	93 e0       	ldi	r25, 0x03	; 3
     9d0:	0e 94 8e 0b 	call	0x171c <uart_puts_p>
				uart_puts_P("\r");
     9d4:	81 e2       	ldi	r24, 0x21	; 33

⌨️ 快捷键说明

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