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

📄 ds18b20.lis

📁 基于AVR单片机的DS18B20测温程序.
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -