📄 18b20.lis
字号:
00AE ;
00AE ; if((temh&0xF8) == 0xF8)
00AE 8E2D mov R24,R14
00B0 887F andi R24,248
00B2 883F cpi R24,248
00B4 09F0 breq X0
00B6 63C0 xjmp L20
00B8 X0:
00B8 .dbline 75
00B8 ; {
00B8 .dbline 76
00B8 ; flag=1;
00B8 81E0 ldi R24,1
00BA 80930000 sts _flag,R24
00BE .dbline 77
00BE ; count=((0xFF-temh)*256+(0xFF-teml))*6.25;
00BE 00E0 ldi R16,<L24
00C0 10E0 ldi R17,>L24
00C2 0E940000 xcall lpm32
00C6 3A93 st -y,R19
00C8 2A93 st -y,R18
00CA 1A93 st -y,R17
00CC 0A93 st -y,R16
00CE 2E2C mov R2,R14
00D0 3324 clr R3
00D2 2FEF ldi R18,255
00D4 30E0 ldi R19,0
00D6 2219 sub R18,R2
00D8 3309 sbc R19,R3
00DA 00E0 ldi R16,256
00DC 11E0 ldi R17,1
00DE 0E940000 xcall empy16s
00E2 1801 movw R2,R16
00E4 4C2C mov R4,R12
00E6 5524 clr R5
00E8 8FEF ldi R24,255
00EA 90E0 ldi R25,0
00EC 8419 sub R24,R4
00EE 9509 sbc R25,R5
00F0 280E add R2,R24
00F2 391E adc R3,R25
00F4 8101 movw R16,R2
00F6 0E940000 xcall int2fp
00FA 3A93 st -y,R19
00FC 2A93 st -y,R18
00FE 1A93 st -y,R17
0100 0A93 st -y,R16
0102 0E940000 xcall empy32f
0106 FE01 movw R30,R28
0108 0083 std z+0,R16
010A 1183 std z+1,R17
010C 2283 std z+2,R18
010E 3383 std z+3,R19
0110 FE01 movw R30,R28
0112 2080 ldd R2,z+0
0114 3180 ldd R3,z+1
0116 4280 ldd R4,z+2
0118 5380 ldd R5,z+3
011A 5A92 st -y,R5
011C 4A92 st -y,R4
011E 3A92 st -y,R3
0120 2A92 st -y,R2
0122 00E0 ldi R16,<L25
0124 10E0 ldi R17,>L25
0126 0E940000 xcall lpm32
012A 3A93 st -y,R19
012C 2A93 st -y,R18
012E 1A93 st -y,R17
0130 0A93 st -y,R16
0132 0E940000 xcall cmp32f
0136 D4F0 brlt L22
0138 FE01 movw R30,R28
013A 2080 ldd R2,z+0
013C 3180 ldd R3,z+1
013E 4280 ldd R4,z+2
0140 5380 ldd R5,z+3
0142 5A92 st -y,R5
0144 4A92 st -y,R4
0146 3A92 st -y,R3
0148 2A92 st -y,R2
014A 00E0 ldi R16,<L25
014C 10E0 ldi R17,>L25
014E 0E940000 xcall lpm32
0152 3A93 st -y,R19
0154 2A93 st -y,R18
0156 1A93 st -y,R17
0158 0A93 st -y,R16
015A 0E940000 xcall sub32f
015E 0E940000 xcall fp2int
0162 C801 movw R24,R16
0164 8050 subi R24,0 ; offset = 32768
0166 9048 sbci R25,128
0168 5C01 movw R10,R24
016A 08C0 xjmp L23
016C L22:
016C FE01 movw R30,R28
016E 0081 ldd R16,z+0
0170 1181 ldd R17,z+1
0172 2281 ldd R18,z+2
0174 3381 ldd R19,z+3
0176 0E940000 xcall fp2int
017A 5801 movw R10,R16
017C L23:
017C .dbline 79
017C ;
017C ; }
017C 5BC0 xjmp L21
017E L20:
017E .dbline 81
017E ; else
017E ; {
017E .dbline 82
017E ; flag=0;
017E 2224 clr R2
0180 20920000 sts _flag,R2
0184 .dbline 83
0184 ; count=(temh*256+teml)*6.25; //计算具体温度
0184 00E0 ldi R16,<L24
0186 10E0 ldi R17,>L24
0188 0E940000 xcall lpm32
018C 3A93 st -y,R19
018E 2A93 st -y,R18
0190 1A93 st -y,R17
0192 0A93 st -y,R16
0194 2E2D mov R18,R14
0196 3327 clr R19
0198 00E0 ldi R16,256
019A 11E0 ldi R17,1
019C 0E940000 xcall empy16s
01A0 1801 movw R2,R16
01A2 4C2C mov R4,R12
01A4 5524 clr R5
01A6 240C add R2,R4
01A8 351C adc R3,R5
01AA 8101 movw R16,R2
01AC 0E940000 xcall int2fp
01B0 3A93 st -y,R19
01B2 2A93 st -y,R18
01B4 1A93 st -y,R17
01B6 0A93 st -y,R16
01B8 0E940000 xcall empy32f
01BC FE01 movw R30,R28
01BE 0083 std z+0,R16
01C0 1183 std z+1,R17
01C2 2283 std z+2,R18
01C4 3383 std z+3,R19
01C6 FE01 movw R30,R28
01C8 2080 ldd R2,z+0
01CA 3180 ldd R3,z+1
01CC 4280 ldd R4,z+2
01CE 5380 ldd R5,z+3
01D0 5A92 st -y,R5
01D2 4A92 st -y,R4
01D4 3A92 st -y,R3
01D6 2A92 st -y,R2
01D8 00E0 ldi R16,<L25
01DA 10E0 ldi R17,>L25
01DC 0E940000 xcall lpm32
01E0 3A93 st -y,R19
01E2 2A93 st -y,R18
01E4 1A93 st -y,R17
01E6 0A93 st -y,R16
01E8 0E940000 xcall cmp32f
01EC D4F0 brlt L26
01EE FE01 movw R30,R28
01F0 2080 ldd R2,z+0
01F2 3180 ldd R3,z+1
01F4 4280 ldd R4,z+2
01F6 5380 ldd R5,z+3
01F8 5A92 st -y,R5
01FA 4A92 st -y,R4
01FC 3A92 st -y,R3
01FE 2A92 st -y,R2
0200 00E0 ldi R16,<L25
0202 10E0 ldi R17,>L25
0204 0E940000 xcall lpm32
0208 3A93 st -y,R19
020A 2A93 st -y,R18
020C 1A93 st -y,R17
020E 0A93 st -y,R16
0210 0E940000 xcall sub32f
0214 0E940000 xcall fp2int
0218 C801 movw R24,R16
021A 8050 subi R24,0 ; offset = 32768
021C 9048 sbci R25,128
021E 6C01 movw R12,R24
0220 08C0 xjmp L27
0222 L26:
0222 FE01 movw R30,R28
0224 0081 ldd R16,z+0
0226 1181 ldd R17,z+1
0228 2281 ldd R18,z+2
022A 3381 ldd R19,z+3
022C 0E940000 xcall fp2int
0230 6801 movw R12,R16
0232 L27:
0232 AC2C mov R10,R12
0234 .dbline 84
0234 ; }
0234 L21:
0234 .dbline 85
0234 ; wm2=wm1+wm0; //16进制转10进制
0234 C42E mov R12,R20
0236 C60E add R12,R22
0238 .dbline 86
0238 ; wm3=wm2/100;
0238 14E6 ldi R17,100
023A 0C2D mov R16,R12
023C 0E940000 xcall div8u
0240 E02E mov R14,R16
0242 .dbline 87
0242 ; wmh=(wm2%100)/10; //出口参数了!wmh是显示的高位,wml是显示的低位
0242 14E6 ldi R17,100
0244 0C2D mov R16,R12
0246 0E940000 xcall mod8u
024A 1AE0 ldi R17,10
024C 0E940000 xcall div8u
0250 00930200 sts _wmh,R16
0254 .dbline 88
0254 ; wml=(wm2%100)%10;
0254 14E6 ldi R17,100
0256 0C2D mov R16,R12
0258 0E940000 xcall mod8u
025C 1AE0 ldi R17,10
025E 0E940000 xcall mod8u
0262 00930100 sts _wml,R16
0266 .dbline 89
0266 ; return(count);
0266 0A2D mov R16,R10
0268 .dbline -2
0268 L19:
0268 2496 adiw R28,4
026A 0E940000 xcall pop_gset5
026E .dbline 0 ; func end
026E 0895 ret
0270 .dbsym r wm3 14 c
0270 .dbsym r wm1 20 c
0270 .dbsym r wm0 22 c
0270 .dbsym r teml 12 c
0270 .dbsym r count 10 c
0270 .dbsym r temh 14 c
0270 .dbsym r wm2 12 c
0270 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\USING07-07\18B20未完成\18B20\18b20.c
0000 _flag::
0000 .blkb 1
0001 .dbsym e flag _flag c
0001 _wml::
0001 .blkb 1
0002 .dbsym e wml _wml c
0002 _wmh::
0002 .blkb 1
0003 .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 + -