2873|4

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于DS18B20的程序问题,急请各位帮帮忙! [复制链接]

谢谢大家,我是做毕业设计,板子焊接好了,程序在1820资料中找了一下,拼在一起,但是。。。不知道哪里出了问题,显示一直是00.0
DQ接的是P3.3,显示部分是3位一体的LED,P0做段选,P2.0P2.1P2.2做位选。我的想法是按照程序说的是读出的温度是存在36H和35H中,然后我想把这个数经过一下处理,让显示出来的是‘XY.Z’的形式。就是让50H存小数,51存个位,52存十位。但是好像那个结果不是存在36和35里面导致根本怎么算都是0.请帮我看看是什么问题,非常感谢!
ORG    0010H
TEMPER_L    EQU    36H
TEMPER_H    EQU    35H
FLAG1       BIT    00H
DQ          BIT    P3.3

   AAA:LCALL GET_TEMPER
       LCALL DISPLAY
       LJMP  AAA
       NOP
GET_TEMPER:
       SETB  P3.3           
       LCALL INIT_1820
       JB    00H,S22
       RET     

   S22:LCALL DELAY1
       MOV    A,#0CCH        
       LCALL    WRITE_1820
       MOV    A,#44H        
       LCALL    WRITE_1820
       NOP
       LCALL DELAY
       LCALL DELAY
       LCALL    INIT_1820
       LCALL DELAY1
       MOV    A,#0CCH      
       LCALL    WRITE_1820
       MOV    A,#0BEH   
       LCALL WRITE_1820
       LCALL READ_18200   
       RET
  
READ_1820:
       MOV    R2,#8
RE1:
       CLR    C
       SETB    DQ
       NOP
       NOP
       CLR    DQ
       NOP
       NOP
       NOP
       SETB    DQ
       MOV    R3,#7
       DJNZ    R3,$
       MOV    C,DQ
       MOV    R3,#23
       DJNZ    R3,$
       RRC    A
       DJNZ    R2,RE1
       RET

WRITE_1820:
       MOV    R2,#8
       CLR    C
WR1:
       CLR    DQ
       MOV    R3,#6
       DJNZ    R3,$
       RRC    A
       MOV    DQ,C
       MOV    R3,#23
       DJNZ    R3,$
       SETB    DQ
       NOP
       DJNZ    R2,WR1
       SETB    DQ
       RET
READ_18200:
       MOV    R4,#2         
       MOV    R1,#36H      
RE00:
       MOV    R2,#8
RE01:
       CLR    C
       SETB    DQ
       NOP
       NOP
       CLR    DQ
       NOP
       NOP
       NOP
       SETB    DQ
       MOV    R3,#7
       DJNZ    R3,$
       MOV    C,DQ
       MOV    R3,#23
       DJNZ    R3,$
       RRC    A
       DJNZ    R2,RE01
       MOV    @R1,A
       DEC    R1
       DJNZ    R4,RE00
       RET

DISPLAY:
        MOV A,36H
        MOV B,#10
        DIV AB
        MOV 51H,A
        MOV 52H,B   
        MOV A,35H
        SWAP A
        ADD A,51H
        MOV B,#10
        DIV AB
        MOV 50H,A  
        MOV 51H,B
        MOV R2,#03H
        MOV R0,#50H
        MOV R1,#01H
START2: MOV A,R0
        CJNE A,#51H,NEXT        
        MOV DPTR,#TAB2
        SJMP NEXT1
NEXT:   MOV DPTR,#TAB1
      
NEXT1:  MOV A,@R0
        MOVC A,@A+DPTR
        MOV P0,A
        MOV A,R1
        MOV P2,A
        ACALL DL1
        INC R0
        MOV A,R1
        RL A
        MOV R1,A
        DJNZ R2,START2
        SJMP DISPLAY
TAB1:   DB

3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,

7CH   
TAB2:   DB

0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0

EFH,0F7H,0FCH   
DL1:    MOV R7,#02H
DL:     MOV R6,#0FFH
DL6:    DJNZ R6,DL6
        DJNZ R7,DL
        RET

INIT_1820:
        SETB   DQ
        NOP
        CLR    DQ
        MOV    R0,#80H
TSR1:
        DJNZ    R0,TSR1     
        SETB    DQ
        MOV    R0,#25H      
