![]() |
#2
小xiong2014-03-31 07:26
|

SDA EQU P3.7
LED EQU P0
WEIX EQU P2
WEIS EQU 35H
WEND EQU 36H
ORG 0000H
LJMP MAIN
ORG 0050H
TAB: DB 0fch,060h,0dah,0f2h,066h,0b6h,0beh,0e0h,0feh,0f6h,0EEH,03EH,09CH,07AH,09EH,08EH
;-------延时-----------
DELAY60:;80
MOV R7,#50
DJNZ R7,$
RET
DELAY600:
MOV R6,#10
DLS:
MOV R7,#30
DJNZ R7,$
DJNZ R6,DLS
RET
DELAY:;等待转换完成
MOV R5,#10
DELS1:
MOV R6,#200
DELS:
MOV R7,#250
DJNZ R7,$
DJNZ R6,DELS
LCALL XSWD
DJNZ R5,DELS1
RET
;-----初始化-------
CSH:
SETB SDA
LCALL DELAY60
CLR SDA
LCALL DELAY600
SETB SDA
LCALL DELAY60
JB SDA,$
JNB SDA,$
RET
;------写入字节-------
XZJ:
MOV WEIS,#08H
XZJS:
CLR SDA
RR A
MOV C,ACC.7
MOV SDA,C
LCALL DELAY60
SETB SDA
DJNZ WEIS,XZJS
RET
;-------读出字节--------
DZJ:
MOV WEIS,#08H
DZJS:
CLR SDA
RR A
SETB SDA
MOV C,SDA
MOV ACC.7,C
LCALL DELAY60
DJNZ WEIS,DZJS
RET
;--------检测温度------------
JCWD:
MOV A,#0CCH
LCALL XZJ
MOV A,#044H
LCALL XZJ
RET
;---------读取温度-----------
DQWD:
MOV A,#0CCH
LCALL XZJ
MOV A,#0BEH
LCALL XZJ
LCALL DZJ
MOV R0,#WEND
MOV @R0,A
LCALL DZJ
XCHD A,@R0
MOV A,@R0
SWAP A
;DA A
MOV @R0,A
RET
;---------显示温度-----------
XSWD:
MOV DPTR,#TAB
MOV A,WEND
ANL A,#0FH
MOVC A,@A+DPTR
MOV WEIX,#00H
MOV LED,A
LCALL DELAY600
MOV A,WEND
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV WEIX,#01H
MOV LED,A
RET
;---------主函数----------
MAIN:
MOV SP,#3FH
LOOP:
LCALL JCWD
LCALL DELAY
LCALL DQWD
LJMP LOOP
END
LED EQU P0
WEIX EQU P2
WEIS EQU 35H
WEND EQU 36H
ORG 0000H
LJMP MAIN
ORG 0050H
TAB: DB 0fch,060h,0dah,0f2h,066h,0b6h,0beh,0e0h,0feh,0f6h,0EEH,03EH,09CH,07AH,09EH,08EH
;-------延时-----------
DELAY60:;80
MOV R7,#50
DJNZ R7,$
RET
DELAY600:
MOV R6,#10
DLS:
MOV R7,#30
DJNZ R7,$
DJNZ R6,DLS
RET
DELAY:;等待转换完成
MOV R5,#10
DELS1:
MOV R6,#200
DELS:
MOV R7,#250
DJNZ R7,$
DJNZ R6,DELS
LCALL XSWD
DJNZ R5,DELS1
RET
;-----初始化-------
CSH:
SETB SDA
LCALL DELAY60
CLR SDA
LCALL DELAY600
SETB SDA
LCALL DELAY60
JB SDA,$
JNB SDA,$
RET
;------写入字节-------
XZJ:
MOV WEIS,#08H
XZJS:
CLR SDA
RR A
MOV C,ACC.7
MOV SDA,C
LCALL DELAY60
SETB SDA
DJNZ WEIS,XZJS
RET
;-------读出字节--------
DZJ:
MOV WEIS,#08H
DZJS:
CLR SDA
RR A
SETB SDA
MOV C,SDA
MOV ACC.7,C
LCALL DELAY60
DJNZ WEIS,DZJS
RET
;--------检测温度------------
JCWD:
MOV A,#0CCH
LCALL XZJ
MOV A,#044H
LCALL XZJ
RET
;---------读取温度-----------
DQWD:
MOV A,#0CCH
LCALL XZJ
MOV A,#0BEH
LCALL XZJ
LCALL DZJ
MOV R0,#WEND
MOV @R0,A
LCALL DZJ
XCHD A,@R0
MOV A,@R0
SWAP A
;DA A
MOV @R0,A
RET
;---------显示温度-----------
XSWD:
MOV DPTR,#TAB
MOV A,WEND
ANL A,#0FH
MOVC A,@A+DPTR
MOV WEIX,#00H
MOV LED,A
LCALL DELAY600
MOV A,WEND
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV WEIX,#01H
MOV LED,A
RET
;---------主函数----------
MAIN:
MOV SP,#3FH
LOOP:
LCALL JCWD
LCALL DELAY
LCALL DQWD
LJMP LOOP
END