📄 ds18b20.lst
字号:
0078 C4 342 swap a;
0079 F5F0 343 mov b,a;//
007B ED 344 mov a,r5;
007C 54F0 345 anl a,#0f0h;
007E C4 346 swap a;
007F 45F0 347 orl a,b;
0081 FE 348 mov r6,a;//存整数部分
0082 ED 349 mov a,r5;
0083 540F 350 anl a,#0fh;
0085 C4 351 swap a;
0086 FF 352 mov r7,a;//存小数部分
0087 22 353 ret
354 ;==========================================================================================
===
355 ;CRC校验
356 ;函数原型:bit tcrc(unsigned char data *buf,unsigned char len)
357 ;入口:数据首址在R7;字节数在R5中
358 ;出口:cy=1数据正确;ACC=0数据不正确,需重新读取数据
359 ;==========================================================================================
===
360 ?PR?_tcrc?DS18B20 SEGMENT CODE
361 PUBLIC _tcrc
362
---- 363 RSEG ?PR?_tcrc?DS18B20
364
365
0000 366 _tcrc: ;字节计数单元赋初值
0000 7A00 367 mov r2,#0; 移位寄存器清零
0002 EF 368 mov a,r7;
0003 F8 369 mov r0,a;
0004 E6 370 tcrc2: mov a,@r0;
0005 FB 371 mov r3,a;
0006 7E08 372 mov r6,#8;移位次数单元赋初值
0008 6A 373 tcrc3: xrl a,r2;
0009 5401 374 anl a,#01h;
000B FC 375 mov r4,a;
000C EA 376 mov a,r2;
000D C3 377 clr c;
000E 13 378 rrc a;
000F BC0102 379 cjne r4,#1,tcrc4;结果为1进行异或操作
0012 648C 380 xrl a,#8ch;
0014 FA 381 tcrc4: mov r2,a;
0015 EB 382 mov a,r3;
0016 13 383 rrc a;
0017 FB 384 mov r3,a;
A51 MACRO ASSEMBLER DS18B20 04/23/2007 23:23:06 PAGE 7
0018 DEEE 385 djnz r6,tcrc3;
001A 08 386 inc r0;
001B DDE7 387 djnz r5,tcrc2;
001D EA 388 mov a,r2;
001E D3 389 setb c;
001F 6001 390 jz tcrc5;
0021 C3 391 clr c;
0022 22 392 tcrc5: ret
393 ;==========================================================================================
===
394 ;单字节BCD码转换为单字节HEX
395 ;入口:ACC
396 ;出口:ACC
397 ;==========================================================================================
===
0023 75F00A 398 bcdh: mov b,#10;
0026 84 399 div ab;
0027 ACF0 400 mov r4,b;
0029 75F00A 401 mov b,#10;
002C A4 402 mul ab;
002D 2C 403 add a,r4;
002E 22 404 ret;
405 ;==========================================================================================
==
406 ;延时子程序
407 ;===========延时值的计算=================
408 ; mov r5,#x1; //2MC
409 ;loop: mov r6,#x2;//2MC
410 ; djnz r6,$; //2/3MC
411 ; djnz r5,loop;//2/3MC
412 ; ret //2
413 ;time = x1(2/3*x2+2+2/3)/24.5;
414 ;========================================
415 ;;延时大于480u
002F 416 delay_500uS: ;延时大于480uS
002F 7D02 417 mov r5,#2;
0031 7E82 418 d500_1: mov r6,#130;
0033 DEFE 419 djnz r6,$;
0035 DDFA 420 djnz r5,d500_1;
0037 22 421 ret
422
0038 423 delay_90uS:
0038 7D02 424 MOV R5,#2;
003A 7E14 425 d90_1: mov r6,#20;
003C DEFE 426 DJNZ R6,$;
427 ; jnb DQ,i_rett;
003E DDFA 428 djnz R5,d90_1;
429 ; ajmp i_rett1
430 ;i_rett:nop
431 ; clr DQ1;
432 ;i_rett1:
0040 22 433 ret
434
0041 435 delay_400uS:
0041 7D02 436 mov r5,#2;
0043 7E64 437 d400_1: mov r6,#100;
0045 DEFE 438 djnz r6,$;
0047 DDFA 439 djnz r5,d400_1;
0049 22 440 ret
441
442 end
A51 MACRO ASSEMBLER DS18B20 04/23/2007 23:23:06 PAGE 8
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?PR?RESET_DS18B20?DS18B20 C SEG 006AH REL=UNIT
?PR?TEMP_CONVER?DS18B20 . C SEG 000EH REL=UNIT
?PR?_HEXTOBCD?DS18B20 . . C SEG 0088H REL=UNIT
?PR?_READ_ROM?DS18B20 . . C SEG 0017H REL=UNIT
?PR?_READ_SCRAT?DS18B20 . C SEG 001CH REL=UNIT
?PR?_TCRC?DS18B20 . . . . C SEG 004AH REL=UNIT
?PR?_WRITE_SCRAT?DS18B20. C SEG 0019H REL=UNIT
ACC . . . . . . . . . . . D ADDR 00E0H A
B . . . . . . . . . . . . D ADDR 00F0H A
BCDH. . . . . . . . . . . C ADDR 0023H R SEG=?PR?_TCRC?DS18B20
C_NEXT. . . . . . . . . . C ADDR 0066H R SEG=?PR?RESET_DS18B20?DS18B20
C_NEXT1 . . . . . . . . . C ADDR 0067H R SEG=?PR?RESET_DS18B20?DS18B20
D400_1. . . . . . . . . . C ADDR 0043H R SEG=?PR?_TCRC?DS18B20
D500_1. . . . . . . . . . C ADDR 0031H R SEG=?PR?_TCRC?DS18B20
D90_1 . . . . . . . . . . C ADDR 003AH R SEG=?PR?_TCRC?DS18B20
DATA_APART. . . . . . . . C ADDR 0075H R SEG=?PR?_HEXTOBCD?DS18B20
DELAY_400US . . . . . . . C ADDR 0041H R SEG=?PR?_TCRC?DS18B20
DELAY_500US . . . . . . . C ADDR 002FH R SEG=?PR?_TCRC?DS18B20
DELAY_90US. . . . . . . . C ADDR 0038H R SEG=?PR?_TCRC?DS18B20
DQ. . . . . . . . . . . . B ADDR 00B0H.5 A
DQ_SELECT_RESPONSES1. . . C ADDR 005BH R SEG=?PR?RESET_DS18B20?DS18B20
DS18B20 . . . . . . . . . N NUMB -----
EA. . . . . . . . . . . . B ADDR 00A8H.7 A
F0. . . . . . . . . . . . B ADDR 00D0H.5 A
HBCD. . . . . . . . . . . C ADDR 0017H R SEG=?PR?_HEXTOBCD?DS18B20
HBCD_1. . . . . . . . . . C ADDR 003BH R SEG=?PR?_HEXTOBCD?DS18B20
HBCD_2. . . . . . . . . . C ADDR 0043H R SEG=?PR?_HEXTOBCD?DS18B20
HBCD_3. . . . . . . . . . C ADDR 004DH R SEG=?PR?_HEXTOBCD?DS18B20
HBCD_4. . . . . . . . . . C ADDR 0059H R SEG=?PR?_HEXTOBCD?DS18B20
I_RET . . . . . . . . . . C ADDR 0013H R SEG=?PR?RESET_DS18B20?DS18B20
J_RET . . . . . . . . . . C ADDR 0016H R SEG=?PR?RESET_DS18B20?DS18B20
NEG . . . . . . . . . . . C ADDR 0063H R SEG=?PR?_HEXTOBCD?DS18B20
NEG_RET . . . . . . . . . C ADDR 0074H R SEG=?PR?_HEXTOBCD?DS18B20
P0. . . . . . . . . . . . D ADDR 0080H A
P3. . . . . . . . . . . . D ADDR 00B0H A
PSW . . . . . . . . . . . D ADDR 00D0H A
READ. . . . . . . . . . . C ADDR 000CH R SEG=?PR?_READ_ROM?DS18B20
READ_BYTE . . . . . . . . C ADDR 003BH R SEG=?PR?RESET_DS18B20?DS18B20
READ_LOOP . . . . . . . . C ADDR 0040H R SEG=?PR?RESET_DS18B20?DS18B20
RESET_DS18B20 . . . . . . C ADDR 0000H R SEG=?PR?RESET_DS18B20?DS18B20
R_SCRAT_LOOP. . . . . . . C ADDR 0011H R SEG=?PR?_READ_SCRAT?DS18B20
TCRC2 . . . . . . . . . . C ADDR 0004H R SEG=?PR?_TCRC?DS18B20
TCRC3 . . . . . . . . . . C ADDR 0008H R SEG=?PR?_TCRC?DS18B20
TCRC4 . . . . . . . . . . C ADDR 0014H R SEG=?PR?_TCRC?DS18B20
TCRC5 . . . . . . . . . . C ADDR 0022H R SEG=?PR?_TCRC?DS18B20
TEMP_CONVER . . . . . . . C ADDR 0000H R SEG=?PR?TEMP_CONVER?DS18B20
WRITE1. . . . . . . . . . C ADDR 002CH R SEG=?PR?RESET_DS18B20?DS18B20
WRITE_BYTE. . . . . . . . C ADDR 0019H R SEG=?PR?RESET_DS18B20?DS18B20
W_LOOP1 . . . . . . . . . C ADDR 001EH R SEG=?PR?RESET_DS18B20?DS18B20
W_LOOP2 . . . . . . . . . C ADDR 0034H R SEG=?PR?RESET_DS18B20?DS18B20
W_SCRAT_LOOP. . . . . . . C ADDR 0011H R SEG=?PR?_WRITE_SCRAT?DS18B20
_HEXTOBCD . . . . . . . . C ADDR 0000H R SEG=?PR?_HEXTOBCD?DS18B20
_READ_ROM . . . . . . . . C ADDR 0000H R SEG=?PR?_READ_ROM?DS18B20
_READ_SCRAT . . . . . . . C ADDR 0000H R SEG=?PR?_READ_SCRAT?DS18B20
_TCRC . . . . . . . . . . C ADDR 0000H R SEG=?PR?_TCRC?DS18B20
_WRITE_SCRAT. . . . . . . C ADDR 0000H R SEG=?PR?_WRITE_SCRAT?DS18B20
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -