|
ORG 0000H
DQ EQU P1.6
AJMP MAIN
ORG 0030H
MAIN:LCALL REST1820
MOV A,#0CCH
LCALL WRITE1820
MOV A,#44H
LCALL WRITE1820 ;奶奶的害的老子以為寫時序錯了原來 忘了加?
LCALL REST1820
LCALL DELAY1
MOV A,#0CCH
LCALL WRITE1820
MOV A,#0BEH
LCALL WRITE1820
LCALL READ1820
MOV P0,A
AJMP MAIN
REST1820:SETB DQ ;總線拉高
NOP
NOP ;給硬件反應(yīng)時間
CLR DQ ;拉低總線
LCALL DELAY1 ;延時500微秒,符合時序要求
SETB DQ ;拉高總線
NOP
NOP ;等待穩(wěn)定
JB DQ,$ ;應(yīng)答
LCALL DELAY2 ;延時200微秒 ,滿足時需要求
SETB DQ ;拉高
NOP
NOP ;結(jié)束
NOP
RET
WRITE1820: MOV R2,#8
WRITE: SETB DQ
NOP
NOP
CLR DQ ;開始延時15微秒
MOV R1,#6
DJNZ R1,$
RRC A
MOV DQ,C
MOV R1,#20
DJNZ R1,$ ;延時45微秒
NOP
NOP
NOP
NOP
DJNZ R2,WRITE
RET
READ1820:
MOV R2,#8
READ: SETB DQ
NOP
NOP
CLR DQ
NOP ;***********************************************************************************************
NOP ;* *
SETB DQ ;* 晶振: f=11.0592MHZ *
MOV R1,#4 ;* *
DJNZ R1,$ ;* 結(jié)論:只要按手冊編程,無所不能 *
MOV C,DQ ;* 單片機(jī):stc89c52rc40c-pdip40 *
RRC A ;* *
MOV R1,#20 ;* *
DJNZ R1,$ ;* 單總線溫度傳感器:達(dá)拉斯18b20 *
DJNZ R2,READ ;* *
RET ;* 接口:p1.6 *
DELAY1:MOV R1,#229 ;* *
DJNZ R1,$ ;* 電源:+5v *
RET ;* *
DELAY2:MOV R1,#100 ;* 日期:2015年五月 *
DJNZ R1,$ ;***********************************************************************************************
RET
END
|
|