发表于:2005-06-30 17:15:00
楼主
GETWD: CALL INIT
MOV A,#0CCH
LCALL WRITE ;;;;发跳过ROM命令
MOV A,#44H
LCALL WRITE ;;;;发启动转换命令
CALL CYS
DDZH: MOV C,DAT
MOV WFEED1,#0A5H
MOV WFEED2,#05AH
JNC DDZH
LCALL INIT
MOV A,#0CCH
LCALL WRITE
MOV A,#0BEH
LCALL WRITE
LCALL READ
MOV WDLSB,A ;;;温度值低位字节送WDLSB
LCALL READ
MOV WDHSB,A ;;温度值高位字节送WDMSB
LCALL INIT
CALL CY100C16
RET
INIT: CLR EA
INI10: SETB DAT
MOV R2,#200
MOV R3,#04
INI11: CLR DAT
DJNZ R2,INI11 ;;;;主机发复位脉冲
MOV R2,#200
DJNZ R3,INI11
MOV R3,#04
SETB DAT ;;;;主机释放总线
MOV R2,#120
INI12: DJNZ R2,INI12
CLR C
MOV C,DAT
JC INI10
MOV R6,#80
MOV R7,#04
INI13: MOV C,DAT
JC INI14
DJNZ R6,INI13
MOV R6,#80
DJNZ R7,INI13
SJMP INI10
INI14: MOV R2,#240
MOV R3,#04
INI15: DJNZ R2,INI15
MOV R2,#240
DJNZ R3,INI15
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITE: CLR EA
MOV R3,#8
WR11: SETB DAT
MOV R4,#10;8
RRC A
CLR DAT
WR12: DJNZ R4,WR12
MOV DAT,C
MOV R4,#120
WR13: DJNZ R4,WR13
DJNZ R3,WR11
SETB DAT
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READ: CLR EA
MOV R6,#8
RD11: CLR DAT
MOV R4,#10;4
NOP
NOP
NOP
SETB DAT
RD12: DJNZ R4,RD12
MOV C,DAT
RRC A
MOV R5,#120;30
RD13: DJNZ R5,RD13
DJNZ R6,RD11
SETB DAT
RET
CYS: 根据转换精度确定延时时间