TSR2:
        DJNZ    R0,TSR2
        JNB    DQ,TSR3
        LJMP    TSR4         
TSR3:
        SETB    FLAG1   
        LJMP    TSR5
TSR4:
        CLR    FLAG1   
        LJMP    TSR7
TSR5:
        MOV    R0,#06BH     
TSR6:
        DJNZ    R0,TSR6      
TSR7:
        SETB    DQ
        RET
      
RE_CONFIG:
        JB    FLAG1,RE_CONFIG1  
        RET
RE_CONFIG1:
        MOV    A,#0CCH      
        LCALL    WRITE_1820
        MOV    A,#4EH      
        LCALL    WRITE_1820

        MOV    A,#00H      
        LCALL    WRITE_1820
        MOV    A,#00H      
        LCALL    WRITE_1820
        MOV    A,#7FH      
        LCALL    WRITE_1820
        RET
   
  DELAY:MOV   R7,#00H
    MIN:DJNZ  R7,YS500
        RET
  YS500:LCALL YS500US
        LJMP  MIN
YS500US:MOV   R6,#00H
        DJNZ  R6,$
        RET
DELAY1:MOV   R7,#20H
        DJNZ  R7,$
        RET
END

最新回复

C51 COMPILER V7.01  DS18B20                                                                05/28/2007 14:05:27 PAGE 3    ASSEMBLY LISTING OF GENERATED OBJECT CODE              ; FUNCTION ow_reset (BEGIN)                                            ; SOURCE LINE # 9                                            ; SOURCE LINE # 10                                            ; SOURCE LINE # 12 0000 C297              CLR     DQ                                            ; SOURCE LINE # 13 0002 7F1D              MOV     R7,#01DH 0004 7E00              MOV     R6,#00H 0006 120000      E     LCALL   _delay                                            ; SOURCE LINE # 14 0009 D297              SETB    DQ                                            ; SOURCE LINE # 15 000B 7F03              MOV     R7,#03H 000D 7E00              MOV     R6,#00H 000F 120000      E     LCALL   _delay                                            ; SOURCE LINE # 16 0012 A297              MOV     C,DQ 0014 E4                CLR     A 0015 33                RLC     A 0016 F500        R     MOV     presence,A                                            ; SOURCE LINE # 17 0018 7F19              MOV     R7,#019H 001A 7E00              MOV     R6,#00H 001C 120000      E     LCALL   _delay                                            ; SOURCE LINE # 18 001F AF00        R     MOV     R7,presence                                            ; SOURCE LINE # 19 0021         ?C0001: 0021 22                RET                   ; FUNCTION ow_reset (END)              ; FUNCTION read_byte (BEGIN)                                            ; SOURCE LINE # 22                                            ; SOURCE LINE # 23                                            ; SOURCE LINE # 25 0000 E4                CLR     A 0001 F500        R     MOV     value,A                                            ; SOURCE LINE # 26 0003 750008      R     MOV     i,#08H 0006         ?C0002:                                            ; SOURCE LINE # 27                                            ; SOURCE LINE # 28 0006 E500        R     MOV     A,value 0008 C3                CLR     C 0009 13                RRC     A 000A F500        R     MOV     value,A                                            ; SOURCE LINE # 29 000C C297              CLR     DQ                                            ; SOURCE LINE # 30 000E D297              SETB    DQ                                            ; SOURCE LINE # 31 0010 7F01              MOV     R7,#01H 0012 7E00              MOV     R6,#00H 0014 120000      E     LCALL   _delay                                            ; SOURCE LINE # 32 0017 309703            JNB     DQ,?C0005 001A 430080      R     ORL     value,#080H 001D         ?C0005:                                            ; SOURCE LINE # 33 C51 COMPILER V7.01  DS18B20                                                                05/28/2007 14:05:27 PAGE 4    001D 7F06              MOV     R7,#06H 001F 7E00              MOV     R6,#00H 0021 120000      E     LCALL   _delay                                            ; SOURCE LINE # 34 0024 1500        R     DEC     i 0026 E500        R     MOV     A,i 0028 D3                SETB    C 0029 9400              SUBB    A,#00H 002B 50D9              JNC     ?C0002 002D         ?C0003:                                            ; SOURCE LINE # 35 002D AF00        R     MOV     R7,value                                            ; SOURCE LINE # 36 002F         ?C0006: 002F 22                RET                   ; FUNCTION read_byte (END)              ; FUNCTION _write_byte (BEGIN)                                            ; SOURCE LINE # 39 0000 8F00        R     MOV     val,R7                                            ; SOURCE LINE # 40                                            ; SOURCE LINE # 42 0002 750008      R     MOV     i,#08H 0005         ?C0007:                                            ; SOURCE LINE # 43                                            ; SOURCE LINE # 44 0005 C297              CLR     DQ                                            ; SOURCE LINE # 45 0007 E500        R     MOV     A,val 0009 13                RRC     A 000A 9297              MOV     DQ,C                                            ; SOURCE LINE # 46 000C 7F05              MOV     R7,#05H 000E 7E00              MOV     R6,#00H 0010 120000      E     LCALL   _delay                                            ; SOURCE LINE # 47 0013 D297              SETB    DQ                                            ; SOURCE LINE # 48 0015 E500        R     MOV     A,val 0017 A2E7              MOV     C,ACC.7 0019 13                RRC     A 001A F500        R     MOV     val,A                                            ; SOURCE LINE # 49 001C 1500        R     DEC     i 001E E500        R     MOV     A,i 0020 D3                SETB    C 0021 9400              SUBB    A,#00H 0023 50E0              JNC     ?C0007 0025         ?C0008:                                            ; SOURCE LINE # 50 0025 7F05              MOV     R7,#05H 0027 7E00              MOV     R6,#00H 0029 020000      E     LJMP    _delay              ; FUNCTION _write_byte (END)              ; FUNCTION Read_Temperature (BEGIN)                                            ; SOURCE LINE # 54                                            ; SOURCE LINE # 55                                            ; SOURCE LINE # 56 0000 120000      R     LCALL   ow_reset                                            ; SOURCE LINE # 57 0003 7FCC              MOV     R7,#0CCH C51 COMPILER V7.01  DS18B20                                                                05/28/2007 14:05:27 PAGE 5    0005 120000      R     LCALL   _write_byte                                            ; SOURCE LINE # 58 0008 7F44              MOV     R7,#044H 000A 120000      R     LCALL   _write_byte                                            ; SOURCE LINE # 59 000D 7F32              MOV     R7,#032H 000F 7E00              MOV     R6,#00H 0011 120000      E     LCALL   _delay                                            ; SOURCE LINE # 60 0014 120000      R     LCALL   ow_reset                                            ; SOURCE LINE # 61 0017 7FCC              MOV     R7,#0CCH 0019 120000      R     LCALL   _write_byte                                            ; SOURCE LINE # 62 001C 7FBE              MOV     R7,#0BEH 001E 120000      R     LCALL   _write_byte                                            ; SOURCE LINE # 63 0021 120000      R     LCALL   read_byte 0024 8F00        R     MOV     TempX,R7                                            ; SOURCE LINE # 64 0026 120000      R     LCALL   read_byte 0029 8F00        R     MOV     TempF,R7                                            ; SOURCE LINE # 65 002B 22                RET                   ; FUNCTION Read_Temperature (END)              ; FUNCTION SendTemperature (BEGIN)                                            ; SOURCE LINE # 66                                            ; SOURCE LINE # 67 0000 120000      R     LCALL   Read_Temperature                                            ; SOURCE LINE # 68 0003 7F57              MOV     R7,#057H 0005 120000      E     LCALL   _WrTiBuf                                            ; SOURCE LINE # 69 0008 AF00        R     MOV     R7,TempX 000A 120000      E     LCALL   _WrTiBuf 000D AF00        R     MOV     R7,TempF 000F 020000      E     LJMP    _WrTiBuf              ; FUNCTION SendTemperature (END)复制代码  详情 回复 发表于 2008-10-5 14:42
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
没有注释的汇编打死也不看

