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

📄 tem.lss

📁 DS18B20做的温度计
💻 LSS
📖 第 1 页 / 共 2 页
字号:
void
_delay_loop_2(uint16_t __count)
{
 25e:	83 e3       	ldi	r24, 0x33	; 51
 260:	97 e0       	ldi	r25, 0x07	; 7
	__asm__ volatile (
 262:	01 97       	sbiw	r24, 0x01	; 1
 264:	f1 f7       	brne	.-4      	; 0x262 <rt_ds+0x6>
 dy(1000);
 cli();
 266:	f8 94       	cli
 Q_s;
 268:	8b 98       	cbi	0x11, 3	; 17
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
 26a:	8c e7       	ldi	r24, 0x7C	; 124
 26c:	90 e0       	ldi	r25, 0x00	; 0
	__asm__ volatile (
 26e:	01 97       	sbiw	r24, 0x01	; 1
 270:	f1 f7       	brne	.-4      	; 0x26e <rt_ds+0x12>
 dy(67.5);
 if(Q_a)  ret=0;	//
 272:	83 9b       	sbis	0x10, 3	; 16
 274:	02 c0       	rjmp	.+4      	; 0x27a <rt_ds+0x1e>
 276:	20 e0       	ldi	r18, 0x00	; 0
 278:	01 c0       	rjmp	.+2      	; 0x27c <rt_ds+0x20>
 else    ret=1;
 27a:	21 e0       	ldi	r18, 0x01	; 1
// ret=1;
 sei();   
 27c:	78 94       	sei
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
 27e:	8a e0       	ldi	r24, 0x0A	; 10
 280:	93 e0       	ldi	r25, 0x03	; 3
	__asm__ volatile (
 282:	01 97       	sbiw	r24, 0x01	; 1
 284:	f1 f7       	brne	.-4      	; 0x282 <rt_ds+0x26>
 dy(490-67.5);
 return ret;
}
 286:	82 2f       	mov	r24, r18
 288:	99 27       	eor	r25, r25
 28a:	08 95       	ret

0000028c <wr_ds>:

void wr_ds(uchar dat1)	//write ds18b20
{uchar i;
 28c:	28 2f       	mov	r18, r24
 28e:	37 e0       	ldi	r19, 0x07	; 7
 for(i=0;i<8;i++)
 {cli();
 290:	f8 94       	cli
  Q_c;
 292:	8b 9a       	sbi	0x11, 3	; 17
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
 294:	83 e0       	ldi	r24, 0x03	; 3
 296:	90 e0       	ldi	r25, 0x00	; 0
	__asm__ volatile (
 298:	01 97       	sbiw	r24, 0x01	; 1
 29a:	f1 f7       	brne	.-4      	; 0x298 <wr_ds+0xc>
  dy(2);
  if(dat1&0x01)  Q_s;
 29c:	20 ff       	sbrs	r18, 0
 29e:	02 c0       	rjmp	.+4      	; 0x2a4 <wr_ds+0x18>
 2a0:	8b 98       	cbi	0x11, 3	; 17
 2a2:	01 c0       	rjmp	.+2      	; 0x2a6 <wr_ds+0x1a>
  else Q_c;
 2a4:	8b 9a       	sbi	0x11, 3	; 17
  dat1>>=1;
 2a6:	26 95       	lsr	r18
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
 2a8:	82 e7       	ldi	r24, 0x72	; 114
 2aa:	90 e0       	ldi	r25, 0x00	; 0
	__asm__ volatile (
 2ac:	01 97       	sbiw	r24, 0x01	; 1
 2ae:	f1 f7       	brne	.-4      	; 0x2ac <wr_ds+0x20>
  dy(62);
  Q_s;
 2b0:	8b 98       	cbi	0x11, 3	; 17
  sei();
 2b2:	78 94       	sei
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
 2b4:	83 e0       	ldi	r24, 0x03	; 3
 2b6:	90 e0       	ldi	r25, 0x00	; 0
	__asm__ volatile (
 2b8:	01 97       	sbiw	r24, 0x01	; 1
 2ba:	f1 f7       	brne	.-4      	; 0x2b8 <wr_ds+0x2c>
 2bc:	31 50       	subi	r19, 0x01	; 1
 2be:	37 ff       	sbrs	r19, 7
 2c0:	e7 cf       	rjmp	.-50     	; 0x290 <wr_ds+0x4>
 2c2:	08 95       	ret

000002c4 <rd_ds>:
  dy(2);
 }
}///*/

uchar rd_ds(void)	//read a data for ds18b20
{uchar i;
 uchar dat0;
 dat0=0;
 2c4:	20 e0       	ldi	r18, 0x00	; 0
 2c6:	37 e0       	ldi	r19, 0x07	; 7
 for(i=0;i<8;i++)
  {cli();
 2c8:	f8 94       	cli
   Q_c;
 2ca:	8b 9a       	sbi	0x11, 3	; 17
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
 2cc:	83 e0       	ldi	r24, 0x03	; 3
 2ce:	90 e0       	ldi	r25, 0x00	; 0
	__asm__ volatile (
 2d0:	01 97       	sbiw	r24, 0x01	; 1
 2d2:	f1 f7       	brne	.-4      	; 0x2d0 <rd_ds+0xc>
   dy(2);
   Q_s;
 2d4:	8b 98       	cbi	0x11, 3	; 17
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
 2d6:	87 e0       	ldi	r24, 0x07	; 7
 2d8:	90 e0       	ldi	r25, 0x00	; 0
	__asm__ volatile (
 2da:	01 97       	sbiw	r24, 0x01	; 1
 2dc:	f1 f7       	brne	.-4      	; 0x2da <rd_ds+0x16>
   dy(4);
   dat0>>=1;
 2de:	26 95       	lsr	r18
   if(Q_a)  dat0|=0x80;
 2e0:	83 99       	sbic	0x10, 3	; 16
 2e2:	20 68       	ori	r18, 0x80	; 128
   sei();
 2e4:	78 94       	sei
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
 2e6:	82 e7       	ldi	r24, 0x72	; 114
 2e8:	90 e0       	ldi	r25, 0x00	; 0
	__asm__ volatile (
 2ea:	01 97       	sbiw	r24, 0x01	; 1
 2ec:	f1 f7       	brne	.-4      	; 0x2ea <rd_ds+0x26>
 2ee:	31 50       	subi	r19, 0x01	; 1
 2f0:	37 ff       	sbrs	r19, 7
 2f2:	ea cf       	rjmp	.-44     	; 0x2c8 <rd_ds+0x4>
   dy(62);
  }
 return(dat0);
}
 2f4:	82 2f       	mov	r24, r18
 2f6:	99 27       	eor	r25, r25
 2f8:	08 95       	ret

000002fa <s_ds>:

void s_ds(void)	//start ds18b20
{if(rt_ds()==1)//rest sussuful
 2fa:	0e 94 2e 01 	call	0x25c <rt_ds>
 2fe:	81 30       	cpi	r24, 0x01	; 1
 300:	31 f4       	brne	.+12     	; 0x30e <s_ds+0x14>
  {wr_ds(0xcc);
 302:	8c ec       	ldi	r24, 0xCC	; 204
 304:	0e 94 46 01 	call	0x28c <wr_ds>
   wr_ds(0x44);
 308:	84 e4       	ldi	r24, 0x44	; 68
 30a:	0e 94 46 01 	call	0x28c <wr_ds>
 30e:	08 95       	ret

00000310 <r_ds>:
    }
}

uint r_ds(void)	//read data from ds
{uint ret=0;
 310:	cf 93       	push	r28
 312:	df 93       	push	r29
 314:	c0 e0       	ldi	r28, 0x00	; 0
 316:	d0 e0       	ldi	r29, 0x00	; 0
 if(rt_ds()==1)	//rest suuful
 318:	0e 94 2e 01 	call	0x25c <rt_ds>
 31c:	81 30       	cpi	r24, 0x01	; 1
 31e:	89 f4       	brne	.+34     	; 0x342 <r_ds+0x32>
  {wr_ds(0xcc);
 320:	8c ec       	ldi	r24, 0xCC	; 204
 322:	0e 94 46 01 	call	0x28c <wr_ds>
   wr_ds(0xbe);	//read data
 326:	8e eb       	ldi	r24, 0xBE	; 190
 328:	0e 94 46 01 	call	0x28c <wr_ds>
   ret =(uint)rd_ds();	//low 8bit
 32c:	0e 94 62 01 	call	0x2c4 <rd_ds>
 330:	c8 2f       	mov	r28, r24
 332:	dd 27       	eor	r29, r29
   ret+=(uint)(rd_ds())<<8;
 334:	0e 94 62 01 	call	0x2c4 <rd_ds>
 338:	99 27       	eor	r25, r25
 33a:	98 2f       	mov	r25, r24
 33c:	88 27       	eor	r24, r24
 33e:	c8 0f       	add	r28, r24
 340:	d9 1f       	adc	r29, r25
  }
  
 return(ret);
}///
 342:	ce 01       	movw	r24, r28
 344:	df 91       	pop	r29
 346:	cf 91       	pop	r28
 348:	08 95       	ret

0000034a <s_ini>:



void s_ini(void)
{DDRA=0xff;
 34a:	8f ef       	ldi	r24, 0xFF	; 255
 34c:	8a bb       	out	0x1a, r24	; 26
 DDRB=0xff;
 34e:	87 bb       	out	0x17, r24	; 23
 ini_ds();
 350:	0e 94 2b 01 	call	0x256 <ini_ds>
 354:	08 95       	ret

00000356 <dyy>:
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 356:	9c 01       	movw	r18, r24
 358:	21 50       	subi	r18, 0x01	; 1
 35a:	30 40       	sbci	r19, 0x00	; 0
 35c:	8f ef       	ldi	r24, 0xFF	; 255
 35e:	2f 3f       	cpi	r18, 0xFF	; 255
 360:	38 07       	cpc	r19, r24
 362:	29 f0       	breq	.+10     	; 0x36e <dyy+0x18>
 364:	83 e3       	ldi	r24, 0x33	; 51
 366:	97 e0       	ldi	r25, 0x07	; 7
 368:	01 97       	sbiw	r24, 0x01	; 1
 36a:	f1 f7       	brne	.-4      	; 0x368 <dyy+0x12>
 36c:	f5 cf       	rjmp	.-22     	; 0x358 <dyy+0x2>
 36e:	08 95       	ret

00000370 <main>:
}

void dyy(uint t)
{while(t--)
  dy(1000);
}

int main(void)
{uint u;
 370:	cf e5       	ldi	r28, 0x5F	; 95
 372:	d4 e0       	ldi	r29, 0x04	; 4
 374:	de bf       	out	0x3e, r29	; 62
 376:	cd bf       	out	0x3d, r28	; 61
 uint c1;
 uint c0;
 uchar c2;
 u=0;
 s_ini(); 
 378:	0e 94 a5 01 	call	0x34a <s_ini>
 wsc("The temperature","is:    .");
 37c:	60 e6       	ldi	r22, 0x60	; 96
 37e:	70 e0       	ldi	r23, 0x00	; 0
 380:	89 e6       	ldi	r24, 0x69	; 105
 382:	90 e0       	ldi	r25, 0x00	; 0
 384:	0e 94 ed 00 	call	0x1da <wsc>
 while(1)
  {s_ds();
 388:	0e 94 7d 01 	call	0x2fa <s_ds>
   dyy(1000);
 38c:	88 ee       	ldi	r24, 0xE8	; 232
 38e:	93 e0       	ldi	r25, 0x03	; 3
 390:	0e 94 ab 01 	call	0x356 <dyy>
   
   u=r_ds();
 394:	0e 94 88 01 	call	0x310 <r_ds>
   //u=0x0191;
   c1=u/16;
 398:	8c 01       	movw	r16, r24
 39a:	44 e0       	ldi	r20, 0x04	; 4
 39c:	16 95       	lsr	r17
 39e:	07 95       	ror	r16
 3a0:	4a 95       	dec	r20
 3a2:	e1 f7       	brne	.-8      	; 0x39c <main+0x2c>
   c0=u%16;
 3a4:	3f e0       	ldi	r19, 0x0F	; 15
 3a6:	e3 2e       	mov	r14, r19
 3a8:	f1 2c       	mov	r15, r1
 3aa:	e8 22       	and	r14, r24
 3ac:	f9 22       	and	r15, r25
   go(4,1);
 3ae:	61 e0       	ldi	r22, 0x01	; 1
 3b0:	84 e0       	ldi	r24, 0x04	; 4
 3b2:	0e 94 97 00 	call	0x12e <go>
   wn(c1/100);
 3b6:	c8 01       	movw	r24, r16
 3b8:	64 e6       	ldi	r22, 0x64	; 100
 3ba:	70 e0       	ldi	r23, 0x00	; 0
 3bc:	0e 94 36 02 	call	0x46c <__udivmodhi4>
 3c0:	cb 01       	movw	r24, r22
 3c2:	0e 94 92 00 	call	0x124 <wn>
   wn((c1%100)/10);
 3c6:	c8 01       	movw	r24, r16
 3c8:	64 e6       	ldi	r22, 0x64	; 100
 3ca:	70 e0       	ldi	r23, 0x00	; 0
 3cc:	0e 94 36 02 	call	0x46c <__udivmodhi4>
 3d0:	6a e0       	ldi	r22, 0x0A	; 10
 3d2:	70 e0       	ldi	r23, 0x00	; 0
 3d4:	0e 94 36 02 	call	0x46c <__udivmodhi4>
 3d8:	cb 01       	movw	r24, r22
 3da:	0e 94 92 00 	call	0x124 <wn>
   wn(c1%10);
 3de:	c8 01       	movw	r24, r16
 3e0:	6a e0       	ldi	r22, 0x0A	; 10
 3e2:	70 e0       	ldi	r23, 0x00	; 0
 3e4:	0e 94 36 02 	call	0x46c <__udivmodhi4>
 3e8:	0e 94 92 00 	call	0x124 <wn>
   go(8,1);
 3ec:	61 e0       	ldi	r22, 0x01	; 1
 3ee:	88 e0       	ldi	r24, 0x08	; 8
 3f0:	0e 94 97 00 	call	0x12e <go>
   c0*=625;
 3f4:	81 e7       	ldi	r24, 0x71	; 113
 3f6:	92 e0       	ldi	r25, 0x02	; 2
 3f8:	e8 9e       	mul	r14, r24
 3fa:	80 01       	movw	r16, r0
 3fc:	e9 9e       	mul	r14, r25
 3fe:	10 0d       	add	r17, r0
 400:	f8 9e       	mul	r15, r24
 402:	10 0d       	add	r17, r0
 404:	11 24       	eor	r1, r1
   wn(c0/1000);
 406:	c8 01       	movw	r24, r16
 408:	68 ee       	ldi	r22, 0xE8	; 232
 40a:	73 e0       	ldi	r23, 0x03	; 3
 40c:	0e 94 36 02 	call	0x46c <__udivmodhi4>
 410:	cb 01       	movw	r24, r22
 412:	0e 94 92 00 	call	0x124 <wn>
   wn((c0%1000)/100);
 416:	c8 01       	movw	r24, r16
 418:	68 ee       	ldi	r22, 0xE8	; 232
 41a:	73 e0       	ldi	r23, 0x03	; 3
 41c:	0e 94 36 02 	call	0x46c <__udivmodhi4>
 420:	64 e6       	ldi	r22, 0x64	; 100
 422:	70 e0       	ldi	r23, 0x00	; 0
 424:	0e 94 36 02 	call	0x46c <__udivmodhi4>
 428:	cb 01       	movw	r24, r22
 42a:	0e 94 92 00 	call	0x124 <wn>
   wn((c0%100)/10);
 42e:	c8 01       	movw	r24, r16
 430:	64 e6       	ldi	r22, 0x64	; 100
 432:	70 e0       	ldi	r23, 0x00	; 0
 434:	0e 94 36 02 	call	0x46c <__udivmodhi4>
 438:	6a e0       	ldi	r22, 0x0A	; 10
 43a:	70 e0       	ldi	r23, 0x00	; 0
 43c:	0e 94 36 02 	call	0x46c <__udivmodhi4>
 440:	cb 01       	movw	r24, r22
 442:	0e 94 92 00 	call	0x124 <wn>
   wn(c0%10); 
 446:	c8 01       	movw	r24, r16
 448:	6a e0       	ldi	r22, 0x0A	; 10
 44a:	70 e0       	ldi	r23, 0x00	; 0
 44c:	0e 94 36 02 	call	0x46c <__udivmodhi4>
 450:	0e 94 92 00 	call	0x124 <wn>
   c2++;
 454:	cf 5f       	subi	r28, 0xFF	; 255
   if(c2>=10) c2=0;
 456:	ca 30       	cpi	r28, 0x0A	; 10
 458:	08 f0       	brcs	.+2      	; 0x45c <main+0xec>
 45a:	c0 e0       	ldi	r28, 0x00	; 0
   go(15,1);
 45c:	61 e0       	ldi	r22, 0x01	; 1
 45e:	8f e0       	ldi	r24, 0x0F	; 15
 460:	0e 94 97 00 	call	0x12e <go>
   wn(c2);    
 464:	8c 2f       	mov	r24, r28
 466:	0e 94 92 00 	call	0x124 <wn>
 46a:	8e cf       	rjmp	.-228    	; 0x388 <main+0x18>

0000046c <__udivmodhi4>:
 46c:	aa 1b       	sub	r26, r26
 46e:	bb 1b       	sub	r27, r27
 470:	51 e1       	ldi	r21, 0x11	; 17
 472:	07 c0       	rjmp	.+14     	; 0x482 <__udivmodhi4_ep>

00000474 <__udivmodhi4_loop>:
 474:	aa 1f       	adc	r26, r26
 476:	bb 1f       	adc	r27, r27
 478:	a6 17       	cp	r26, r22
 47a:	b7 07       	cpc	r27, r23
 47c:	10 f0       	brcs	.+4      	; 0x482 <__udivmodhi4_ep>
 47e:	a6 1b       	sub	r26, r22
 480:	b7 0b       	sbc	r27, r23

00000482 <__udivmodhi4_ep>:
 482:	88 1f       	adc	r24, r24
 484:	99 1f       	adc	r25, r25
 486:	5a 95       	dec	r21
 488:	a9 f7       	brne	.-22     	; 0x474 <__udivmodhi4_loop>
 48a:	80 95       	com	r24
 48c:	90 95       	com	r25
 48e:	bc 01       	movw	r22, r24
 490:	cd 01       	movw	r24, r26
 492:	08 95       	ret

⌨️ 快捷键说明

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