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

📄 hjmcu.lss

📁 很实用的单片机例程
💻 LSS
📖 第 1 页 / 共 2 页
字号:
 1d2:	1f 91       	pop	r17
 1d4:	08 95       	ret

000001d6 <Write_DS18B20>:
 1d6:	1f 93       	push	r17
 1d8:	cf 93       	push	r28
 1da:	c8 2f       	mov	r28, r24
 1dc:	17 e0       	ldi	r17, 0x07	; 7
 1de:	a2 9a       	sbi	0x14, 2	; 20
 1e0:	82 e0       	ldi	r24, 0x02	; 2
 1e2:	90 e0       	ldi	r25, 0x00	; 0
 1e4:	0e 94 93 00 	call	0x126 <Delayus>
 1e8:	c0 ff       	sbrs	r28, 0
 1ea:	02 c0       	rjmp	.+4      	; 0x1f0 <Write_DS18B20+0x1a>
 1ec:	a2 98       	cbi	0x14, 2	; 20
 1ee:	01 c0       	rjmp	.+2      	; 0x1f2 <Write_DS18B20+0x1c>
 1f0:	a2 9a       	sbi	0x14, 2	; 20
 1f2:	c6 95       	lsr	r28
 1f4:	8e e3       	ldi	r24, 0x3E	; 62
 1f6:	90 e0       	ldi	r25, 0x00	; 0
 1f8:	0e 94 93 00 	call	0x126 <Delayus>
 1fc:	a2 98       	cbi	0x14, 2	; 20
 1fe:	82 e0       	ldi	r24, 0x02	; 2
 200:	90 e0       	ldi	r25, 0x00	; 0
 202:	0e 94 93 00 	call	0x126 <Delayus>
 206:	11 50       	subi	r17, 0x01	; 1
 208:	17 ff       	sbrs	r17, 7
 20a:	e9 cf       	rjmp	.-46     	; 0x1de <Write_DS18B20+0x8>
 20c:	cf 91       	pop	r28
 20e:	1f 91       	pop	r17
 210:	08 95       	ret

00000212 <DS18B20_GetConvert>:
    }
}

//启动温度转换
void DS18B20_StartConvert(void)   
{
	unsigned char i;
	
	DS18B20_Init();     //初始化DS18B20
		
	Write_DS18B20(DS18B20_SKIP_ROM);  //发送ROM指令,跳过ROM匹配
		
	Write_DS18B20(DS18B20_CONVERT_RAM);  //	发送温度转换命令	
		
	for(i=0;i<50;i++)      //延时1S,等转换完成
	{
		Delayms(20);
	}		
}

