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

📄 ds18b20.lis

📁 F:程序DS18B20.rar索读取温度
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00A0                   .dbend
 00A0                   .dbfunc e gettemp _gettemp fc
 00A0           ;            wm3 -> R10
 00A0           ;            wm2 -> R10
 00A0           ;            wm1 -> R22
 00A0           ;            wm0 -> R20
 00A0           ;           teml -> R20
 00A0           ;           temh -> R22
                        .even
 00A0           _gettemp::
 00A0 0E940000          xcall push_xgsetF00C
 00A4                   .dbline -1
 00A4                   .dbline 68
 00A4           ; }   
 00A4           ; 
 00A4           ; unsigned char gettemp(void)                   //读取温度值 
 00A4           ; {  
 00A4                   .dbline 70
 00A4           ;      unsigned char temh,teml,wm0,wm1,wm2,wm3;  
 00A4           ;      init_1820();        //复位18b20  
 00A4 ADDF              xcall _init_1820
 00A6                   .dbline 71
 00A6           ;      write_1820(0xcc);   // 发出转换命令  
 00A6 0CEC              ldi R16,204
 00A8 BEDF              xcall _write_1820
 00AA                   .dbline 72
 00AA           ;      write_1820(0x44); 
 00AA 04E4              ldi R16,68
 00AC BCDF              xcall _write_1820
 00AE                   .dbline 73
 00AE           ;      delay_nms(1100);     //不延时也好使,不知道怎么回事! 
 00AE 0CE4              ldi R16,1100
 00B0 14E0              ldi R17,4
 00B2 2ED0              xcall _delay_nms
 00B4                   .dbline 74
 00B4           ;      init_1820();  
 00B4 A5DF              xcall _init_1820
 00B6                   .dbline 75
 00B6           ;      write_1820(0xcc);  //发出读命令  
 00B6 0CEC              ldi R16,204
 00B8 B6DF              xcall _write_1820
 00BA                   .dbline 76
 00BA           ;      write_1820(0xbe);  
 00BA 0EEB              ldi R16,190
 00BC B4DF              xcall _write_1820
 00BE                   .dbline 77
 00BE           ;      teml=read_1820();  //读数据  
 00BE CEDF              xcall _read_1820
 00C0 402F              mov R20,R16
 00C2                   .dbline 78
 00C2           ;      temh=read_1820();  
 00C2 CCDF              xcall _read_1820
 00C4 602F              mov R22,R16
 00C6                   .dbline 79
 00C6           ;      wm0=teml&0xF0;       //只要高8位的低四位和低8位的高四位,温度范围0~99啦! 
 00C6 407F              andi R20,240
 00C8                   .dbline 80
 00C8           ;      wm1=temh&0x0F; 
 00C8 6F70              andi R22,15
 00CA                   .dbline 81
 00CA           ;      wm2=wm1+wm0;        //16进制转10进制 
 00CA A62E              mov R10,R22
 00CC A40E              add R10,R20
 00CE                   .dbline 82
 00CE           ;      wm3=wm2/100; 
 00CE 14E6              ldi R17,100
 00D0 0A2D              mov R16,R10
 00D2 0E940000          xcall div8u
 00D6 A02E              mov R10,R16
 00D8                   .dbline 85
 00D8           ;      //wmh=(wm2%100)/10;   //出口参数了!wmh是显示的高位,wml使显示的低位 
 00D8           ;      //wml=(wm2%100)%10; 
 00D8           ;        return wm3;
 00D8                   .dbline -2
 00D8           L19:
 00D8                   .dbline 0 ; func end
 00D8 0C940000          xjmp pop_xgsetF00C
 00DC                   .dbsym r wm3 10 c
 00DC                   .dbsym r wm2 10 c
 00DC                   .dbsym r wm1 22 c
 00DC                   .dbsym r wm0 20 c
 00DC                   .dbsym r teml 20 c
 00DC                   .dbsym r temh 22 c
 00DC                   .dbend
 00DC                   .dbfunc e delay_1us _delay_1us fV
                        .even
 00DC           _delay_1us::
 00DC                   .dbline -1
 00DC                   .dbline 97
 00DC           ; }   
 00DC           ; 
 00DC           ; 
 00DC           ; //延时程序: 
 00DC           ; 
 00DC           ; //delay.h 
 00DC           ; /*----------------------------------------------------------------------- 
 00DC           ; 延时函数 
 00DC           ; 系统时钟:8M 
 00DC           ; -----------------------------------------------------------------------*/ 
 00DC           ; void delay_1us(void)                 //1us延时函数 
 00DC           ;   { 
 00DC                   .dbline 98
 00DC           ;    asm("nop"); 
 00DC 0000              nop
 00DE                   .dbline -2
 00DE           L20:
 00DE                   .dbline 0 ; func end
 00DE 0895              ret
 00E0                   .dbend
 00E0                   .dbfunc e delay_nus _delay_nus fV
 00E0           ;              i -> R20,R21
 00E0           ;              n -> R10,R11
                        .even
 00E0           _delay_nus::
 00E0 0E940000          xcall push_xgset300C
 00E4 5801              movw R10,R16
 00E6                   .dbline -1
 00E6                   .dbline 102
 00E6           ;   } 
 00E6           ; 
 00E6           ; void delay_nus(unsigned int n)       //N us延时函数 
 00E6           ;   { 
 00E6                   .dbline 103
 00E6           ;    unsigned int i=0; 
 00E6 4427              clr R20
 00E8 5527              clr R21
 00EA                   .dbline 104
 00EA           ;    for (i=0;i<n;i++) 
 00EA 03C0              xjmp L25
 00EC           L22:
 00EC                   .dbline 105
 00EC           ;    delay_1us(); 
 00EC F7DF              xcall _delay_1us
 00EE           L23:
 00EE                   .dbline 104
 00EE 4F5F              subi R20,255  ; offset = 1
 00F0 5F4F              sbci R21,255
 00F2           L25:
 00F2                   .dbline 104
 00F2 4A15              cp R20,R10
 00F4 5B05              cpc R21,R11
 00F6 D0F3              brlo L22
 00F8           X5:
 00F8                   .dbline -2
 00F8           L21:
 00F8                   .dbline 0 ; func end
 00F8 0C940000          xjmp pop_xgset300C
 00FC                   .dbsym r i 20 i
 00FC                   .dbsym r n 10 i
 00FC                   .dbend
 00FC                   .dbfunc e delay_1ms _delay_1ms fV
 00FC           ;              i -> R16,R17
                        .even
 00FC           _delay_1ms::
 00FC                   .dbline -1
 00FC                   .dbline 109
 00FC           ;   } 
 00FC           ;    
 00FC           ; void delay_1ms(void)                 //1ms延时函数 
 00FC           ;   { 
 00FC                   .dbline 111
 00FC           ;    unsigned int i; 
 00FC           ;    for (i=0;i<1140;i++); 
 00FC 0027              clr R16
 00FE 1127              clr R17
 0100 02C0              xjmp L30
 0102           L27:
 0102                   .dbline 111
 0102           L28:
 0102                   .dbline 111
 0102 0F5F              subi R16,255  ; offset = 1
 0104 1F4F              sbci R17,255
 0106           L30:
 0106                   .dbline 111
 0106 0437              cpi R16,116
 0108 E4E0              ldi R30,4
 010A 1E07              cpc R17,R30
 010C D0F3              brlo L27
 010E           X6:
 010E                   .dbline -2
 010E           L26:
 010E                   .dbline 0 ; func end
 010E 0895              ret
 0110                   .dbsym r i 16 i
 0110                   .dbend
 0110                   .dbfunc e delay_nms _delay_nms fV
 0110           ;              i -> R20,R21
 0110           ;              n -> R10,R11
                        .even
 0110           _delay_nms::
 0110 0E940000          xcall push_xgset300C
 0114 5801              movw R10,R16
 0116                   .dbline -1
 0116                   .dbline 115
 0116           ;   } 
 0116           ;    
 0116           ; void delay_nms(unsigned int n)       //N ms延时函数 
 0116           ;   { 
 0116                   .dbline 116
 0116           ;    unsigned int i=0; 
 0116 4427              clr R20
 0118 5527              clr R21
 011A                   .dbline 117
 011A           ;    for (i=0;i<n;i++) 
 011A 03C0              xjmp L35
 011C           L32:
 011C                   .dbline 118
 011C           ;    delay_1ms(); 
 011C EFDF              xcall _delay_1ms
 011E           L33:
 011E                   .dbline 117
 011E 4F5F              subi R20,255  ; offset = 1
 0120 5F4F              sbci R21,255
 0122           L35:
 0122                   .dbline 117
 0122 4A15              cp R20,R10
 0124 5B05              cpc R21,R11
 0126 D0F3              brlo L32
 0128           X7:
 0128                   .dbline -2
 0128           L31:
 0128                   .dbline 0 ; func end
 0128 0C940000          xjmp pop_xgset300C
 012C                   .dbsym r i 20 i
 012C                   .dbsym r n 10 i
 012C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\try\DS18B20\DS18B20.C
 0000           _wml::
 0000                   .blkb 1
 0001                   .dbsym e wml _wml c
 0001           _wmh::
 0001                   .blkb 1
 0002                   .dbsym e wmh _wmh c
 0002           ;   } 

⌨️ 快捷键说明

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