登录
首页 单片机论坛
回帖 发帖
正文

主题:关于DS18B20的程序,亲爱的朋友,帮我看看~[求助]

点击:874 回复:0

谢谢大家,我是做毕业设计,板子焊接好了,程序在
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
08-05-27 02:19

工控新闻

更多新闻资讯