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

📄 18b20ok.lst

📁 ds18b20多个时候的分辨函数
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0408)   unsigned char k;
(0409)   k=resetDS18B20();
     21E DE4D      RCALL	_resetDS18B20
(0410)   writeuint8DS18B20(0x55);  //match common
     21F E505      LDI	R16,0x55
     220 DEBC      RCALL	_writeuint8DS18B20
(0411)   for(k=0;k<8;k++)
     221 2744      CLR	R20
     222 C013      RJMP	0x0236
(0412)     writeuint8DS18B20(rom_seq[num][k]); 
     223 EA87      LDI	R24,0xA7
     224 E090      LDI	R25,0
     225 2C2A      MOV	R2,R10
     226 2433      CLR	R3
     227 0C22      LSL	R2
     228 1C33      ROL	R3
     229 0C22      LSL	R2
     22A 1C33      ROL	R3
     22B 0C22      LSL	R2
     22C 1C33      ROL	R3
     22D 0E28      ADD	R2,R24
     22E 1E39      ADC	R3,R25
     22F 2FE4      MOV	R30,R20
     230 27FF      CLR	R31
     231 0DE2      ADD	R30,R2
     232 1DF3      ADC	R31,R3
     233 8100      LDD	R16,Z+0
     234 DEA8      RCALL	_writeuint8DS18B20
     235 9543      INC	R20
     236 3048      CPI	R20,0x8
     237 F358      BCS	0x0223
     238 9149      LD	R20,Y+
     239 90A9      LD	R10,Y+
     23A 9508      RET
_readTemp_DS18B20:
  x                    --> R10
  tempH                --> R12
  tempL                --> R10
  num                  --> R10
     23B 940E 033E CALL	push_xgset003C
     23D 2EA0      MOV	R10,R16