//获得温度转换结果
void DS18B20_GetConvert(void)
{
	DS18B20_Init();    //初始化DSDS18B20
 212:	0e 94 b4 00 	call	0x168 <DS18B20_Init>
		
	Write_DS18B20(DS18B20_SKIP_ROM);  //发送ROM指令,跳过ROM匹配
 216:	8c ec       	ldi	r24, 0xCC	; 204
 218:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
		
	Write_DS18B20(DS18B20_READ_RAM);  //发送读取暂存器指令
 21c:	8e eb       	ldi	r24, 0xBE	; 190
 21e:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
		
	Temp_L = Read_DS18B20(); //获得温度的低位
 222:	0e 94 ce 00 	call	0x19c <Read_DS18B20>
 226:	80 93 86 00 	sts	0x0086, r24
	
	Temp_H = Read_DS18B20(); //获得温度的高位
 22a:	0e 94 ce 00 	call	0x19c <Read_DS18B20>
 22e:	80 93 8d 00 	sts	0x008D, r24
 232:	08 95       	ret

00000234 <DS18B20_StartConvert>:
 234:	cf 93       	push	r28
 236:	0e 94 b4 00 	call	0x168 <DS18B20_Init>
 23a:	8c ec       	ldi	r24, 0xCC	; 204
 23c:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
 240:	84 e4       	ldi	r24, 0x44	; 68
 242:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
 246:	c1 e3       	ldi	r28, 0x31	; 49
 248:	84 e1       	ldi	r24, 0x14	; 20
 24a:	90 e0       	ldi	r25, 0x00	; 0
 24c:	0e 94 a0 00 	call	0x140 <Delayms>
 250:	c1 50       	subi	r28, 0x01	; 1
 252:	c7 ff       	sbrs	r28, 7
 254:	f9 cf       	rjmp	.-14     	; 0x248 <DS18B20_StartConvert+0x14>
 256:	cf 91       	pop	r28
 258:	08 95       	ret

0000025a <main>:
 25a:	cf e5       	ldi	r28, 0x5F	; 95
 25c:	d4 e0       	ldi	r29, 0x04	; 4
 25e:	de bf       	out	0x3e, r29	; 62
 260:	cd bf       	out	0x3d, r28	; 61
 262:	0e 94 47 00 	call	0x8e <Port_Init>
 266:	0e 94 4d 00 	call	0x9a <Usart_Init>
 26a:	0e 94 58 00 	call	0xb0 <Port_DS18B20>
 26e:	10 92 8d 00 	sts	0x008D, r1
 272:	10 92 86 00 	sts	0x0086, r1
 276:	10 92 8e 00 	sts	0x008E, r1
 27a:	80 e6       	ldi	r24, 0x60	; 96
 27c:	90 e0       	ldi	r25, 0x00	; 0
 27e:	0e 94 5f 00 	call	0xbe <Usart_PutString>
 282:	8d e0       	ldi	r24, 0x0D	; 13
 284:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 288:	8a e0       	ldi	r24, 0x0A	; 10
 28a:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 28e:	78 94       	sei
 290:	0e 94 1a 01 	call	0x234 <DS18B20_StartConvert>
 294:	0e 94 09 01 	call	0x212 <DS18B20_GetConvert>
 298:	80 91 8d 00 	lds	r24, 0x008D
 29c:	83 ff       	sbrs	r24, 3
 29e:	12 c0       	rjmp	.+36     	; 0x2c4 <main+0x6a>
 2a0:	28 2f       	mov	r18, r24
 2a2:	20 95       	com	r18
 2a4:	20 93 8d 00 	sts	0x008D, r18
 2a8:	90 91 86 00 	lds	r25, 0x0086
 2ac:	8f b7       	in	r24, 0x3f	; 63
 2ae:	8e 6f       	ori	r24, 0xFE	; 254
 2b0:	8f bf       	out	0x3f, r24	; 63
 2b2:	91 95       	neg	r25
 2b4:	90 93 86 00 	sts	0x0086, r25
 2b8:	0f b6       	in	r0, 0x3f	; 63
 2ba:	00 fe       	sbrs	r0, 0
 2bc:	03 c0       	rjmp	.+6      	; 0x2c4 <main+0x6a>
 2be:	2f 5f       	subi	r18, 0xFF	; 255
 2c0:	20 93 8d 00 	sts	0x008D, r18
 2c4:	80 91 8d 00 	lds	r24, 0x008D
 2c8:	28 2f       	mov	r18, r24
 2ca:	33 27       	eor	r19, r19
 2cc:	84 e0       	ldi	r24, 0x04	; 4
 2ce:	22 0f       	add	r18, r18
 2d0:	33 1f       	adc	r19, r19
 2d2:	8a 95       	dec	r24
 2d4:	e1 f7       	brne	.-8      	; 0x2ce <main+0x74>
 2d6:	20 77       	andi	r18, 0x70	; 112
 2d8:	30 70       	andi	r19, 0x00	; 0
 2da:	40 91 86 00 	lds	r20, 0x0086
 2de:	84 2f       	mov	r24, r20
 2e0:	82 95       	swap	r24
 2e2:	8f 70       	andi	r24, 0x0F	; 15
 2e4:	99 27       	eor	r25, r25
 2e6:	28 2b       	or	r18, r24
 2e8:	39 2b       	or	r19, r25
 2ea:	c9 01       	movw	r24, r18
 2ec:	68 ee       	ldi	r22, 0xE8	; 232
 2ee:	73 e0       	ldi	r23, 0x03	; 3
 2f0:	0e 94 5e 02 	call	0x4bc <__udivmodhi4>
 2f4:	7b 01       	movw	r14, r22
 2f6:	c9 01       	movw	r24, r18
 2f8:	68 ee       	ldi	r22, 0xE8	; 232
 2fa:	73 e0       	ldi	r23, 0x03	; 3
 2fc:	0e 94 5e 02 	call	0x4bc <__udivmodhi4>
 300:	64 e6       	ldi	r22, 0x64	; 100
 302:	70 e0       	ldi	r23, 0x00	; 0
 304:	0e 94 5e 02 	call	0x4bc <__udivmodhi4>
 308:	eb 01       	movw	r28, r22
 30a:	c9 01       	movw	r24, r18
 30c:	64 e6       	ldi	r22, 0x64	; 100
 30e:	70 e0       	ldi	r23, 0x00	; 0
 310:	0e 94 5e 02 	call	0x4bc <__udivmodhi4>
 314:	6a e0       	ldi	r22, 0x0A	; 10
 316:	70 e0       	ldi	r23, 0x00	; 0
 318:	0e 94 5e 02 	call	0x4bc <__udivmodhi4>
 31c:	8b 01       	movw	r16, r22
 31e:	c9 01       	movw	r24, r18
 320:	6a e0       	ldi	r22, 0x0A	; 10
 322:	70 e0       	ldi	r23, 0x00	; 0
 324:	0e 94 5e 02 	call	0x4bc <__udivmodhi4>
 328:	2c 01       	movw	r4, r24
 32a:	24 2f       	mov	r18, r20
 32c:	33 27       	eor	r19, r19
 32e:	2f 70       	andi	r18, 0x0F	; 15
 330:	30 70       	andi	r19, 0x00	; 0
 332:	81 e7       	ldi	r24, 0x71	; 113
 334:	92 e0       	ldi	r25, 0x02	; 2
 336:	28 9f       	mul	r18, r24
 338:	a0 01       	movw	r20, r0
 33a:	29 9f       	mul	r18, r25
 33c:	50 0d       	add	r21, r0
 33e:	38 9f       	mul	r19, r24
 340:	50 0d       	add	r21, r0
 342:	11 24       	eor	r1, r1
 344:	9a 01       	movw	r18, r20
 346:	ca 01       	movw	r24, r20
 348:	68 ee       	ldi	r22, 0xE8	; 232
 34a:	73 e0       	ldi	r23, 0x03	; 3
 34c:	0e 94 5e 02 	call	0x4bc <__udivmodhi4>
 350:	3b 01       	movw	r6, r22
 352:	c9 01       	movw	r24, r18
 354:	68 ee       	ldi	r22, 0xE8	; 232
 356:	73 e0       	ldi	r23, 0x03	; 3
 358:	0e 94 5e 02 	call	0x4bc <__udivmodhi4>
 35c:	64 e6       	ldi	r22, 0x64	; 100
 35e:	70 e0       	ldi	r23, 0x00	; 0
 360:	0e 94 5e 02 	call	0x4bc <__udivmodhi4>
 364:	4b 01       	movw	r8, r22
 366:	c9 01       	movw	r24, r18
 368:	64 e6       	ldi	r22, 0x64	; 100
 36a:	70 e0       	ldi	r23, 0x00	; 0
 36c:	0e 94 5e 02 	call	0x4bc <__udivmodhi4>
 370:	6a e0       	ldi	r22, 0x0A	; 10
 372:	70 e0       	ldi	r23, 0x00	; 0
 374:	0e 94 5e 02 	call	0x4bc <__udivmodhi4>
 378:	5b 01       	movw	r10, r22
 37a:	c9 01       	movw	r24, r18
 37c:	6a e0       	ldi	r22, 0x0A	; 10
 37e:	70 e0       	ldi	r23, 0x00	; 0
 380:	0e 94 5e 02 	call	0x4bc <__udivmodhi4>
 384:	6c 01       	movw	r12, r24
 386:	85 e7       	ldi	r24, 0x75	; 117
 388:	90 e0       	ldi	r25, 0x00	; 0
 38a:	0e 94 5f 00 	call	0xbe <Usart_PutString>
 38e:	e1 14       	cp	r14, r1
 390:	f1 04       	cpc	r15, r1
 392:	81 f4       	brne	.+32     	; 0x3b4 <main+0x15a>
 394:	80 e2       	ldi	r24, 0x20	; 32
 396:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 39a:	20 97       	sbiw	r28, 0x00	; 0
 39c:	11 f4       	brne	.+4      	; 0x3a2 <main+0x148>
 39e:	80 e2       	ldi	r24, 0x20	; 32
 3a0:	02 c0       	rjmp	.+4      	; 0x3a6 <main+0x14c>
 3a2:	8c 2f       	mov	r24, r28
 3a4:	80 5d       	subi	r24, 0xD0	; 208
 3a6:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 3aa:	01 15       	cp	r16, r1
 3ac:	11 05       	cpc	r17, r1
 3ae:	51 f4       	brne	.+20     	; 0x3c4 <main+0x16a>
 3b0:	80 e2       	ldi	r24, 0x20	; 32
 3b2:	0a c0       	rjmp	.+20     	; 0x3c8 <main+0x16e>
 3b4:	8e 2d       	mov	r24, r14
 3b6:	80 5d       	subi	r24, 0xD0	; 208
 3b8:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 3bc:	8c 2f       	mov	r24, r28
 3be:	80 5d       	subi	r24, 0xD0	; 208
 3c0:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 3c4:	80 2f       	mov	r24, r16
 3c6:	80 5d       	subi	r24, 0xD0	; 208
 3c8:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 3cc:	84 2d       	mov	r24, r4
 3ce:	80 5d       	subi	r24, 0xD0	; 208
 3d0:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 3d4:	8e e2       	ldi	r24, 0x2E	; 46
 3d6:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 3da:	86 2d       	mov	r24, r6
 3dc:	80 5d       	subi	r24, 0xD0	; 208
 3de:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 3e2:	88 2d       	mov	r24, r8
 3e4:	80 5d       	subi	r24, 0xD0	; 208
 3e6:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 3ea:	8a 2d       	mov	r24, r10
 3ec:	80 5d       	subi	r24, 0xD0	; 208
 3ee:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 3f2:	8c 2d       	mov	r24, r12
 3f4:	80 5d       	subi	r24, 0xD0	; 208
 3f6:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 3fa:	80 e2       	ldi	r24, 0x20	; 32
 3fc:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 400:	8f e6       	ldi	r24, 0x6F	; 111
 402:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 406:	83 e4       	ldi	r24, 0x43	; 67
 408:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 40c:	8d e0       	ldi	r24, 0x0D	; 13
 40e:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 412:	8a e0       	ldi	r24, 0x0A	; 10
 414:	0e 94 5b 00 	call	0xb6 <Usart_PutChar>
 418:	c0 e0       	ldi	r28, 0x00	; 0
 41a:	84 e1       	ldi	r24, 0x14	; 20
 41c:	90 e0       	ldi	r25, 0x00	; 0
 41e:	0e 94 a0 00 	call	0x140 <Delayms>
 422:	cf 5f       	subi	r28, 0xFF	; 255
 424:	c8 3c       	cpi	r28, 0xC8	; 200
 426:	c8 f3       	brcs	.-14     	; 0x41a <main+0x1c0>
 428:	33 cf       	rjmp	.-410    	; 0x290 <main+0x36>

0000042a <DS18B20_ReadRAM>:
}   

 // 读取RAM内容