迟早被搞死!!
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
用C吧,C简单得多。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 1 楼 lbing7 的回复:
没有注释的汇编打死也不看

迟早被搞死!!


--------------是啊
-------------------------楼主是看不懂程序还是怎么样?其实这个单总线无非是把串行的数据变成并行的数据。你毕业设计就做这个?不会吧,有点简单哦。这个东西分两字节读取,用C语言比较方便,把读出的16进制数乘以一个系数就可以得出实际温度了。我做过,以前毕业设计的Can总线的一部分。如果你不明白就发个邮箱,我发给你。
网上程序也很多啊。

===============================

如果看不懂汇编就用keil 仿真啊,单步执行就知道这个程序是怎么执行的了。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
  1. C51 COMPILER V7.01  DS18B20                                                                05/28/2007 14:05:27 PAGE 3   

  2. ASSEMBLY LISTING OF GENERATED OBJECT CODE


  3.              ; FUNCTION ow_reset (BEGIN)
  4.                                            ; SOURCE LINE # 9
  5.                                            ; SOURCE LINE # 10
  6.                                            ; SOURCE LINE # 12
  7. 0000 C297              CLR     DQ
  8.                                            ; SOURCE LINE # 13
  9. 0002 7F1D              MOV     R7,#01DH
  10. 0004 7E00              MOV     R6,#00H
  11. 0006 120000      E     LCALL   _delay
  12.                                            ; SOURCE LINE # 14
  13. 0009 D297              SETB    DQ
  14.                                            ; SOURCE LINE # 15
  15. 000B 7F03              MOV     R7,#03H
  16. 000D 7E00              MOV     R6,#00H
  17. 000F 120000      E     LCALL   _delay
  18.                                            ; SOURCE LINE # 16
  19. 0012 A297              MOV     C,DQ
  20. 0014 E4                CLR     A
  21. 0015 33                RLC     A
  22. 0016 F500        R     MOV     presence,A
  23.                                            ; SOURCE LINE # 17
  24. 0018 7F19              MOV     R7,#019H
  25. 001A 7E00              MOV     R6,#00H
  26. 001C 120000      E     LCALL   _delay
  27.                                            ; SOURCE LINE # 18
  28. 001F AF00        R     MOV     R7,presence
  29.                                            ; SOURCE LINE # 19
  30. 0021         ?C0001:
  31. 0021 22                RET     
  32.              ; FUNCTION ow_reset (END)

  33.              ; FUNCTION read_byte (BEGIN)
  34.                                            ; SOURCE LINE # 22
  35.                                            ; SOURCE LINE # 23
  36.                                            ; SOURCE LINE # 25
  37. 0000 E4                CLR     A
  38. 0001 F500        R     MOV     value,A
  39.                                            ; SOURCE LINE # 26
  40. 0003 750008      R     MOV     i,#08H
  41. 0006         ?C0002:
  42.                                            ; SOURCE LINE # 27
  43.                                            ; SOURCE LINE # 28
  44. 0006 E500        R     MOV     A,value
  45. 0008 C3                CLR     C
  46. 0009 13                RRC     A
  47. 000A F500        R     MOV     value,A
  48.                                            ; SOURCE LINE # 29
  49. 000C C297              CLR     DQ
  50.                                            ; SOURCE LINE # 30
  51. 000E D297              SETB    DQ
  52.                                            ; SOURCE LINE # 31
  53. 0010 7F01              MOV     R7,#01H
  54. 0012 7E00              MOV     R6,#00H
  55. 0014 120000      E     LCALL   _delay
  56.                                            ; SOURCE LINE # 32
  57. 0017 309703            JNB     DQ,?C0005
  58. 001A 430080      R     ORL     value,#080H
  59. 001D         ?C0005:
  60.                                            ; SOURCE LINE # 33
  61. C51 COMPILER V7.01  DS18B20                                                                05/28/2007 14:05:27 PAGE 4   

  62. 001D 7F06              MOV     R7,#06H
  63. 001F 7E00              MOV     R6,#00H
  64. 0021 120000      E     LCALL   _delay
  65.                                            ; SOURCE LINE # 34
  66. 0024 1500        R     DEC     i
  67. 0026 E500        R     MOV     A,i
  68. 0028 D3                SETB    C
  69. 0029 9400              SUBB    A,#00H
  70. 002B 50D9              JNC     ?C0002
  71. 002D         ?C0003:
  72.                                            ; SOURCE LINE # 35
  73. 002D AF00        R     MOV     R7,value
  74.                                            ; SOURCE LINE # 36
  75. 002F         ?C0006:
  76. 002F 22                RET     
  77.              ; FUNCTION read_byte (END)

  78.              ; FUNCTION _write_byte (BEGIN)
  79.                                            ; SOURCE LINE # 39
  80. 0000 8F00        R     MOV     val,R7
  81.                                            ; SOURCE LINE # 40
  82.                                            ; SOURCE LINE # 42
  83. 0002 750008      R     MOV     i,#08H
  84. 0005         ?C0007:
  85.                                            ; SOURCE LINE # 43
  86.                                            ; SOURCE LINE # 44
  87. 0005 C297              CLR     DQ
  88.                                            ; SOURCE LINE # 45
  89. 0007 E500        R     MOV     A,val
  90. 0009 13                RRC     A
  91. 000A 9297              MOV     DQ,C
  92.                                            ; SOURCE LINE # 46
  93. 000C 7F05              MOV     R7,#05H
  94. 000E 7E00              MOV     R6,#00H
  95. 0010 120000      E     LCALL   _delay
  96.                                            ; SOURCE LINE # 47
  97. 0013 D297              SETB    DQ
  98.                                            ; SOURCE LINE # 48
  99. 0015 E500        R     MOV     A,val
  100. 0017 A2E7              MOV     C,ACC.7
  101. 0019 13                RRC     A
  102. 001A F500        R     MOV     val,A
  103.                                            ; SOURCE LINE # 49
  104. 001C 1500        R     DEC     i
  105. 001E E500        R     MOV     A,i
  106. 0020 D3                SETB    C
  107. 0021 9400              SUBB    A,#00H
  108. 0023 50E0              JNC     ?C0007
  109. 0025         ?C0008:
  110.                                            ; SOURCE LINE # 50
  111. 0025 7F05              MOV     R7,#05H
  112. 0027 7E00              MOV     R6,#00H
  113. 0029 020000      E     LJMP    _delay
  114.              ; FUNCTION _write_byte (END)

  115.              ; FUNCTION Read_Temperature (BEGIN)
  116.                                            ; SOURCE LINE # 54
  117.                                            ; SOURCE LINE # 55
  118.                                            ; SOURCE LINE # 56
  119. 0000 120000      R     LCALL   ow_reset
  120.                                            ; SOURCE LINE # 57
  121. 0003 7FCC              MOV     R7,#0CCH
  122. C51 COMPILER V7.01  DS18B20                                                                05/28/2007 14:05:27 PAGE 5   

  123. 0005 120000      R     LCALL   _write_byte
  124.                                            ; SOURCE LINE # 58
  125. 0008 7F44              MOV     R7,#044H
  126. 000A 120000      R     LCALL   _write_byte
  127.                                            ; SOURCE LINE # 59
  128. 000D 7F32              MOV     R7,#032H
  129. 000F 7E00              MOV     R6,#00H
  130. 0011 120000      E     LCALL   _delay
  131.                                            ; SOURCE LINE # 60
  132. 0014 120000      R     LCALL   ow_reset
  133.                                            ; SOURCE LINE # 61
  134. 0017 7FCC              MOV     R7,#0CCH
  135. 0019 120000      R     LCALL   _write_byte
  136.                                            ; SOURCE LINE # 62
  137. 001C 7FBE              MOV     R7,#0BEH
  138. 001E 120000      R     LCALL   _write_byte
  139.                                            ; SOURCE LINE # 63
  140. 0021 120000      R     LCALL   read_byte
  141. 0024 8F00        R     MOV     TempX,R7
  142.                                            ; SOURCE LINE # 64
  143. 0026 120000      R     LCALL   read_byte
  144. 0029 8F00        R     MOV     TempF,R7
  145.                                            ; SOURCE LINE # 65
  146. 002B 22                RET     
  147.              ; FUNCTION Read_Temperature (END)

  148.              ; FUNCTION SendTemperature (BEGIN)
  149.                                            ; SOURCE LINE # 66
  150.                                            ; SOURCE LINE # 67
  151. 0000 120000      R     LCALL   Read_Temperature
  152.                                            ; SOURCE LINE # 68
  153. 0003 7F57              MOV     R7,#057H
  154. 0005 120000      E     LCALL   _WrTiBuf
  155.                                            ; SOURCE LINE # 69
  156. 0008 AF00        R     MOV     R7,TempX
  157. 000A 120000      E     LCALL   _WrTiBuf
  158. 000D AF00        R     MOV     R7,TempF
  159. 000F 020000      E     LJMP    _WrTiBuf
  160.              ; FUNCTION SendTemperature (END)
复制代码
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表