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

📄 main.lss

📁 DS18B20测试温度
💻 LSS
📖 第 1 页 / 共 4 页
字号:
 1e0:	ff 92       	push	r15
 1e2:	0f 93       	push	r16
 1e4:	1f 93       	push	r17
 1e6:	cf 93       	push	r28
 1e8:	df 93       	push	r29
 1ea:	3b 01       	movw	r6, r22
 1ec:	4c 01       	movw	r8, r24
    uchar i=8,j,dot_position,count=0 ;
    long temp=10000000,dot_temp ;
    //当temp=10000000时,显示8位整数
    dp=0 ;
 1ee:	10 92 73 00 	sts	0x0073, r1
    long integer ;
    float dot ;
    integer=(long)m_lData ;
 1f2:	0e 94 c1 02 	call	0x582	; 0x582 <__fixsfsi>
 1f6:	7b 01       	movw	r14, r22
 1f8:	8c 01       	movw	r16, r24
    dot=m_lData-(float)integer ;
    if(integer==0)
 1fa:	61 15       	cp	r22, r1
 1fc:	71 05       	cpc	r23, r1
 1fe:	81 05       	cpc	r24, r1
 200:	91 05       	cpc	r25, r1
 202:	31 f4       	brne	.+12     	; 0x210 <PrintFloat+0x44>
 204:	aa 24       	eor	r10, r10
 206:	bb 24       	eor	r11, r11
 208:	65 01       	movw	r12, r10
 20a:	27 e0       	ldi	r18, 0x07	; 7
 20c:	52 2e       	mov	r5, r18
 20e:	1a c0       	rjmp	.+52     	; 0x244 <PrintFloat+0x78>
 210:	5b 01       	movw	r10, r22
 212:	6c 01       	movw	r12, r24
 214:	55 24       	eor	r5, r5
 216:	0b c0       	rjmp	.+22     	; 0x22e <PrintFloat+0x62>
    {
        integer=0 ;
        count=7 ;
    }
    else
    while(integer/10000000==0)
    {

        integer*=10 ;
 218:	c6 01       	movw	r24, r12
 21a:	b5 01       	movw	r22, r10
 21c:	2a e0       	ldi	r18, 0x0A	; 10
 21e:	30 e0       	ldi	r19, 0x00	; 0
 220:	40 e0       	ldi	r20, 0x00	; 0
 222:	50 e0       	ldi	r21, 0x00	; 0
 224:	0e 94 7e 03 	call	0x6fc	; 0x6fc <__mulsi3>
 228:	5b 01       	movw	r10, r22
 22a:	6c 01       	movw	r12, r24
        count++;
 22c:	53 94       	inc	r5
 22e:	d6 01       	movw	r26, r12
 230:	c5 01       	movw	r24, r10
 232:	81 58       	subi	r24, 0x81	; 129
 234:	99 46       	sbci	r25, 0x69	; 105
 236:	a7 46       	sbci	r26, 0x67	; 103
 238:	bf 4f       	sbci	r27, 0xFF	; 255
 23a:	8f 5f       	subi	r24, 0xFF	; 255
 23c:	9c 42       	sbci	r25, 0x2C	; 44
 23e:	a1 43       	sbci	r26, 0x31	; 49
 240:	b1 40       	sbci	r27, 0x01	; 1
 242:	50 f3       	brcs	.-44     	; 0x218 <PrintFloat+0x4c>
 244:	c8 01       	movw	r24, r16
 246:	b7 01       	movw	r22, r14
 248:	0e 94 de 02 	call	0x5bc	; 0x5bc <__floatsisf>
 24c:	9b 01       	movw	r18, r22
 24e:	ac 01       	movw	r20, r24
 250:	c4 01       	movw	r24, r8
 252:	b3 01       	movw	r22, r6
 254:	0e 94 7e 02 	call	0x4fc	; 0x4fc <__subsf3>
 258:	10 e0       	ldi	r17, 0x00	; 0
 25a:	07 c0       	rjmp	.+14     	; 0x26a <PrintFloat+0x9e>
    }
    for(j=0;j<count;j++)
    dot=dot*10 ;
 25c:	20 e0       	ldi	r18, 0x00	; 0
 25e:	30 e0       	ldi	r19, 0x00	; 0
 260:	40 e2       	ldi	r20, 0x20	; 32
 262:	51 e4       	ldi	r21, 0x41	; 65
 264:	0e 94 33 03 	call	0x666	; 0x666 <__mulsf3>
 268:	1f 5f       	subi	r17, 0xFF	; 255
 26a:	15 15       	cp	r17, r5
 26c:	b9 f7       	brne	.-18     	; 0x25c <PrintFloat+0x90>
    dot_temp=(long)dot ;
    integer+=dot_temp ;
 26e:	0e 94 c1 02 	call	0x582	; 0x582 <__fixsfsi>
 272:	7b 01       	movw	r14, r22
 274:	8c 01       	movw	r16, r24
 276:	ea 0c       	add	r14, r10
 278:	fb 1c       	adc	r15, r11
 27a:	0c 1d       	adc	r16, r12
 27c:	1d 1d       	adc	r17, r13
    dot_position=count+1 ;
 27e:	53 94       	inc	r5
 280:	90 e8       	ldi	r25, 0x80	; 128
 282:	a9 2e       	mov	r10, r25
 284:	96 e9       	ldi	r25, 0x96	; 150
 286:	b9 2e       	mov	r11, r25
 288:	98 e9       	ldi	r25, 0x98	; 152
 28a:	c9 2e       	mov	r12, r25
 28c:	d1 2c       	mov	r13, r1
 28e:	c8 e0       	ldi	r28, 0x08	; 8
 290:	d0 e0       	ldi	r29, 0x00	; 0
    while(temp)
    {
        if(i==dot_position)
 292:	5c 16       	cp	r5, r28
 294:	19 f4       	brne	.+6      	; 0x29c <PrintFloat+0xd0>
        dp=1;
 296:	81 e0       	ldi	r24, 0x01	; 1
 298:	80 93 73 00 	sts	0x0073, r24
        i--;
        send_byte(disp_table[(uchar)(integer/temp)]);
 29c:	c8 01       	movw	r24, r16
 29e:	b7 01       	movw	r22, r14
 2a0:	a6 01       	movw	r20, r12
 2a2:	95 01       	movw	r18, r10
 2a4:	0e 94 b0 03 	call	0x760	; 0x760 <__divmodsi4>
 2a8:	da 01       	movw	r26, r20
 2aa:	c9 01       	movw	r24, r18
 2ac:	99 27       	eor	r25, r25
 2ae:	80 5a       	subi	r24, 0xA0	; 160
 2b0:	9f 4f       	sbci	r25, 0xFF	; 255
 2b2:	fc 01       	movw	r30, r24
 2b4:	80 81       	ld	r24, Z
 2b6:	0e 94 53 00 	call	0xa6	; 0xa6 <send_byte>
        integer=integer%temp ;
        temp/=10 ;
 2ba:	c6 01       	movw	r24, r12
 2bc:	b5 01       	movw	r22, r10
 2be:	2a e0       	ldi	r18, 0x0A	; 10
 2c0:	30 e0       	ldi	r19, 0x00	; 0
 2c2:	40 e0       	ldi	r20, 0x00	; 0
 2c4:	50 e0       	ldi	r21, 0x00	; 0
 2c6:	0e 94 b0 03 	call	0x760	; 0x760 <__divmodsi4>
 2ca:	39 01       	movw	r6, r18
 2cc:	4a 01       	movw	r8, r20
        dp=0 ;
 2ce:	10 92 73 00 	sts	0x0073, r1
 2d2:	21 97       	sbiw	r28, 0x01	; 1
 2d4:	59 f0       	breq	.+22     	; 0x2ec <PrintFloat+0x120>
 2d6:	c8 01       	movw	r24, r16
 2d8:	b7 01       	movw	r22, r14
 2da:	a6 01       	movw	r20, r12
 2dc:	95 01       	movw	r18, r10
 2de:	0e 94 b0 03 	call	0x760	; 0x760 <__divmodsi4>
 2e2:	7b 01       	movw	r14, r22
 2e4:	8c 01       	movw	r16, r24
 2e6:	64 01       	movw	r12, r8
 2e8:	53 01       	movw	r10, r6
 2ea:	d3 cf       	rjmp	.-90     	; 0x292 <PrintFloat+0xc6>
 2ec:	df 91       	pop	r29
 2ee:	cf 91       	pop	r28
 2f0:	1f 91       	pop	r17
 2f2:	0f 91       	pop	r16
 2f4:	ff 90       	pop	r15
 2f6:	ef 90       	pop	r14
 2f8:	df 90       	pop	r13
 2fa:	cf 90       	pop	r12
 2fc:	bf 90       	pop	r11
 2fe:	af 90       	pop	r10
 300:	9f 90       	pop	r9
 302:	8f 90       	pop	r8
 304:	7f 90       	pop	r7
 306:	6f 90       	pop	r6
 308:	5f 90       	pop	r5
 30a:	08 95       	ret

0000030c <PrintChar>:
    }
} 