(0413)   
(0414) }
(0415) 
(0416) unsigned int readTemp_DS18B20(unsigned char num){
(0417)    unsigned char tempL,tempH;
(0418)    unsigned int x;
(0419)    match_rom(num);
     23E 2D0A      MOV	R16,R10
     23F DFDB      RCALL	_match_rom
(0420)    writeuint8DS18B20(0x44);     //启动温度转换
     240 E404      LDI	R16,0x44
     241 DE9B      RCALL	_writeuint8DS18B20
(0421)    delayUs(1);
     242 E001      LDI	R16,1
     243 DE13      RCALL	_delayUs
(0422)    resetDS18B20();
     244 DE27      RCALL	_resetDS18B20
(0423)    match_rom(num);
     245 2D0A      MOV	R16,R10
     246 DFD4      RCALL	_match_rom
(0424)    writeuint8DS18B20(0xbe);     //读数据
     247 EB0E      LDI	R16,0xBE
     248 DE94      RCALL	_writeuint8DS18B20
(0425)    tempL=readuint8DS18B20();
     249 DE7D      RCALL	_readuint8DS18B20
     24A 2EA0      MOV	R10,R16
(0426)    tempH=readuint8DS18B20();
     24B DE7B      RCALL	_readuint8DS18B20
     24C 2EC0      MOV	R12,R16
(0427)    x=(tempH<<8)|tempL;
     24D 2CBC      MOV	R11,R12
(0428)    return(x);
     24E 0185      MOVW	R16,R10
     24F 940C 0328 JMP	pop_xgset003C
_output:
  t                    --> R20
  number               --> R20
  temp                 --> R22
     251 940E 0343 CALL	push_xgsetF000
     253 2F42      MOV	R20,R18
     254 01B8      MOVW	R22,R16
(0429) }
(0430) 
(0431) void output(uint16 temp,unsigned char number){
(0432)      unsigned char t;
(0433)      USART_Transmit('N');
     255 E40E      LDI	R16,0x4E
     256 DEE0      RCALL	_USART_Transmit
(0434)      USART_Transmit('O');
     257 E40F      LDI	R16,0x4F
     258 DEDE      RCALL	_USART_Transmit
(0435) 	 USART_Transmit(':');
     259 E30A      LDI	R16,0x3A
     25A DEDC      RCALL	_USART_Transmit
(0436) 	 USART_Transmit(number+0x30);
     25B 2F04      MOV	R16,R20
     25C 5D00      SUBI	R16,0xD0
     25D DED9      RCALL	_USART_Transmit
(0437)      USART_Transmit('-');
     25E E20D      LDI	R16,0x2D
     25F DED7      RCALL	_USART_Transmit
(0438) 	 t=(temp&0xf0)>>4;
     260 01AB      MOVW	R20,R22
     261 7F40      ANDI	R20,0xF0
     262 7050      ANDI	R21,0
     263 9556      LSR	R21
     264 9547      ROR	R20
     265 9556      LSR	R21
     266 9547      ROR	R20
     267 9556      LSR	R21
     268 9547      ROR	R20
     269 9556      LSR	R21
     26A 9547      ROR	R20
(0439) 	 if(t>9)t='A'+t-10;
     26B E089      LDI	R24,0x9
     26C 1784      CP	R24,R20
     26D F428      BCC	0x0273
     26E 2F84      MOV	R24,R20
     26F 5B8F      SUBI	R24,0xBF
     270 508A      SUBI	R24,0xA
     271 2F48      MOV	R20,R24
     272 C001      RJMP	0x0274
(0440) 	 else t='0'+t;
     273 5D40      SUBI	R20,0xD0
(0441) 	 USART_Transmit(t);
     274 2F04      MOV	R16,R20
     275 DEC1      RCALL	_USART_Transmit
(0442) 	 t=(temp&0x0f);
     276 2F46      MOV	R20,R22
     277 704F      ANDI	R20,0xF
     278 7050      ANDI	R21,0
(0443) 	 if(t>9)t='A'+t-10;
     279 E089      LDI	R24,0x9
     27A 1784      CP	R24,R20
     27B F428      BCC	0x0281
     27C 2F84      MOV	R24,R20
     27D 5B8F      SUBI	R24,0xBF
     27E 508A      SUBI	R24,0xA
     27F 2F48      MOV	R20,R24
     280 C001      RJMP	0x0282
(0444) 	 else t='0'+t;
     281 5D40      SUBI	R20,0xD0
(0445) 	 USART_Transmit(t);
     282 2F04      MOV	R16,R20
     283 DEB3      RCALL	_USART_Transmit
(0446) 	 USART_Transmit(0x0d);
     284 E00D      LDI	R16,0xD
     285 DEB1      RCALL	_USART_Transmit
     286 940C 0348 JMP	pop_xgsetF000
_get_temp:
  temp                 --> R10
  i                    --> R12
  number               --> R20
     288 940E 035B CALL	push_xgset303C
(0447) 	 
(0448) 
(0449) 
(0450) }
(0451) void get_temp(void){
(0452) uint16 i; //读温度值的暂存变量
(0453)   unsigned char temp=0;
     28A 24AA      CLR	R10
(0454)   unsigned char number=0;
     28B 2744      CLR	R20
(0455)   i=resetDS18B20();
     28C DDDF      RCALL	_resetDS18B20
     28D 2EC0      MOV	R12,R16
     28E 24DD      CLR	R13
(0456)   for(number=0;number<maxsize;number++){
     28F C01D      RJMP	0x02AD
(0457)      i=readTemp_DS18B20(number);
     290 2F04      MOV	R16,R20
     291 DFA9      RCALL	_readTemp_DS18B20
     292 0168      MOVW	R12,R16
(0458)     if(i&(1<<3)) //判断倒数第四位是1还是0 
     293 FF03      SBRS	R16,3
     294 C006      RJMP	0x029B
(0459)     {
(0460)       temp=i>>4+1;
     295 E025      LDI	R18,5
     296 E030      LDI	R19,0
     297 940E 0372 CALL	lsr16
     299 2EA0      MOV	R10,R16
(0461)     }
     29A C009      RJMP	0x02A4
(0462)     else
(0463)     {
(0464)       temp=i>>4;
     29B 0156      MOVW	R10,R12
     29C 94B6      LSR	R11
     29D 94A7      ROR	R10
     29E 94B6      LSR	R11
     29F 94A7      ROR	R10
     2A0 94B6      LSR	R11
     2A1 94A7      ROR	R10
     2A2 94B6      LSR	R11
     2A3 94A7      ROR	R10
(0465)     }
(0466)      tep[number][0]=temp;
     2A4 E08A      LDI	R24,0xA
     2A5 9F84      MUL	R24,R20
     2A6 01F0      MOVW	R30,R0
     2A7 E680      LDI	R24,0x60
     2A8 E090      LDI	R25,0
     2A9 0FE8      ADD	R30,R24
     2AA 1FF9      ADC	R31,R25
     2AB 82A0      STD	Z+0,R10
     2AC 9543      INC	R20
     2AD 3047      CPI	R20,7
     2AE F308      BCS	0x0290
     2AF 940C 0362 JMP	pop_xgset303C
(0467)   }
(0468) 
(0469) 
(0470) }
(0471) 
(0472) 
(0473) 
(0474) void main(void)
(0475) {
(0476) 
(0477)   unsigned char temp=0;
(0478)   unsigned char number=0;
_main:
  number               --> R12
  temp                 --> R10
     2B1 24CC      CLR	R12
(0479)   port_init();
     2B2 DD9A      RCALL	_port_init
(0480)   
(0481)   USART_Init(9600); //波特率9600 初始化串口
     2B3 E800      LDI	R16,0x80
     2B4 E215      LDI	R17,0x25
     2B5 DE50      RCALL	_USART_Init
(0482)   USART_Transmit('O');
     2B6 E40F      LDI	R16,0x4F
     2B7 DE7F      RCALL	_USART_Transmit
(0483)   USART_Transmit('K');
     2B8 E40B      LDI	R16,0x4B
     2B9 DE7D      RCALL	_USART_Transmit
(0484)   temp=read_rom();
     2BA DE80      RCALL	_read_rom
     2BB 2EA0      MOV	R10,R16
(0485) 
(0486)   while(1)
FILE: <library>
     2BC CFFF      RJMP	0x02BC
     2BD 9508      RET
div32u:
     2BE 94E8      BCLR	6
     2BF C001      RJMP	0x02C1
mod32u:
     2C0 9468      BSET	6
     2C1 D030      RCALL	long_div_prolog
     2C2 24CC      CLR	R12
     2C3 C009      RJMP	0x02CD
div32s:
     2C4 94E8      BCLR	6
     2C5 C001      RJMP	0x02C7
mod32s:
     2C6 9468      BSET	6
     2C7 D02A      RCALL	long_div_prolog
     2C8 FD37      SBRC	R19,7
     2C9 940E 0369 CALL	neg32
     2CB FDB7      SBRC	R27,7
     2CC D052      RCALL	neg_R24_R27
     2CD 2477      CLR	R7
     2CE 2488      CLR	R8
     2CF 2499      CLR	R9
     2D0 24AA      CLR	R10
     2D1 24BB      CLR	R11
     2D2 D042      RCALL	tst_R16_R19
     2D3 F0C1      BEQ	0x02EC
     2D4 D045      RCALL	tst_R24_R27
     2D5 F0B1      BEQ	0x02EC
     2D6 E2E8      LDI	R30,0x28
     2D7 0F00      LSL	R16
     2D8 1F11      ROL	R17
     2D9 1F22      ROL	R18
     2DA 1F33      ROL	R19
     2DB 1C77      ROL	R7
     2DC 1C88      ROL	R8
     2DD 1C99      ROL	R9
     2DE 1CAA      ROL	R10
     2DF 1CBB      ROL	R11
     2E0 1688      CP	R8,R24
     2E1 0699      CPC	R9,R25
     2E2 06AA      CPC	R10,R26
     2E3 06BB      CPC	R11,R27
     2E4 F028      BCS	0x02EA
     2E5 1A88      SUB	R8,R24
     2E6 0A99      SBC	R9,R25
     2E7 0AAA      SBC	R10,R26
     2E8 0ABB      SBC	R11,R27
     2E9 9503      INC	R16
     2EA 95EA      DEC	R30
     2EB F759      BNE	0x02D7
     2EC F426      BRTC	0x02F1
     2ED 2D08      MOV	R16,R8
     2EE 2D19      MOV	R17,R9
     2EF 2D2A      MOV	R18,R10
     2F0 2D3B      MOV	R19,R11
     2F1 C013      RJMP	long_div_epilog
long_div_prolog:
     2F2 927A      ST	R7,-Y
     2F3 928A      ST	R8,-Y
     2F4 929A      ST	R9,-Y
     2F5 92AA      ST	R10,-Y
     2F6 92BA      ST	R11,-Y
     2F7 92CA      ST	R12,-Y
     2F8 93EA      ST	R30,-Y
     2F9 938A      ST	R24,-Y
     2FA 939A      ST	R25,-Y
     2FB 93AA      ST	R26,-Y
     2FC 93BA      ST	R27,-Y
     2FD 858B      LDD	R24,Y+11
     2FE 859C      LDD	R25,Y+12
     2FF 85AD      LDD	R26,Y+13
     300 85BE      LDD	R27,Y+14
     301 2EC3      MOV	R12,R19
     302 F00E      BRTS	0x0304
     303 26CB      EOR	R12,R27
     304 9508      RET
long_div_epilog:
     305 FCC7      SBRC	R12,7
     306 940E 0369 CALL	neg32
     308 91B9      LD	R27,Y+
     309 91A9      LD	R26,Y+
     30A 9199      LD	R25,Y+
     30B 9189      LD	R24,Y+
     30C 91E9      LD	R30,Y+
     30D 90C9      LD	R12,Y+
     30E 90B9      LD	R11,Y+
     30F 90A9      LD	R10,Y+
     310 9099      LD	R9,Y+
     311 9089      LD	R8,Y+
     312 9079      LD	R7,Y+
     313 9624      ADIW	R28,4
     314 9508      RET
tst_R16_R19:
     315 2FE0      MOV	R30,R16
     316 2BE1      OR	R30,R17
     317 2BE2      OR	R30,R18
     318 2BE3      OR	R30,R19
     319 9508      RET
tst_R24_R27:
     31A 2FE8      MOV	R30,R24
     31B 2BE9      OR	R30,R25
     31C 2BEA      OR	R30,R26
     31D 2BEB      OR	R30,R27
     31E 9508      RET
neg_R24_R27:
     31F 9580      COM	R24
     320 9590      COM	R25
     321 95A0      COM	R26
     322 95B0      COM	R27
     323 5F8F      SUBI	R24,0xFF
     324 4F9F      SBCI	R25,0xFF
     325 4FAF      SBCI	R26,0xFF
     326 4FBF      SBCI	R27,0xFF
     327 9508      RET
pop_xgset003C:
     328 90A9      LD	R10,Y+
     329 90B9      LD	R11,Y+
     32A 90C9      LD	R12,Y+
     32B 90D9      LD	R13,Y+
     32C 9508      RET
pop_xgsetF0FC:
     32D 90A9      LD	R10,Y+
     32E 90B9      LD	R11,Y+
     32F 90C9      LD	R12,Y+
     330 90D9      LD	R13,Y+
     331 90E9      LD	R14,Y+
     332 90F9      LD	R15,Y+
     333 9149      LD	R20,Y+
     334 9159      LD	R21,Y+
     335 9169      LD	R22,Y+
     336 9179      LD	R23,Y+
     337 9508      RET
push_xgsetF0FC:
     338 937A      ST	R23,-Y
     339 936A      ST	R22,-Y
push_xgset30FC:
     33A 935A      ST	R21,-Y
     33B 934A      ST	R20,-Y
push_xgset00FC:
     33C 92FA      ST	R15,-Y
     33D 92EA      ST	R14,-Y
push_xgset003C:
     33E 92DA      ST	R13,-Y
     33F 92CA      ST	R12,-Y
     340 92BA      ST	R11,-Y
     341 92AA      ST	R10,-Y
     342 9508      RET
push_xgsetF000:
     343 937A      ST	R23,-Y
     344 936A      ST	R22,-Y
     345 935A      ST	R21,-Y
     346 934A      ST	R20,-Y
     347 9508      RET
pop_xgsetF000:
     348 9149      LD	R20,Y+
     349 9159      LD	R21,Y+
     34A 9169      LD	R22,Y+
     34B 9179      LD	R23,Y+
     34C 9508      RET
push_xgsetF00C:
     34D 937A      ST	R23,-Y
     34E 936A      ST	R22,-Y
     34F 935A      ST	R21,-Y
     350 934A      ST	R20,-Y
     351 92BA      ST	R11,-Y
     352 92AA      ST	R10,-Y
     353 9508      RET
pop_xgsetF00C:
     354 90A9      LD	R10,Y+
     355 90B9      LD	R11,Y+
     356 9149      LD	R20,Y+
     357 9159      LD	R21,Y+
     358 9169      LD	R22,Y+
     359 9179      LD	R23,Y+
     35A 9508      RET
push_xgset303C:
     35B 935A      ST	R21,-Y
     35C 934A      ST	R20,-Y
     35D 92DA      ST	R13,-Y
     35E 92CA      ST	R12,-Y
     35F 92BA      ST	R11,-Y
     360 92AA      ST	R10,-Y
     361 9508      RET
pop_xgset303C:
     362 90A9      LD	R10,Y+
     363 90B9      LD	R11,Y+
     364 90C9      LD	R12,Y+
     365 90D9      LD	R13,Y+
     366 9149      LD	R20,Y+
     367 9159      LD	R21,Y+
     368 9508      RET
neg32:
     369 9500      COM	R16
     36A 9510      COM	R17
     36B 9520      COM	R18
     36C 9530      COM	R19
     36D 5F0F      SUBI	R16,0xFF
     36E 4F1F      SBCI	R17,0xFF
     36F 4F2F      SBCI	R18,0xFF
     370 4F3F      SBCI	R19,0xFF
     371 9508      RET
lsr16:
     372 2322      TST	R18
     373 F021      BEQ	0x0378
     374 9516      LSR	R17
     375 9507      ROR	R16
     376 952A      DEC	R18
     377 CFFA      RJMP	lsr16
     378 9508      RET
lsr8:
     379 2311      TST	R17
     37A F019      BEQ	0x037E
     37B 9506      LSR	R16
     37C 951A      DEC	R17
     37D CFFB      RJMP	lsr8
     37E 9508      RET

⌨️ 快捷键说明

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