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

📄 18b20.lis

📁 一个关于AVR单片机的例程
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00D0                   .dbline 72
 00D0           ;      wm0=teml>>4;       //只要高8位的低四位和低8位的高四位,温度范围0~99啦! 
 00D0 4A2D              mov R20,R10
 00D2 4295              swap R20
 00D4 4F70              andi R20,#0x0F
 00D6                   .dbline 73
 00D6           ;      wm1=temh<<4;
 00D6 6C2D              mov R22,R12
 00D8 6F70              andi R22,#0x0F
 00DA 6295              swap R22
 00DC                   .dbline 76
 00DC           ;        
 00DC           ; //count=(temh*256+teml)*6.25;  //计算具体温度          
 00DC           ; if((temh&0xF8) == 0xF8)  
 00DC 8C2D              mov R24,R12
 00DE 887F              andi R24,248
 00E0 883F              cpi R24,248
 00E2 09F0              breq X0
 00E4 65C0              xjmp L20
 00E6           X0:
 00E6                   .dbline 77
 00E6           ; { 
 00E6                   .dbline 78
 00E6           ;    flag=1; 
 00E6 81E0              ldi R24,1
 00E8 80930100          sts _flag,R24
 00EC                   .dbline 79
 00EC           ;    count=((0xFF-temh)*256+(0xFF-teml))*6.25; 
 00EC 00E0              ldi R16,<L24
 00EE 10E0              ldi R17,>L24
 00F0 0E940000          xcall lpm32
 00F4 3A93              st -y,R19
 00F6 2A93              st -y,R18
 00F8 1A93              st -y,R17
 00FA 0A93              st -y,R16
 00FC 2C2C              mov R2,R12
 00FE 3324              clr R3
 0100 2FEF              ldi R18,255
 0102 30E0              ldi R19,0
 0104 2219              sub R18,R2
 0106 3309              sbc R19,R3
 0108 00E0              ldi R16,256
 010A 11E0              ldi R17,1
 010C 0E940000          xcall empy16s
 0110 1801              movw R2,R16
 0112 4A2C              mov R4,R10
 0114 5524              clr R5
 0116 8FEF              ldi R24,255
 0118 90E0              ldi R25,0
 011A 8419              sub R24,R4
 011C 9509              sbc R25,R5
 011E 280E              add R2,R24
 0120 391E              adc R3,R25
 0122 8101              movw R16,R2
 0124 0E940000          xcall int2fp
 0128 3A93              st -y,R19
 012A 2A93              st -y,R18
 012C 1A93              st -y,R17
 012E 0A93              st -y,R16
 0130 0E940000          xcall empy32f
 0134 FE01              movw R30,R28
 0136 0083              std z+0,R16
 0138 1183              std z+1,R17
 013A 2283              std z+2,R18
 013C 3383              std z+3,R19
 013E FE01              movw R30,R28
 0140 2080              ldd R2,z+0
 0142 3180              ldd R3,z+1
 0144 4280              ldd R4,z+2
 0146 5380              ldd R5,z+3
 0148 5A92              st -y,R5
 014A 4A92              st -y,R4
 014C 3A92              st -y,R3
 014E 2A92              st -y,R2
 0150 00E0              ldi R16,<L25
 0152 10E0              ldi R17,>L25
 0154 0E940000          xcall lpm32
 0158 3A93              st -y,R19
 015A 2A93              st -y,R18
 015C 1A93              st -y,R17
 015E 0A93              st -y,R16
 0160 0E940000          xcall cmp32f
 0164 D4F0              brlt L22
 0166 FE01              movw R30,R28
 0168 2080              ldd R2,z+0
 016A 3180              ldd R3,z+1
 016C 4280              ldd R4,z+2
 016E 5380              ldd R5,z+3
 0170 5A92              st -y,R5
 0172 4A92              st -y,R4
 0174 3A92              st -y,R3
 0176 2A92              st -y,R2
 0178 00E0              ldi R16,<L25
 017A 10E0              ldi R17,>L25
 017C 0E940000          xcall lpm32
 0180 3A93              st -y,R19
 0182 2A93              st -y,R18
 0184 1A93              st -y,R17
 0186 0A93              st -y,R16
 0188 0E940000          xcall sub32f
 018C 0E940000          xcall fp2int
 0190 C801              movw R24,R16
 0192 8050              subi R24,0  ; offset = 32768
 0194 9048              sbci R25,128
 0196 7C01              movw R14,R24
 0198 08C0              xjmp L23
 019A           L22:
 019A FE01              movw R30,R28
 019C 0081              ldd R16,z+0
 019E 1181              ldd R17,z+1
 01A0 2281              ldd R18,z+2
 01A2 3381              ldd R19,z+3
 01A4 0E940000          xcall fp2int
 01A8 7801              movw R14,R16
 01AA           L23:
 01AA E0920000          sts _count,R14
 01AE                   .dbline 81
 01AE           ;    //count=((0xFF-temh)*256+(0xFF-teml))*625; 
 01AE           ; } 
 01AE 5CC0              xjmp L21
 01B0           L20:
 01B0                   .dbline 83
 01B0           ; else 
 01B0           ; {    
 01B0                   .dbline 84
 01B0           ;    flag=0; 
 01B0 2224              clr R2
 01B2 20920100          sts _flag,R2
 01B6                   .dbline 85
 01B6           ;    count=(temh*256+teml)*6.25; 
 01B6 00E0              ldi R16,<L24
 01B8 10E0              ldi R17,>L24
 01BA 0E940000          xcall lpm32
 01BE 3A93              st -y,R19
 01C0 2A93              st -y,R18
 01C2 1A93              st -y,R17
 01C4 0A93              st -y,R16
 01C6 2C2D              mov R18,R12
 01C8 3327              clr R19
 01CA 00E0              ldi R16,256
 01CC 11E0              ldi R17,1
 01CE 0E940000          xcall empy16s
 01D2 1801              movw R2,R16
 01D4 4A2C              mov R4,R10
 01D6 5524              clr R5
 01D8 240C              add R2,R4
 01DA 351C              adc R3,R5
 01DC 8101              movw R16,R2
 01DE 0E940000          xcall int2fp
 01E2 3A93              st -y,R19
 01E4 2A93              st -y,R18
 01E6 1A93              st -y,R17
 01E8 0A93              st -y,R16
 01EA 0E940000          xcall empy32f
 01EE FE01              movw R30,R28
 01F0 0083              std z+0,R16
 01F2 1183              std z+1,R17
 01F4 2283              std z+2,R18
 01F6 3383              std z+3,R19
 01F8 FE01              movw R30,R28
 01FA 2080              ldd R2,z+0
 01FC 3180              ldd R3,z+1
 01FE 4280              ldd R4,z+2
 0200 5380              ldd R5,z+3
 0202 5A92              st -y,R5
 0204 4A92              st -y,R4
 0206 3A92              st -y,R3
 0208 2A92              st -y,R2
 020A 00E0              ldi R16,<L25
 020C 10E0              ldi R17,>L25
 020E 0E940000          xcall lpm32
 0212 3A93              st -y,R19
 0214 2A93              st -y,R18
 0216 1A93              st -y,R17
 0218 0A93              st -y,R16
 021A 0E940000          xcall cmp32f
 021E D4F0              brlt L26
 0220 FE01              movw R30,R28
 0222 2080              ldd R2,z+0
 0224 3180              ldd R3,z+1
 0226 4280              ldd R4,z+2
 0228 5380              ldd R5,z+3
 022A 5A92              st -y,R5
 022C 4A92              st -y,R4
 022E 3A92              st -y,R3
 0230 2A92              st -y,R2
 0232 00E0              ldi R16,<L25
 0234 10E0              ldi R17,>L25
 0236 0E940000          xcall lpm32
 023A 3A93              st -y,R19
 023C 2A93              st -y,R18
 023E 1A93              st -y,R17
 0240 0A93              st -y,R16
 0242 0E940000          xcall sub32f
 0246 0E940000          xcall fp2int
 024A C801              movw R24,R16
 024C 8050              subi R24,0  ; offset = 32768
 024E 9048              sbci R25,128
 0250 5C01              movw R10,R24
 0252 08C0              xjmp L27
 0254           L26:
 0254 FE01              movw R30,R28
 0256 0081              ldd R16,z+0
 0258 1181              ldd R17,z+1
 025A 2281              ldd R18,z+2
 025C 3381              ldd R19,z+3
 025E 0E940000          xcall fp2int
 0262 5801              movw R10,R16
 0264           L27:
 0264 A0920000          sts _count,R10
 0268                   .dbline 87
 0268           ;    //count=(temh*256+teml)*625; //计算具体温度  
 0268           ; }
 0268           L21:
 0268                   .dbline 88
 0268           ;      wm2=wm1+wm0;        //16进制转10进制 
 0268 262E              mov R2,R22
 026A 240E              add R2,R20
 026C 422D              mov R20,R2
 026E                   .dbline 89
 026E           ;      wm3=wm2/100; 
 026E 14E6              ldi R17,100
 0270 022D              mov R16,R2
 0272 0E940000          xcall div8u
 0276 602F              mov R22,R16
 0278                   .dbline 90
 0278           ;      wmh=(wm2%100)/10;   //出口参数了!wmh是显示的高位,wml是显示的低位 
 0278 14E6              ldi R17,100
 027A 042F              mov R16,R20
 027C 0E940000          xcall mod8u
 0280 1AE0              ldi R17,10
 0282 0E940000          xcall div8u
 0286 00930300          sts _wmh,R16
 028A                   .dbline 91
 028A           ;      wml=(wm2%100)%10;
 028A 14E6              ldi R17,100
 028C 042F              mov R16,R20
 028E 0E940000          xcall mod8u
 0292 1AE0              ldi R17,10
 0294 0E940000          xcall mod8u
 0298 00930200          sts _wml,R16
 029C                   .dbline -2
 029C           L19:
 029C 2496              adiw R28,4
 029E 0E940000          xcall pop_gset5
 02A2                   .dbline 0 ; func end
 02A2 0895              ret
 02A4                   .dbsym r wm3 22 c
 02A4                   .dbsym r wm1 22 c
 02A4                   .dbsym r wm0 20 c
 02A4                   .dbsym r teml 10 c
 02A4                   .dbsym r wm2 20 c
 02A4                   .dbsym r temh 12 c
 02A4                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\administrator\桌面\教程\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           L25:
 0000 00000047          .word 0x0,0x4700
 0004           L24:
 0004 0000C840          .word 0x0,0x40c8

⌨️ 快捷键说明

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