/*void PrintFloat(long m_lData,uchar dot_position)
{
	uchar i=3;
	long temp=100;   //当temp=10000000时,显示8位整数
	dp=0;
	while(temp)
	{
		if(i==dot_position)
			dp=1;
		i--;
		send_byte(disp_table[m_lData/temp]);
		m_lData=m_lData%temp;
		temp/=10;
		dp=0;
    }
}*/

//用于显示字符******************************************************************

void PrintChar(uchar m_Char)
{
 30c:	e8 2f       	mov	r30, r24
    if((m_Char>='0')&&(m_Char<='9'))
 30e:	80 53       	subi	r24, 0x30	; 48
 310:	8a 30       	cpi	r24, 0x0A	; 10
 312:	20 f4       	brcc	.+8      	; 0x31c <PrintChar+0x10>
    send_byte(disp_table[m_Char-'0']);
 314:	ff 27       	eor	r31, r31
 316:	e0 5d       	subi	r30, 0xD0	; 208
 318:	ff 4f       	sbci	r31, 0xFF	; 255
 31a:	07 c0       	rjmp	.+14     	; 0x32a <PrintChar+0x1e>
    else if((m_Char>='A')&&m_Char<='F')
 31c:	8e 2f       	mov	r24, r30
 31e:	81 54       	subi	r24, 0x41	; 65
 320:	86 30       	cpi	r24, 0x06	; 6
 322:	38 f4       	brcc	.+14     	; 0x332 <PrintChar+0x26>
    send_byte(disp_table[m_Char-'A'+10]);
 324:	ff 27       	eor	r31, r31
 326:	e7 5d       	subi	r30, 0xD7	; 215
 328:	ff 4f       	sbci	r31, 0xFF	; 255
 32a:	80 81       	ld	r24, Z
 32c:	0e 94 53 00 	call	0xa6	; 0xa6 <send_byte>
 330:	08 95       	ret
    else if((m_Char>='a')&&m_Char<='f')
 332:	8e 2f       	mov	r24, r30
 334:	81 56       	subi	r24, 0x61	; 97
 336:	86 30       	cpi	r24, 0x06	; 6
 338:	30 f4       	brcc	.+12     	; 0x346 <PrintChar+0x3a>
    send_byte(disp_table[m_Char-'a'+10]);
 33a:	ff 27       	eor	r31, r31
 33c:	e7 5f       	subi	r30, 0xF7	; 247
 33e:	ff 4f       	sbci	r31, 0xFF	; 255
 340:	80 81       	ld	r24, Z
 342:	0e 94 53 00 	call	0xa6	; 0xa6 <send_byte>
 346:	08 95       	ret

00000348 <PrintString>:
    
}
//用于显示字符串****************************************************************
void PrintString(uchar*str)
{
 348:	ef 92       	push	r14
 34a:	ff 92       	push	r15
 34c:	0f 93       	push	r16
 34e:	1f 93       	push	r17
 350:	cf 93       	push	r28
 352:	df 93       	push	r29
 354:	8c 01       	movw	r16, r24
    
    uchar i=0,j=0 ;
    ClearAll();
 356:	0e 94 75 00 	call	0xea	; 0xea <ClearAll>
 35a:	38 e0       	ldi	r19, 0x08	; 8
 35c:	f3 2e       	mov	r15, r19
 35e:	ee 24       	eor	r14, r14
 360:	e8 01       	movw	r28, r16
 362:	27 96       	adiw	r28, 0x07	; 7
    for(i=8;i>0;i--)
    {
        if(*(str+i-1))PrintChar(*(str+8-j-i));
 364:	2f 2d       	mov	r18, r15
 366:	33 27       	eor	r19, r19
 368:	88 81       	ld	r24, Y
 36a:	21 97       	sbiw	r28, 0x01	; 1
 36c:	88 23       	and	r24, r24
 36e:	49 f0       	breq	.+18     	; 0x382 <PrintString+0x3a>
 370:	f8 01       	movw	r30, r16
 372:	ee 19       	sub	r30, r14
 374:	f1 09       	sbc	r31, r1
 376:	e2 1b       	sub	r30, r18
 378:	f3 0b       	sbc	r31, r19
 37a:	80 85       	ldd	r24, Z+8	; 0x08
 37c:	0e 94 86 01 	call	0x30c	; 0x30c <PrintChar>
 380:	04 c0       	rjmp	.+8      	; 0x38a <PrintString+0x42>
        else 
        {
            send_byte(0x00);
 382:	80 e0       	ldi	r24, 0x00	; 0
 384:	0e 94 53 00 	call	0xa6	; 0xa6 <send_byte>
            j++;
 388:	e3 94       	inc	r14
 38a:	fa 94       	dec	r15
 38c:	59 f7       	brne	.-42     	; 0x364 <PrintString+0x1c>
 38e:	df 91       	pop	r29
 390:	cf 91       	pop	r28
 392:	1f 91       	pop	r17
 394:	0f 91       	pop	r16
 396:	ff 90       	pop	r15
 398:	ef 90       	pop	r14
 39a:	08 95       	ret

0000039c <Reset_DS18B20>:


//DS18B20初始化函数*******************************************************//
uchar Reset_DS18B20(void)
{
 39c:	8c 9a       	sbi	0x11, 4	; 17
  uchar t=6,temp;
  Set_DS18B20_dq_DDR();
  Clr_DS18B20_dq();
 39e:	94 98       	cbi	0x12, 4	; 18
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 3a0:	90 ef       	ldi	r25, 0xF0	; 240
 3a2:	89 2f       	mov	r24, r25
 3a4:	8a 95       	dec	r24
 3a6:	f1 f7       	brne	.-4      	; 0x3a4 <Reset_DS18B20+0x8>
 3a8:	89 2f       	mov	r24, r25
 3aa:	8a 95       	dec	r24
 3ac:	f1 f7       	brne	.-4      	; 0x3aa <Reset_DS18B20+0xe>
 3ae:	89 2f       	mov	r24, r25
 3b0:	8a 95       	dec	r24
 3b2:	f1 f7       	brne	.-4      	; 0x3b0 <Reset_DS18B20+0x14>
 3b4:	89 2f       	mov	r24, r25
 3b6:	8a 95       	dec	r24
 3b8:	f1 f7       	brne	.-4      	; 0x3b6 <Reset_DS18B20+0x1a>
 3ba:	89 2f       	mov	r24, r25
 3bc:	8a 95       	dec	r24
 3be:	f1 f7       	brne	.-4      	; 0x3bc <Reset_DS18B20+0x20>
 3c0:	89 2f       	mov	r24, r25
 3c2:	8a 95       	dec	r24
 3c4:	f1 f7       	brne	.-4      	; 0x3c2 <Reset_DS18B20+0x26>
  while(t--)
  {
    _delay_us(90);
  }
  Set_DS18B20_dq();
 3c6:	94 9a       	sbi	0x12, 4	; 18
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 3c8:	88 ec       	ldi	r24, 0xC8	; 200
 3ca:	8a 95       	dec	r24
 3cc:	f1 f7       	brne	.-4      	; 0x3ca <Reset_DS18B20+0x2e>
  _delay_us(75);  
  temp=In_DS18B20_dq();
 3ce:	80 b3       	in	r24, 0x10	; 16
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 3d0:	29 2f       	mov	r18, r25
 3d2:	2a 95       	dec	r18
 3d4:	f1 f7       	brne	.-4      	; 0x3d2 <Reset_DS18B20+0x36>
  _delay_us(90);
  _delay_us(90);
  _delay_us(90);
  if(temp) 
    return 0;
	  else  return 1;
}
 3d6:	29 2f       	mov	r18, r25
 3d8:	2a 95       	dec	r18
 3da:	f1 f7       	brne	.-4      	; 0x3d8 <Reset_DS18B20+0x3c>

⌨️ 快捷键说明

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