void DS18B20_ReadRAM(void)       
{
 42a:	0f 93       	push	r16
 42c:	1f 93       	push	r17
 42e:	cf 93       	push	r28
	unsigned char i;
	
	DS18B20_Init();     //初始化DSDS18B20
 430:	0e 94 b4 00 	call	0x168 <DS18B20_Init>
	
	Write_DS18B20(DS18B20_SKIP_ROM);  //发送ROM指令,跳过ROM匹配		
 434:	8c ec       	ldi	r24, 0xCC	; 204
 436:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
		
	Write_DS18B20(DS18B20_READ_RAM);  //发送读取暂存器指令
 43a:	8e eb       	ldi	r24, 0xBE	; 190
 43c:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
 440:	0f e8       	ldi	r16, 0x8F	; 143
 442:	10 e0       	ldi	r17, 0x00	; 0
 444:	c8 e0       	ldi	r28, 0x08	; 8
	
	for(i = 0;i < 9;i++)
	{
		ReadRAM_Buff[i] = Read_DS18B20();
 446:	0e 94 ce 00 	call	0x19c <Read_DS18B20>
 44a:	f8 01       	movw	r30, r16
 44c:	81 93       	st	Z+, r24
 44e:	8f 01       	movw	r16, r30
 450:	c1 50       	subi	r28, 0x01	; 1
 452:	c7 ff       	sbrs	r28, 7
 454:	f8 cf       	rjmp	.-16     	; 0x446 <DS18B20_ReadRAM+0x1c>
 456:	cf 91       	pop	r28
 458:	1f 91       	pop	r17
 45a:	0f 91       	pop	r16
 45c:	08 95       	ret

0000045e <DS18B20_WriteRAM>:
	}	
}

