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

📄 18b20.lis

📁 一个不错的DS1820的程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00A2 0A2D              mov R16,R10
 00A4                   .dbline -2
 00A4           L12:
 00A4                   .dbline 0 ; func end
 00A4 0C940000          xjmp pop_xgsetF00C
 00A8                   .dbsym r temp 10 c
 00A8                   .dbsym r k 22 c
 00A8                   .dbsym r n 20 c
 00A8                   .dbend
 00A8                   .dbfunc e gettemp _gettemp fV
 00A8           ;            wm3 -> R12
 00A8           ;            wm1 -> R10
 00A8           ;            wm0 -> R20
 00A8           ;           teml -> R12
 00A8           ;            wm2 -> R10
 00A8           ;           temh -> R22
                        .even
 00A8           _gettemp::
 00A8 0E940000          xcall push_xgsetF03C
 00AC                   .dbline -1
 00AC                   .dbline 61
 00AC           ; }   
 00AC           ; 
 00AC           ; void gettemp(void)         //读取温度值 
 00AC           ; {  
 00AC                   .dbline 63
 00AC           ;      unsigned char temh,teml,wm0,wm1,wm2,wm3;  
 00AC           ;      init_1820();        //复位18b20  
 00AC A9DF              xcall _init_1820
 00AE                   .dbline 64
 00AE           ;      write_1820(0xcc);   // 发出转换命令  
 00AE 0CEC              ldi R16,204
 00B0 BCDF              xcall _write_1820
 00B2                   .dbline 65
 00B2           ;      write_1820(0x44); 
 00B2 04E4              ldi R16,68
 00B4 BADF              xcall _write_1820
 00B6                   .dbline 67
 00B6           ;  //  delay_nms(800);     //不延时也好使,不知道怎么回事! 
 00B6           ;      init_1820();  
 00B6 A4DF              xcall _init_1820
 00B8                   .dbline 68
 00B8           ;      write_1820(0xcc);  //发出读命令  
 00B8 0CEC              ldi R16,204
 00BA B7DF              xcall _write_1820
 00BC                   .dbline 69
 00BC           ;      write_1820(0xbe);  
 00BC 0EEB              ldi R16,190
 00BE B5DF              xcall _write_1820
 00C0                   .dbline 70
 00C0           ;      teml=read_1820();  //读数据  
 00C0 D0DF              xcall _read_1820
 00C2 C02E              mov R12,R16
 00C4                   .dbline 71
 00C4           ;      temh=read_1820();  
 00C4 CEDF              xcall _read_1820
 00C6 602F              mov R22,R16
 00C8                   .dbline 72
 00C8           ;      wm0=teml>>4;       //只要高8位的低四位和低8位的高四位,温度范围0~99啦! 
 00C8 4C2D              mov R20,R12
 00CA 4295              swap R20
 00CC 4F70              andi R20,#0x0F
 00CE                   .dbline 73
 00CE           ;      wm1=temh<<4;
 00CE 862F              mov R24,R22
 00D0 8F70              andi R24,#0x0F
 00D2 8295              swap R24
 00D4 A82E              mov R10,R24
 00D6                   .dbline 76
 00D6           ;        
 00D6           ; //count=(temh*256+teml)*6.25;  //计算具体温度          
 00D6           ; if((temh&0xF8) == 0xF8)  
 00D6 862F              mov R24,R22
 00D8 887F              andi R24,248
 00DA 883F              cpi R24,248
 00DC 61F5              brne L20
 00DE           X5:
 00DE                   .dbline 77
 00DE           ; { 
 00DE                   .dbline 78
 00DE           ;    flag=1; 
 00DE 81E0              ldi R24,1
 00E0 80930100          sts _flag,R24
 00E4                   .dbline 79
 00E4           ;    count=((0xFF-temh)*256+(0xFF-teml))*6.25; 
 00E4 00E0              ldi R16,<L22
 00E6 10E0              ldi R17,>L22
 00E8 0E940000          xcall lpm32
 00EC 1801              movw R2,R16
 00EE 2901              movw R4,R18
 00F0 662E              mov R6,R22
 00F2 7724              clr R7
 00F4 2FEF              ldi R18,255
 00F6 30E0              ldi R19,0
 00F8 2619              sub R18,R6
 00FA 3709              sbc R19,R7
 00FC 00E0              ldi R16,256
 00FE 11E0              ldi R17,1
 0100 0E940000          xcall empy16s
 0104 3801              movw R6,R16
 0106 8C2C              mov R8,R12
 0108 9924              clr R9
 010A 8FEF              ldi R24,255
 010C 90E0              ldi R25,0
 010E 8819              sub R24,R8
 0110 9909              sbc R25,R9
 0112 680E              add R6,R24
 0114 791E              adc R7,R25
 0116 8301              movw R16,R6
 0118 0E940000          xcall int2fp
 011C 3A93              st -y,R19
 011E 2A93              st -y,R18
 0120 1A93              st -y,R17
 0122 0A93              st -y,R16
 0124 8101              movw R16,R2
 0126 9201              movw R18,R4
 0128 0E940000          xcall fpmule2
 012C 0E940000          xcall fpint
 0130 00930000          sts _count,R16
 0134                   .dbline 81
 0134           ;    //count=((0xFF-temh)*256+(0xFF-teml))*625; 
 0134           ; } 
 0134 23C0              xjmp L21
 0136           L20:
 0136                   .dbline 83
 0136           ; else 
 0136           ; {    
 0136                   .dbline 84
 0136           ;    flag=0; 
 0136 2224              clr R2
 0138 20920100          sts _flag,R2
 013C                   .dbline 85
 013C           ;    count=(temh*256+teml)*6.25; 
 013C 00E0              ldi R16,<L22
 013E 10E0              ldi R17,>L22
 0140 0E940000          xcall lpm32
 0144 1801              movw R2,R16
 0146 2901              movw R4,R18
 0148 262F              mov R18,R22
 014A 3327              clr R19
 014C 00E0              ldi R16,256
 014E 11E0              ldi R17,1
 0150 0E940000          xcall empy16s
 0154 3801              movw R6,R16
 0156 8C2C              mov R8,R12
 0158 9924              clr R9
 015A 680C              add R6,R8
 015C 791C              adc R7,R9
 015E 8301              movw R16,R6
 0160 0E940000          xcall int2fp
 0164 3A93              st -y,R19
 0166 2A93              st -y,R18
 0168 1A93              st -y,R17
 016A 0A93              st -y,R16
 016C 8101              movw R16,R2
 016E 9201              movw R18,R4
 0170 0E940000          xcall fpmule2
 0174 0E940000          xcall fpint
 0178 00930000          sts _count,R16
 017C                   .dbline 87
 017C           ;    //count=(temh*256+teml)*625; //计算具体温度  
 017C           ; }
 017C           L21:
 017C                   .dbline 88
 017C           ;      wm2=wm1+wm0;        //16进制转10进制 
 017C A40E              add R10,R20
 017E                   .dbline 89
 017E           ;      wm3=wm2/100; 
 017E 14E6              ldi R17,100
 0180 0A2D              mov R16,R10
 0182 0E940000          xcall div8u
 0186 C02E              mov R12,R16
 0188                   .dbline 90
 0188           ;      wmh=(wm2%100)/10;   //出口参数了!wmh是显示的高位,wml是显示的低位 
 0188 14E6              ldi R17,100
 018A 0A2D              mov R16,R10
 018C 0E940000          xcall mod8u
 0190 1AE0              ldi R17,10
 0192 0E940000          xcall div8u
 0196 00930300          sts _wmh,R16
 019A                   .dbline 91
 019A           ;      wml=(wm2%100)%10;
 019A 14E6              ldi R17,100
 019C 0A2D              mov R16,R10
 019E 0E940000          xcall mod8u
 01A2 1AE0              ldi R17,10
 01A4 0E940000          xcall mod8u
 01A8 00930200          sts _wml,R16
 01AC                   .dbline -2
 01AC           L19:
 01AC                   .dbline 0 ; func end
 01AC 0C940000          xjmp pop_xgsetF03C
 01B0                   .dbsym r wm3 12 c
 01B0                   .dbsym r wm1 10 c
 01B0                   .dbsym r wm0 20 c
 01B0                   .dbsym r teml 12 c
 01B0                   .dbsym r wm2 10 c
 01B0                   .dbsym r temh 22 c
 01B0                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\18b20.c
 0000           _count::
 0000                   .blkb 1
 0001                   .dbsym e count _count c
 0001           _flag::
 0001                   .blkb 1
 0002                   .dbsym e flag _flag c
 0002           _wml::
 0002                   .blkb 1
 0003                   .dbsym e wml _wml c
 0003           _wmh::
 0003                   .blkb 1
 0004                   .dbsym e wmh _wmh c
                        .area lit(rom, con, rel)
 0000           L22:
 0000 0000C840          .word 0x0,0x40c8
 0004           ;        
 0004           ;         
 0004           ; }

⌨️ 快捷键说明

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