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

📄 ds18b20.lis

📁 AVR16源代码 ICC编译器
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 018E                   .dbline 168
 018E           ;           t=temporary[0]+temporary[1]*256;
 018E 2981              ldd R18,y+1
 0190 3327              clr R19
 0192 00E0              ldi R16,256
 0194 11E0              ldi R17,1
 0196 0E940000          xcall empy16s
 019A 4881              ldd R20,y+0
 019C 5527              clr R21
 019E 400F              add R20,R16
 01A0 511F              adc R21,R17
 01A2                   .dbline 169
 01A2           ;           if(temporary[1]>0xf)
 01A2 8FE0              ldi R24,15
 01A4 2980              ldd R2,y+1
 01A6 8215              cp R24,R2
 01A8 B0F5              brsh L45
 01AA                   .dbline 170
 01AA           ;              temperature=(~t+1)*0.0625;
 01AA CA01              movw R24,R20
 01AC 8095              com R24
 01AE 9095              com R25
 01B0 0196              adiw R24,1
 01B2 1C01              movw R2,R24
 01B4 00E0              ldi R16,<L48
 01B6 10E0              ldi R17,>L48
 01B8 0E940000          xcall lpm32
 01BC 3A93              st -y,R19
 01BE 2A93              st -y,R18
 01C0 1A93              st -y,R17
 01C2 0A93              st -y,R16
 01C4 00E0              ldi R16,<L49
 01C6 10E0              ldi R17,>L49
 01C8 0E940000          xcall lpm32
 01CC 3A93              st -y,R19
 01CE 2A93              st -y,R18
 01D0 1A93              st -y,R17
 01D2 0A93              st -y,R16
 01D4 8101              movw R16,R2
 01D6 1695              lsr R17
 01D8 0795              ror R16
 01DA 0E940000          xcall int2fp
 01DE 3A93              st -y,R19
 01E0 2A93              st -y,R18
 01E2 1A93              st -y,R17
 01E4 0A93              st -y,R16
 01E6 0E940000          xcall empy32fs
 01EA 8101              movw R16,R2
 01EC 0170              andi R16,1
 01EE 1070              andi R17,0
 01F0 0E940000          xcall int2fp
 01F4 3A93              st -y,R19
 01F6 2A93              st -y,R18
 01F8 1A93              st -y,R17
 01FA 0A93              st -y,R16
 01FC 0E940000          xcall add32fs
 0200 0E940000          xcall empy32f
 0204 10930100          sts _temperature+1,R17
 0208 00930000          sts _temperature,R16
 020C 30930300          sts _temperature+2+1,R19
 0210 20930200          sts _temperature+2,R18
 0214 30C0              xjmp L46
 0216           L45:
 0216                   .dbline 172
 0216           ;               else
 0216           ;                  {
 0216                   .dbline 173
 0216           ;                  temperature=t*0.0625;
 0216 00E0              ldi R16,<L48
 0218 10E0              ldi R17,>L48
 021A 0E940000          xcall lpm32
 021E 3A93              st -y,R19
 0220 2A93              st -y,R18
 0222 1A93              st -y,R17
 0224 0A93              st -y,R16
 0226 00E0              ldi R16,<L49
 0228 10E0              ldi R17,>L49
 022A 0E940000          xcall lpm32
 022E 3A93              st -y,R19
 0230 2A93              st -y,R18
 0232 1A93              st -y,R17
 0234 0A93              st -y,R16
 0236 8A01              movw R16,R20
 0238 1695              lsr R17
 023A 0795              ror R16
 023C 0E940000          xcall int2fp
 0240 3A93              st -y,R19
 0242 2A93              st -y,R18
 0244 1A93              st -y,R17
 0246 0A93              st -y,R16
 0248 0E940000          xcall empy32fs
 024C 8A01              movw R16,R20
 024E 0170              andi R16,1
 0250 1070              andi R17,0
 0252 0E940000          xcall int2fp
 0256 3A93              st -y,R19
 0258 2A93              st -y,R18
 025A 1A93              st -y,R17
 025C 0A93              st -y,R16
 025E 0E940000          xcall add32fs
 0262 0E940000          xcall empy32f
 0266 10930100          sts _temperature+1,R17
 026A 00930000          sts _temperature,R16
 026E 30930300          sts _temperature+2+1,R19
 0272 20930200          sts _temperature+2,R18
 0276                   .dbline 174
 0276           ;                  }
 0276           L46:
 0276                   .dbline 176
 0276           ;               
 0276           ;               return  true; 
 0276 0027              clr R16
 0278                   .dbline -2
 0278           L33:
 0278 2996              adiw R28,9
 027A 0E940000          xcall pop_gset1
 027E                   .dbline 0 ; func end
 027E 0895              ret
 0280                   .dbsym r t 20 i
 0280                   .dbsym l temporary 0 A[9:9]c
 0280                   .dbsym r i 20 c
 0280                   .dbend
 0280                   .dbfunc e Read_RomCode _Read_RomCode fc
 0280           ;           temp -> R20,R21
                        .even
 0280           _Read_RomCode::
 0280 0E940000          xcall push_gset1
 0284 A801              movw R20,R16
 0286                   .dbline -1
 0286                   .dbline 187
 0286           ;       }
 0286           ; }
 0286           ; 
 0286           ; /*===================================================================
 0286           ; //    函数功能:      读取Rom Code
 0286           ; //    形参:          *temp           DS18B20的Rom Code存储空间
 0286           ; //    返回:          unsigned char   true为有效
 0286           ; //    编写:          2004/8/25
 0286           ; ===================================================================*/
 0286           ; unsigned char Read_RomCode(unsigned char *temp)
 0286           ; {
 0286                   .dbline 188
 0286           ;       ds1820_ack();
 0286 F3DE              xcall _ds1820_ack
 0288                   .dbline 189
 0288           ;       write_byte(0x33);
 0288 03E3              ldi R16,51
 028A 34DF              xcall _write_byte
 028C                   .dbline 190
 028C           ;       temp[0] = read_byte();
 028C 0DDF              xcall _read_byte
 028E FA01              movw R30,R20
 0290 0083              std z+0,R16
 0292                   .dbline 191
 0292           ;       temp[1] = read_byte();
 0292 0ADF              xcall _read_byte
 0294 FA01              movw R30,R20
 0296 0183              std z+1,R16
 0298                   .dbline 192
 0298           ;       temp[2] = read_byte();
 0298 07DF              xcall _read_byte
 029A FA01              movw R30,R20
 029C 0283              std z+2,R16
 029E                   .dbline 193
 029E           ;       temp[3] = read_byte();
 029E 04DF              xcall _read_byte
 02A0 FA01              movw R30,R20
 02A2 0383              std z+3,R16
 02A4                   .dbline 194
 02A4           ;       temp[4] = read_byte();
 02A4 01DF              xcall _read_byte
 02A6 FA01              movw R30,R20
 02A8 0483              std z+4,R16
 02AA                   .dbline 195
 02AA           ;       temp[5] = read_byte();
 02AA FEDE              xcall _read_byte
 02AC FA01              movw R30,R20
 02AE 0583              std z+5,R16
 02B0                   .dbline 196
 02B0           ;       temp[6] = read_byte();
 02B0 FBDE              xcall _read_byte
 02B2 FA01              movw R30,R20
 02B4 0683              std z+6,R16
 02B6                   .dbline 197
 02B6           ;       temp[7] = read_byte();
 02B6 F8DE              xcall _read_byte
 02B8 FA01              movw R30,R20
 02BA 0783              std z+7,R16
 02BC                   .dbline 198
 02BC           ;       if(crccheck(temp,8))
 02BC 28E0              ldi R18,8
 02BE 8A01              movw R16,R20
 02C0 9FDE              xcall _crccheck
 02C2 0023              tst R16
 02C4 11F0              breq L51
 02C6                   .dbline 199
 02C6           ;               return  false;
 02C6 01E0              ldi R16,1
 02C8 01C0              xjmp L50
 02CA           L51:
 02CA                   .dbline 201
 02CA           ;       else
 02CA           ;               return  true;
 02CA 0027              clr R16
 02CC                   .dbline -2
 02CC           L50:
 02CC 0E940000          xcall pop_gset1
 02D0                   .dbline 0 ; func end
 02D0 0895              ret
 02D2                   .dbsym r temp 20 pc
 02D2                   .dbend
 02D2                   .dbfunc e ds1820_match _ds1820_match fV
 02D2           ;              i -> R20
 02D2           ;              p -> R22,R23
                        .even
 02D2           _ds1820_match::
 02D2 0E940000          xcall push_gset2
 02D6 B801              movw R22,R16
 02D8                   .dbline -1
 02D8                   .dbline 211
 02D8           ; }
 02D8           ; 
 02D8           ; /*===================================================================
 02D8           ; //    函数功能:      匹配DS18B20
 02D8           ; //    形参:          *p      DS18B20的Rom Code
 02D8           ; //    返回:          void
 02D8           ; //    编写:          2004/8/25
 02D8           ; ===================================================================*/
 02D8           ; void ds1820_match(unsigned char *p)
 02D8           ; {
 02D8                   .dbline 213
 02D8           ;       unsigned char i;
 02D8           ;       ds1820_ack();
 02D8 CADE              xcall _ds1820_ack
 02DA                   .dbline 214
 02DA           ;       write_byte(0x55);        
 02DA 05E5              ldi R16,85
 02DC 0BDF              xcall _write_byte
 02DE                   .dbline 215
 02DE           ;       for(i=0;i<8;i++)
 02DE 4427              clr R20
 02E0 07C0              xjmp L57
 02E2           L54:
 02E2                   .dbline 216
 02E2 E42F              mov R30,R20
 02E4 FF27              clr R31
 02E6 E60F              add R30,R22
 02E8 F71F              adc R31,R23
 02EA 0081              ldd R16,z+0
 02EC 03DF              xcall _write_byte
 02EE           L55:
 02EE                   .dbline 215
 02EE 4395              inc R20
 02F0           L57:
 02F0                   .dbline 215
 02F0 4830              cpi R20,8
 02F2 B8F3              brlo L54
 02F4                   .dbline -2
 02F4                   .dbline 217
 02F4           ;               write_byte(p[i]);
 02F4           ; }
 02F4           L53:
 02F4 0E940000          xcall pop_gset2
 02F8                   .dbline 0 ; func end
 02F8 0895              ret
 02FA                   .dbsym r i 20 c
 02FA                   .dbsym r p 22 pc
 02FA                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\MY_COMPUTER\d\avr16\atmegal16\DS18B20.C
 0000           _temperature::
 0000                   .blkb 4
 0004                   .dbsym e temperature _temperature D
                        .area lit(rom, con, rel)
 0000           L49:
 0000 00000040          .word 0x0,0x4000
 0004           L48:
 0004 0000803D          .word 0x0,0x3d80

⌨️ 快捷键说明

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