📄 hjmcu.lss
字号:
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 + -