//写温度上下限和配置寄存器到RAM
void DS18B20_WriteRAM(void)       
{
	DS18B20_Init();     //初始化DSDS18B20
 45e:	0e 94 b4 00 	call	0x168 <DS18B20_Init>
		
	Write_DS18B20(DS18B20_SKIP_ROM);  //发送ROM指令,跳过ROM匹配
 462:	8c ec       	ldi	r24, 0xCC	; 204
 464:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
	
	Write_DS18B20(DS18B20_WRITE_RAM);  //	发送写RAM命令	
 468:	8e e4       	ldi	r24, 0x4E	; 78
 46a:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
		
	Write_DS18B20(ThrH);        //写温度报警上限值
 46e:	80 91 88 00 	lds	r24, 0x0088
 472:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
	Write_DS18B20(ThrL);        //写温度报警下限值
 476:	80 91 89 00 	lds	r24, 0x0089
 47a:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
	Write_DS18B20(CFG);         //写配置寄存器
 47e:	80 91 87 00 	lds	r24, 0x0087
 482:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
 486:	08 95       	ret

00000488 <DS18B20_CopyEEPROM>:
}

//复制RAM中的温度上下线和配置寄存器到EEPROM
void DS18B20_CopyEEPROM(void)     
{
	DS18B20_Init();     //初始化DSDS18B20
 488:	0e 94 b4 00 	call	0x168 <DS18B20_Init>
		
	Write_DS18B20(DS18B20_SKIP_ROM);  //发送ROM指令,跳过ROM匹配
 48c:	8c ec       	ldi	r24, 0xCC	; 204
 48e:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
	
	Write_DS18B20(DS18B20_COPY_RAM);  //	发送复制命令	
 492:	88 e4       	ldi	r24, 0x48	; 72
 494:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
		
	Delayms(20);   //  等待复制完成	
 498:	84 e1       	ldi	r24, 0x14	; 20
 49a:	90 e0       	ldi	r25, 0x00	; 0
 49c:	0e 94 a0 00 	call	0x140 <Delayms>
 4a0:	08 95       	ret

000004a2 <DS18B20_RecallRAM>:
}

