📄 wsd.ls1
字号:
0009 C3 448 CLR C
000A ED 449 MOV A,R5
000B 9F 450 SUBB A,R7
000C EC 451 MOV A,R4
000D 9E 452 SUBB A,R6
000E 5007 453 JNC ?C0004
0010 0D 454 INC R5
A51 MACRO ASSEMBLER WSD 10/19/2004 21:04:51 PAGE 8
0011 BD0001 455 CJNE R5,#00H,?C0097
0014 0C 456 INC R4
0015 457 ?C0097:
0015 80F2 458 SJMP ?C0001
459 ; }
460 ; SOURCE LINE # 61
0017 461 ?C0004:
0017 22 462 RET
463 ; END OF _delay1
464
465 ; //****************************/
466 ; void d595(uchar temp)
467
---- 468 RSEG ?PR?_d595?WSD
0000 469 _d595:
470 USING 0
471 ; SOURCE LINE # 63
472 ;---- Variable 'temp?142' assigned to Register 'R7' ----
473 ; {
474 ; SOURCE LINE # 64
475 ; uchar j;
476 ; for (j=0;j<8;j++)
477 ; SOURCE LINE # 66
478 ;---- Variable 'j?143' assigned to Register 'R6' ----
0000 E4 479 CLR A
0001 FE 480 MOV R6,A
0002 481 ?C0005:
482 ; {
483 ; SOURCE LINE # 67
484 ; temp=temp>>1;
485 ; SOURCE LINE # 68
0002 EF 486 MOV A,R7
0003 C3 487 CLR C
0004 13 488 RRC A
0005 FF 489 MOV R7,A
490 ; SER=CY;
491 ; SOURCE LINE # 69
0006 92A5 492 MOV SER,C
493 ; SRCLK=1; SRCLK=0;
494 ; SOURCE LINE # 70
0008 D2A7 495 SETB SRCLK
000A C2A7 496 CLR SRCLK
497 ; }
498 ; SOURCE LINE # 71
000C 0E 499 INC R6
000D BE08F2 500 CJNE R6,#08H,?C0005
0010 501 ?C0006:
502 ; RCLK1=0; RCLK1=1;
503 ; SOURCE LINE # 72
0010 C2A6 504 CLR RCLK1
0012 D2A6 505 SETB RCLK1
506 ; }
507 ; SOURCE LINE # 73
0014 22 508 RET
509 ; END OF _d595
510
511 ; /*-------------------------------*/
512 ; uint cjtemp(void)
513
---- 514 RSEG ?PR?cjtemp?WSD
0000 515 cjtemp:
516 USING 0
517 ; SOURCE LINE # 75
518 ; {uint z;
519 ; SOURCE LINE # 76
520 ; #pragma asm
A51 MACRO ASSEMBLER WSD 10/19/2004 21:04:51 PAGE 9
521 ; GET_TEMP:
0000 522 GET_TEMP:
523 ; //CLR EA ;使用ds1820一定要禁止任何中断产生
524
525 ; ACALL INT ;调用初使化子程序
0000 1100 F 526 ACALL INT ;调用初使化子程序
527 ; MOV A,#0CCH
0002 74CC 528 MOV A,#0CCH
529 ; ACALL WRITE ;送入跳过ROM命令
0004 1100 F 530 ACALL WRITE ;送入跳过ROM命令
531 ; MOV A, #44H
0006 7444 532 MOV A, #44H
533 ; ACALL WRITE ;送入温度转换命令
0008 1100 F 534 ACALL WRITE ;送入温度转换命令
535 ; ACALL INT ;温度转换完全,再次初使化ds1820
000A 1100 F 536 ACALL INT ;温度转换完全,再次初使化ds1820
537 ; MOV A,#0CCH
000C 74CC 538 MOV A,#0CCH
539 ; ACALL WRITE ;送入跳过ROM命令
000E 1100 F 540 ACALL WRITE ;送入跳过ROM命令
541 ; MOV A,#0BEH
0010 74BE 542 MOV A,#0BEH
543 ; ACALL WRITE ;送入读温度暂存器命令
0012 1100 F 544 ACALL WRITE ;送入读温度暂存器命令
545 ; ACALL READ
0014 1100 F 546 ACALL READ
547 ; mov r7,a ;读出温度值低字节存入R7
0016 FF 548 mov r7,a ;读出温度值低字节存入R7
549 ; ACALL READ
0017 1100 F 550 ACALL READ
551 ; ;lr ACC.7
552 ;lr ACC.7
553 ; mov r6,a ;读出谩度值高字节存入R6
0019 FE 554 mov r6,a ;读出谩度值高字节存入R6
555 ; SETB EA
001A D2AF 556 SETB EA
557 ; RET
001C 22 558 RET
559 ; INT:
001D 560 INT:
561 ; CLR EA ;初始化ds1820子程序
001D C2AF 562 CLR EA ;初始化ds1820子程序
563 ; L0:CLR ds1820 ;ds1820总线为低复位电平87460452
001F C2A0 564 L0:CLR ds1820 ;ds1820总线为低复位电平87460452
565 ; MOV R2,#200
0021 7AC8 566 MOV R2,#200
567 ; L1:CLR ds1820
0023 C2A0 568 L1:CLR ds1820
569 ; DJNZ R2,L1 ;总线复位电平保持400us
0025 DAFC 570 DJNZ R2,L1 ;总线复位电平保持400us
571 ; SETB ds1820 ;释放ds1820总线
0027 D2A0 572 SETB ds1820 ;释放ds1820总线
573 ; MOV R2,#30
0029 7A1E 574 MOV R2,#30
575 ; L4:DJNZ R2,L4 ;释放ds1820总线保持60us
002B DAFE 576 L4:DJNZ R2,L4 ;释放ds1820总线保持60us
577 ; CLR C ;清存在信号(存在C=0,不存在C=1)
002D C3 578 CLR C ;清存在信号(存在C=0,不存在C=1)
579 ; ORL C,ds1820
002E 72A0 580 ORL C,ds1820
581 ; ;JC L0
582 ;JC L0
583 ; MOV R6,#80
0030 7E50 584 MOV R6,#80
585 ; L5:ORL C,ds1820
0032 72A0 586 L5:ORL C,ds1820
A51 MACRO ASSEMBLER WSD 10/19/2004 21:04:51 PAGE 10
587 ; JC L3
0034 4002 588 JC L3
589 ; DJNZ R6,L5
0036 DEFA 590 DJNZ R6,L5
591 ; ;AJMP L0
592 ;AJMP L0
593 ; L3:MOV R2,#240
0038 7AF0 594 L3:MOV R2,#240
595 ; L2:DJNZ R2,L2
003A DAFE 596 L2:DJNZ R2,L2
597 ; SETB EA
003C D2AF 598 SETB EA
599 ; RET
003E 22 600 RET
601 ; WRITE: ;向ds1820写操作命令子程序
003F 602 WRITE: ;向ds1820写操作命令子程序
603 ; CLR EA
003F C2AF 604 CLR EA
605 ; MOV R3,#8 ;写入ds1820的bit数,一个字节8个bit
0041 7B08 606 MOV R3,#8 ;写入ds1820的bit数,一个字节8个bit
607 ; WR1:SETB ds1820
0043 D2A0 608 WR1:SETB ds1820
609 ; MOV R4,#8
0045 7C08 610 MOV R4,#8
611 ; RRC A ;把一个字节data(A)分成8个bit环移给 C
0047 13 612 RRC A ;把一个字节data(A)分成8个bit环移给 C
613 ; CLR ds1820 ;开始写入ds1820总线要处于复位(低)状态
0048 C2A0 614 CLR ds1820 ;开始写入ds1820总线要处于复位(低)状态
615 ; WR2:DJNZ R4,WR2 ;ds1820总线复位保持16us
004A DCFE 616 WR2:DJNZ R4,WR2 ;ds1820总线复位保持16us
617 ; MOV ds1820,C ;写入一个bit
004C 92A0 618 MOV ds1820,C ;写入一个bit
619 ; MOV R4,#20
004E 7C14 620 MOV R4,#20
621 ; WR3:DJNZ R4,WR3 ;等待40us
0050 DCFE 622 WR3:DJNZ R4,WR3 ;等待40us
623 ; DJNZ R3,WR1 ;写入下一个bit
0052 DBEF 624 DJNZ R3,WR1 ;写入下一个bit
625 ; SETB ds1820 ;重新释放ds1820总线
0054 D2A0 626 SETB ds1820 ;重新释放ds1820总线
627 ; SETB EA
0056 D2AF 628 SETB EA
629 ; RET
0058 22 630 RET
631 ; READ:
0059 632 READ:
633 ; CLR EA
0059 C2AF 634 CLR EA
635 ; MOV R6,#8 ;连续读8个bit
005B 7E08 636 MOV R6,#8 ;连续读8个bit
637 ; RE1:CLR ds1820 ;读前总线保持为低
005D C2A0 638 RE1:CLR ds1820 ;读前总线保持为低
639 ; MOV R4,#4
005F 7C04 640 MOV R4,#4
641 ; NOP
0061 00 642 NOP
643 ; SETB ds1820 ;开始读,总线释放
0062 D2A0 644 SETB ds1820 ;开始读,总线释放
645 ; RE2:DJNZ R4,RE2 ;持续8us
0064 DCFE 646 RE2:DJNZ R4,RE2 ;持续8us
647 ; MOV C,ds1820 ;从ds1820总线读得一个bit
0066 A2A0 648 MOV C,ds1820 ;从ds1820总线读得一个bit
649 ; RRC A ;把读得的位值环移给 A
0068 13 650 RRC A ;把读得的位值环移给 A
651 ; MOV R5,#30
0069 7D1E 652 MOV R5,#30
A51 MACRO ASSEMBLER WSD 10/19/2004 21:04:51 PAGE 11
653 ; RE3:DJNZ R5,RE3 ;持续60us
006B DDFE 654 RE3:DJNZ R5,RE3 ;持续60us
655 ; DJNZ R6,RE1 ;读下一个bit
006D DEEE 656 DJNZ R6,RE1 ;读下一个bit
657 ; SETB ds1820 ;重新释放ds1820总线
006F D2A0 658 SETB ds1820 ;重新释放ds1820总线
659 ; SETB EA
0071 D2AF 660 SETB EA
661 ; RET
0073 22 662 RET
663 ; #pragma endasm
664 ;
665 ; return z;
666 ; SOURCE LINE # 151
0074 AE00 F 667 MOV R6,z?244
0076 AF00 F 668 MOV R7,z?244+01H
669 ; }
670 ; SOURCE LINE # 152
0078 671 ?C0009:
0078 22 672 RET
673 ; END OF cjtemp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -