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

📄 b20.lis

📁 包含无线收发模块 NREF905的所有功能库函数 本库函数与外部函数接口简单易用
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 009A                   .dbline 117
 009A           L16:
 009A                   .dbline 119
 009A 02E3              ldi R16,50
 009C 10E0              ldi R17,0
 009E 00D0              rcall _delay
 00A0                   .dbline 120
 00A0           L13:
 00A0                   .dbline 99
 00A0 6F5F              subi R22,255  ; offset = 1
 00A2 7F4F              sbci R23,255
 00A4           L15:
 00A4                   .dbline 99
 00A4 6830              cpi R22,8
 00A6 E0E0              ldi R30,0
 00A8 7E07              cpc R23,R30
 00AA 30F3              brlo L12
 00AC                   .dbline 122
 00AC           ;                               
 00AC           ;               delay(50);        // delay 55us
 00AC           ;       }
 00AC           ;       
 00AC           ;       return byte;
 00AC 042F              mov R16,R20
 00AE                   .dbline -2
 00AE           L11:
 00AE 00D0              rcall pop_gset2
 00B0                   .dbline 0 ; func end
 00B0 0895              ret
 00B2                   .dbsym l data 1 c
 00B2                   .dbsym r byte 20 i
 00B2                   .dbsym r i 22 i
 00B2                   .dbend
 00B2                   .dbfunc e Write18B20 _Write18B20 fV
 00B2           ;              j -> R20
 00B2           ;              i -> R22
 00B2           ;            cmd -> R10
                        .even
 00B2           _Write18B20::
 00B2 00D0              rcall push_gset3
 00B4 A02E              mov R10,R16
 00B6                   .dbline -1
 00B6                   .dbline 131
 00B6           ; }
 00B6           ; /***********************************************************
 00B6           ; *   函数名称:void Write18B20(unsigned char cmd)
 00B6           ; *   功    能:向18B20写入一个字节的数据
 00B6           ; *   入口参数:要写入的数据或者是字节
 00B6           ; *   出口参数:无
 00B6           ; ***********************************************************/
 00B6           ; void Write18B20(unsigned char cmd)
 00B6           ; {
 00B6                   .dbline 133
 00B6           ;     unsigned char i,j;
 00B6           ;       DDRD |= 0x08;
 00B6 8B9A              sbi 0x11,3
 00B8                   .dbline 135
 00B8           ;       
 00B8           ;       for(i=0;i<8;i++)
 00B8 6627              clr R22
 00BA 1BC0              rjmp L22
 00BC           L19:
 00BC                   .dbline 136
 00BC           ;       {
 00BC                   .dbline 137
 00BC           ;          j = cmd & 0x01;
 00BC 4A2D              mov R20,R10
 00BE 4170              andi R20,1
 00C0                   .dbline 138
 00C0           ;          if(j == 0x01)
 00C0 4130              cpi R20,1
 00C2 59F4              brne L23
 00C4                   .dbline 139
 00C4           ;          {
 00C4                   .dbline 140
 00C4           ;              PORTD &= 0xF7;  // PD3输出低电平
 00C4 82B3              in R24,0x12
 00C6 877F              andi R24,247
 00C8 82BB              out 0x12,R24
 00CA                   .dbline 141
 00CA           ;                  delay(5);
 00CA 05E0              ldi R16,5
 00CC 10E0              ldi R17,0
 00CE 00D0              rcall _delay
 00D0                   .dbline 142
 00D0           ;                  PORTD |= 0x08;
 00D0 939A              sbi 0x12,3
 00D2                   .dbline 143
 00D2           ;                  delay(25);   //写入一位1
 00D2 09E1              ldi R16,25
 00D4 10E0              ldi R17,0
 00D6 00D0              rcall _delay
 00D8                   .dbline 144
 00D8           ;          } 
 00D8 0AC0              rjmp L24
 00DA           L23:
 00DA                   .dbline 146
 00DA           ;          else
 00DA           ;          {
 00DA                   .dbline 147
 00DA           ;              PORTD &= 0xF7;  // PD3输出低电平
 00DA 82B3              in R24,0x12
 00DC 877F              andi R24,247
 00DE 82BB              out 0x12,R24
 00E0                   .dbline 148
 00E0           ;                  delay(25);
 00E0 09E1              ldi R16,25
 00E2 10E0              ldi R17,0
 00E4 00D0              rcall _delay
 00E6                   .dbline 149
 00E6           ;                  PORTD |= 0x08;
 00E6 939A              sbi 0x12,3
 00E8                   .dbline 150
 00E8           ;                  delay(5);    //写入一位0
 00E8 05E0              ldi R16,5
 00EA 10E0              ldi R17,0
 00EC 00D0              rcall _delay
 00EE                   .dbline 152
 00EE           ;              
 00EE           ;          }
 00EE           L24:
 00EE                   .dbline 153
 00EE A694              lsr R10
 00F0                   .dbline 154
 00F0           L20:
 00F0                   .dbline 135
 00F0 6395              inc R22
 00F2           L22:
 00F2                   .dbline 135
 00F2 6830              cpi R22,8
 00F4 18F3              brlo L19
 00F6                   .dbline -2
 00F6           L18:
 00F6 00D0              rcall pop_gset3
 00F8                   .dbline 0 ; func end
 00F8 0895              ret
 00FA                   .dbsym r j 20 c
 00FA                   .dbsym r i 22 c
 00FA                   .dbsym r cmd 10 c
 00FA                   .dbend
 00FA                   .dbfunc e GetTemp _GetTemp fi
 00FA           ;   ds18b20_temp -> R20,R21
 00FA           ;        ds18b20 -> y+0
 00FA           ;              i -> R22,R23
                        .even
 00FA           _GetTemp::
 00FA 00D0              rcall push_gset2
 00FC 2297              sbiw R28,2
 00FE                   .dbline -1
 00FE                   .dbline 158
 00FE           ;          cmd = cmd>>1; 
 00FE           ;       }
 00FE           ; }
 00FE           ; /************************** main()******************************/
 00FE           ; unsigned int GetTemp(void)
 00FE           ; {
 00FE                   .dbline 161
 00FE           ;     unsigned int i;
 00FE           ;       unsigned char ds18b20[2];
 00FE           ;       unsigned int ds18b20_temp=0;
 00FE 4427              clr R20
 0100 5527              clr R21
 0102           L26:
 0102                   .dbline 166
 0102           L27:
 0102                   .dbline 165
 0102           ;       
 0102           ;     
 0102           ;       
 0102           ;       while(0x01 == Check18B20()) //检查18b20是否存在
 0102 99DF              rcall _Check18B20
 0104 0130              cpi R16,1
 0106 E9F3              breq L26
 0108                   .dbline 167
 0108           ;           ;
 0108           ;     Write18B20(0xcc);         
 0108 0CEC              ldi R16,204
 010A D3DF              rcall _Write18B20
 010C                   .dbline 168
 010C           ;       Write18B20(0x44);           //启动转换
 010C 04E4              ldi R16,68
 010E D1DF              rcall _Write18B20
 0110                   .dbline 170
 0110           ;       
 0110           ;      for(i=0;i<200;i++)   //每次转换需要延时200ms以上 
 0110 6627              clr R22
 0112 7727              clr R23
 0114 05C0              rjmp L32
 0116           L29:
 0116                   .dbline 171
 0116 08EE              ldi R16,1000
 0118 13E0              ldi R17,3
 011A 00D0              rcall _delay
 011C           L30:
 011C                   .dbline 170
 011C 6F5F              subi R22,255  ; offset = 1
 011E 7F4F              sbci R23,255
 0120           L32:
 0120                   .dbline 170
 0120 683C              cpi R22,200
 0122 E0E0              ldi R30,0
 0124 7E07              cpc R23,R30
 0126 B8F3              brlo L29
 0128           L33:
 0128                   .dbline 174
 0128           L34:
 0128                   .dbline 173
 0128           ;       delay(1000);   
 0128           ;         
 0128           ;       while(0x01 == Check18B20()) //检查18b20是否存在
 0128 86DF              rcall _Check18B20
 012A 0130              cpi R16,1
 012C E9F3              breq L33
 012E                   .dbline 176
 012E           ;           ;
 012E           ;               
 012E           ;       Write18B20(0xcc);
 012E 0CEC              ldi R16,204
 0130 C0DF              rcall _Write18B20
 0132                   .dbline 177
 0132           ;     Write18B20(0xbe);  //读取温度值
 0132 0EEB              ldi R16,190
 0134 BEDF              rcall _Write18B20
 0136                   .dbline 179
 0136           ;       
 0136           ;       for(i=0;i<2;i++)
 0136 6627              clr R22
 0138 7727              clr R23
 013A 08C0              rjmp L39
 013C           L36:
 013C                   .dbline 180
 013C                   .dbline 181
 013C 97DF              rcall _Read18B20
 013E CE01              movw R24,R28
 0140 FB01              movw R30,R22
 0142 E80F              add R30,R24
 0144 F91F              adc R31,R25
 0146 0083              std z+0,R16
 0148                   .dbline 182
 0148           L37:
 0148                   .dbline 179
 0148 6F5F              subi R22,255  ; offset = 1
 014A 7F4F              sbci R23,255
 014C           L39:
 014C                   .dbline 179
 014C 6230              cpi R22,2
 014E E0E0              ldi R30,0
 0150 7E07              cpc R23,R30
 0152 A0F3              brlo L36
 0154                   .dbline 183
 0154           ;       {
 0154           ;           ds18b20[i] = Read18B20();
 0154           ;       }
 0154           ;       ds18b20_temp = (ds18b20[1]<<8);
 0154 4981              ldd R20,y+1
 0156 5527              clr R21
 0158 542F              mov R21,R20
 015A 4427              clr R20
 015C                   .dbline 184
 015C           ;       ds18b20_temp = ds18b20_temp + ds18b20[0];
 015C 2880              ldd R2,y+0
 015E 3324              clr R3
 0160 420D              add R20,R2
 0162 531D              adc R21,R3
 0164                   .dbline 186
 0164           ;       
 0164           ;       return  ds18b20_temp ;
 0164 8A01              movw R16,R20
 0166                   .dbline -2
 0166           L25:
 0166 2296              adiw R28,2
 0168 00D0              rcall pop_gset2
 016A                   .dbline 0 ; func end
 016A 0895              ret
 016C                   .dbsym r ds18b20_temp 20 i
 016C                   .dbsym l ds18b20 0 A[2:2]c
 016C                   .dbsym r i 22 i
 016C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\programme\RF905\b20.c
 0000           _delaytime::
 0000                   .blkb 2
 0002                   .dbsym e delaytime _delaytime i

⌨️ 快捷键说明

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