//把EEPROM中的温度上下线和配置寄存器恢复到RAM
void DS18B20_RecallRAM(void)      
{
	DS18B20_Init();     //初始化DSDS18B20
 4a2:	0e 94 b4 00 	call	0x168 <DS18B20_Init>
	
	Write_DS18B20(DS18B20_SKIP_ROM);  //发送ROM指令,跳过ROM匹配
 4a6:	8c ec       	ldi	r24, 0xCC	; 204
 4a8:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
		
	Write_DS18B20(DS18B20_RECALL_EEPROM);  //	发送温度转换命令	
 4ac:	88 eb       	ldi	r24, 0xB8	; 184
 4ae:	0e 94 eb 00 	call	0x1d6 <Write_DS18B20>
	
	Delayms(20);	
 4b2:	84 e1       	ldi	r24, 0x14	; 20
 4b4:	90 e0       	ldi	r25, 0x00	; 0
 4b6:	0e 94 a0 00 	call	0x140 <Delayms>
 4ba:	08 95       	ret

000004bc <__udivmodhi4>:
 4bc:	aa 1b       	sub	r26, r26
 4be:	bb 1b       	sub	r27, r27
 4c0:	51 e1       	ldi	r21, 0x11	; 17
 4c2:	07 c0       	rjmp	.+14     	; 0x4d2 <__udivmodhi4_ep>

000004c4 <__udivmodhi4_loop>:
 4c4:	aa 1f       	adc	r26, r26
 4c6:	bb 1f       	adc	r27, r27
 4c8:	a6 17       	cp	r26, r22
 4ca:	b7 07       	cpc	r27, r23
 4cc:	10 f0       	brcs	.+4      	; 0x4d2 <__udivmodhi4_ep>
 4ce:	a6 1b       	sub	r26, r22
 4d0:	b7 0b       	sbc	r27, r23

000004d2 <__udivmodhi4_ep>:
 4d2:	88 1f       	adc	r24, r24
 4d4:	99 1f       	adc	r25, r25
 4d6:	5a 95       	dec	r21
 4d8:	a9 f7       	brne	.-22     	; 0x4c4 <__udivmodhi4_loop>
 4da:	80 95       	com	r24
 4dc:	90 95       	com	r25
 4de:	bc 01       	movw	r22, r24
 4e0:	cd 01       	movw	r24, r26
 4e2:	08 95       	ret

⌨️ 快捷键说明

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