📄 ds18b20.lis
字号:
039A A694 lsr R10
039C .dbline 304
039C ; b = ReadBit();
039C D5DF rcall _ReadBit
039E 402F mov R20,R16
03A0 .dbline 305
03A0 ; if(b)
03A0 0023 tst R16
03A2 19F0 breq L58
03A4 .dbline 306
03A4 ; {
03A4 .dbline 307
03A4 ; ReadBits_Value = ReadBits_Value|0x80;
03A4 8A2D mov R24,R10
03A6 8068 ori R24,128
03A8 A82E mov R10,R24
03AA .dbline 308
03AA ; }
03AA L58:
03AA .dbline 310
03AA L55:
03AA .dbline 301
03AA 6A95 dec R22
03AC L57:
03AC .dbline 301
03AC 2224 clr R2
03AE 2616 cp R2,R22
03B0 A0F3 brlo L54
03B2 .dbline 312
03B2 ;
03B2 ; }
03B2 ; //DEC_Num_Disp(0,1,ReadBits_Value,5);
03B2 ; return ReadBits_Value;
03B2 0A2D mov R16,R10
03B4 .dbline -2
03B4 L53:
03B4 00D0 rcall pop_gset3
03B6 .dbline 0 ; func end
03B6 0895 ret
03B8 .dbsym r b 20 c
03B8 .dbsym r i 22 c
03B8 .dbsym r ReadBits_Value 10 c
03B8 .dbend
.area data(ram, con, rel)
0002 .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
0002 L61:
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
0004 L62:
0004 .blkb 2
.area idata
0004 0000 .word 0
.area data(ram, con, rel)
0006 .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
0006 L63:
0006 .blkb 1
.area idata
0006 00 .byte 0
.area data(ram, con, rel)
0007 .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
0007 L64:
0007 .blkb 4
.area idata
0007 00000000 .word 0,0
.area data(ram, con, rel)
000B .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
.area text(rom, con, rel)
03B8 .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
03B8 .dbfunc e Get_Temperature _Get_Temperature fV
03B8 .dbsym s final L64 L
03B8 .dbsym s Temp2 L63 c
03B8 .dbsym s TempHi L62 I
03B8 .dbsym s TempLow L61 I
03B8 ; i -> <dead>
.even
03B8 _Get_Temperature::
03B8 2297 sbiw R28,2
03BA .dbline -1
03BA .dbline 320
03BA ; }
03BA ;
03BA ; /***************************************************************
03BA ; * 功能:获得温度值 *
03BA ; * 返回:温度值--摄氏温度 *
03BA ; ***************************************************************/
03BA ; void Get_Temperature(void)
03BA ; {
03BA .dbline 326
03BA ; uint i;
03BA ; static int TempLow = 0;
03BA ; static int TempHi = 0;
03BA ; static char Temp2 = 0;
03BA ; static long final = 0;
03BA ; Reset1820();
03BA 9DDF rcall _Reset1820
03BC .dbline 327
03BC ; WriteBits(MatchROM);
03BC 0CEC ldi R16,204
03BE 8CDF rcall _WriteBits
03C0 .dbline 328
03C0 ; WriteBits(ConverTem);
03C0 04E4 ldi R16,68
03C2 8ADF rcall _WriteBits
03C4 .dbline 332
03C4 ; //for(i=0;i<20;i++)
03C4 ; //delayus(66);
03C4 ;
03C4 ; Reset1820();
03C4 98DF rcall _Reset1820
03C6 .dbline 333
03C6 ; WriteBits(MatchROM);
03C6 0CEC ldi R16,204
03C8 87DF rcall _WriteBits
03CA .dbline 334
03CA ; WriteBits(Get_Value);
03CA 0EEB ldi R16,190
03CC 85DF rcall _WriteBits
03CE .dbline 336
03CE ; //for(i=0;i<20;i++)
03CE ; delayus(70);
03CE 06E4 ldi R16,70
03D0 10E0 ldi R17,0
03D2 DFDE rcall _delayus
03D4 .dbline 337
03D4 ; TempLow = ReadBits(); //温度低位
03D4 DCDF rcall _ReadBits
03D6 202E mov R2,R16
03D8 3324 clr R3
03DA 30920300 sts L61+1,R3
03DE 20920200 sts L61,R2
03E2 .dbline 338
03E2 ; delayus(70);
03E2 06E4 ldi R16,70
03E4 10E0 ldi R17,0
03E6 D5DE rcall _delayus
03E8 .dbline 339
03E8 ; TempHi = ReadBits();
03E8 D2DF rcall _ReadBits
03EA 202E mov R2,R16
03EC 3324 clr R3
03EE 30920500 sts L62+1,R3
03F2 20920400 sts L62,R2
03F6 .dbline 343
03F6 ; //温度高位
03F6 ;
03F6 ;
03F6 ; final = (((TempHi)<<8)|TempLow)*0.0625;
03F6 00E0 ldi R16,<L65
03F8 10E0 ldi R17,>L65
03FA 00D0 rcall lpm32
03FC 3A93 st -y,R19
03FE 2A93 st -y,R18
0400 1A93 st -y,R17
0402 0A93 st -y,R16
0404 20900200 lds R2,L61
0408 30900300 lds R3,L61+1
040C 00910400 lds R16,L62
0410 10910500 lds R17,L62+1
0414 102F mov R17,R16
0416 0027 clr R16
0418 0229 or R16,R2
041A 1329 or R17,R3
041C 00D0 rcall int2fp
041E 3A93 st -y,R19
0420 2A93 st -y,R18
0422 1A93 st -y,R17
0424 0A93 st -y,R16
0426 00D0 rcall empy32f
0428 00D0 rcall fp2long
042A 10930800 sts L64+1,R17
042E 00930700 sts L64,R16
0432 30930A00 sts L64+2+1,R19
0436 20930900 sts L64+2,R18
043A .dbline 347
043A ;
043A ;
043A ;
043A ; process(final,data);
043A 80E0 ldi R24,<_data
043C 90E0 ldi R25,>_data
043E 9983 std y+1,R25
0440 8883 std y+0,R24
0442 DEDD rcall _process
0444 .dbline 348
0444 ; DisplayListChar(3,1,data);
0444 80E0 ldi R24,<_data
0446 90E0 ldi R25,>_data
0448 9983 std y+1,R25
044A 8883 std y+0,R24
044C 21E0 ldi R18,1
044E 03E0 ldi R16,3
0450 F0DE rcall _DisplayListChar
0452 .dbline -2
0452 L60:
0452 2296 adiw R28,2
0454 .dbline 0 ; func end
0454 0895 ret
0456 .dbsym l i 3 i
0456 .dbend
0456 .dbfunc e init_devices _init_devices fV
.even
0456 _init_devices::
0456 .dbline -1
0456 .dbline 353
0456 ; }
0456 ;
0456 ; //call this routine to initialize all peripherals
0456 ; void init_devices(void)
0456 ; {
0456 .dbline 355
0456 ; //stop errant interrupts until set up
0456 ; CLI(); //disable all interrupts
0456 F894 cli
0458 .dbline 356
0458 ; port_init();
0458 A3DE rcall _port_init
045A .dbline 357
045A ; LCMInit(); //清屏
045A CEDE rcall _LCMInit
045C .dbline 358
045C ; MCUCR = 0x00;
045C 2224 clr R2
045E 25BE out 0x35,R2
0460 .dbline 359
0460 ; GICR = 0x00;
0460 2BBE out 0x3b,R2
0462 .dbline 360
0462 ; TIMSK = 0x04; //timer interrupt sources
0462 84E0 ldi R24,4
0464 89BF out 0x39,R24
0466 .dbline 361
0466 ; SEI(); //re-enable interrupts
0466 7894 sei
0468 .dbline -2
0468 L66:
0468 .dbline 0 ; func end
0468 0895 ret
046A .dbend
046A .dbfunc e main _main fV
046A ; i -> R20
.even
046A _main::
046A 2297 sbiw R28,2
046C .dbline -1
046C .dbline 366
046C ; //all peripherals are now initialized
046C ; }
046C ;
046C ; void main(void)
046C ; {
046C .dbline 368
046C ; uchar i;
046C ; init_devices();
046C F4DF rcall _init_devices
046E .dbline 376
046E ; /*
046E ; delayms(5);
046E ; DisplayListChar(0,0,"Reset after sure$");
046E ; DisplayListChar(0,1," C $");
046E ; Init1820();
046E ; delayms(10);
046E ; */
046E ; DisplayListChar(0,0,"DS18B20+LCD$");
046E 80E0 ldi R24,<L68
0470 90E0 ldi R25,>L68
0472 9983 std y+1,R25
0474 8883 std y+0,R24
0476 2227 clr R18
0478 0027 clr R16
047A DBDE rcall _DisplayListChar
047C .dbline 377
047C ; DisplayListChar(0,1,"Made by zhang_he$");
047C 80E0 ldi R24,<L69
047E 90E0 ldi R25,>L69
0480 9983 std y+1,R25
0482 8883 std y+0,R24
0484 21E0 ldi R18,1
0486 0027 clr R16
0488 D4DE rcall _DisplayListChar
048A .dbline 378
048A ; delayms(80);
048A 00E5 ldi R16,80
048C 10E0 ldi R17,0
048E 6FDE rcall _delayms
0490 .dbline 379
0490 ; DisplayListChar(0,0,"Press the button$");
0490 80E0 ldi R24,<L70
0492 90E0 ldi R25,>L70
0494 9983 std y+1,R25
0496 8883 std y+0,R24
0498 2227 clr R18
049A 0027 clr R16
049C CADE rcall _DisplayListChar
049E L71:
049E .dbline 380
049E L72:
049E .dbline 380
049E ; while(PIND!=0xfe);
049E 80B3 in R24,0x10
04A0 8E3F cpi R24,254
04A2 E9F7 brne L71
04A4 .dbline 381
04A4 ; DisplayListChar(0,0," Now Temp: $");
04A4 80E0 ldi R24,<L74
04A6 90E0 ldi R25,>L74
04A8 9983 std y+1,R25
04AA 8883 std y+0,R24
04AC 2227 clr R18
04AE 0027 clr R16
04B0 C0DE rcall _DisplayListChar
04B2 .dbline 382
04B2 ; DisplayListChar(0,1," C $");
04B2 80E0 ldi R24,<L75
04B4 90E0 ldi R25,>L75
04B6 9983 std y+1,R25
04B8 8883 std y+0,R24
04BA 21E0 ldi R18,1
04BC 0027 clr R16
04BE B9DE rcall _DisplayListChar
04C0 .dbline 384
04C0 ;
04C0 ; for(i=0;;i++)
04C0 4427 clr R20
04C2 L76:
04C2 .dbline 385
04C2 .dbline 386
04C2 7ADF rcall _Get_Temperature
04C4 .dbline 387
04C4 L77:
04C4 .dbline 384
04C4 4395 inc R20
04C6 .dbline 384
04C6 FDCF rjmp L76
04C8 X3:
04C8 .dbline -2
04C8 L67:
04C8 2296 adiw R28,2
04CA .dbline 0 ; func end
04CA 0895 ret
04CC .dbsym r i 20 c
04CC .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
0000 _data::
0000 .blkb 5
0005 .dbsym e data _data A[5:5]c
.area data(ram, con, rel)
000B .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
000B L75:
000B .blkb 18
.area idata
000B 20202020202020204320202020202020 .byte 32,32,32,32,32,32,32,32,'C,32,32,32,32,32,32,32
001B 2400 .byte 36,0
.area data(ram, con, rel)
001D .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
001D L74:
001D .blkb 18
.area idata
001D 204E6F772054656D703A202020202020 .byte 32,'N,'o,'w,32,'T,'e,'m,'p,58,32,32,32,32,32,32
002D 2400 .byte 36,0
.area data(ram, con, rel)
002F .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
002F L70:
002F .blkb 18
.area idata
002F 50726573732074686520627574746F6E .byte 'P,'r,'e,'s,'s,32,'t,'h,'e,32,'b,'u,'t,'t,'o,'n
003F 2400 .byte 36,0
.area data(ram, con, rel)
0041 .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
0041 L69:
0041 .blkb 18
.area idata
0041 4D616465206279207A68616E675F6865 .byte 'M,'a,'d,'e,32,'b,'y,32,'z,'h,'a,'n,'g,95,'h,'e
0051 2400 .byte 36,0
.area data(ram, con, rel)
0053 .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
0053 L68:
0053 .blkb 13
.area idata
0053 445331384232302B4C43442400 .byte 'D,'S,49,56,'B,50,48,43,'L,'C,'D,36,0
.area data(ram, con, rel)
0060 .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
.area lit(rom, con, rel)
0000 L65:
0000 0000803D .word 0x0,0x3d80
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -