Code
Code
**********************************************************************;c
huong trinh cho ds18b20
ORG 0000H
JMP MAIN
ORG 0003H
JMP TANG_NGUONG
ORG 0013H
JMP GIAM_NGUONG
TANG_NGUONG:
INC 50H
MOV A,50H
LCALL TACH
LCALL HIENTHINGUONG
RETI
GIAM_NGUONG:
MOV A,50H
SUBB A,#1
MOV 50H,A
LCALL TACH
LCALL HIENTHINGUONG
RETI
ORG 0030H
main:
MOV IE,#85H
SETB IT0
SETB IT1
LCALL CANHBAO
lcall readnhietdo
jmp main
;**************************************************************
HIENTHINGUONG:
MOV R5,#20
LAP:
LCALL HIENTHI
DJNZ R5,LAP
RET
CANHBAO:
MOV A,50H
CJNE A,46H,CANHBAO1
CANHBAO1:
JC TATDEN
SETB P3.1
RET
TATDEN:
CLR P3.1
RET
;***************************************************************
HIENTHI:
MOV P2,#0
MOV A,#0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
SETB P2.0
LCALL DELAY
CLR P2.0
MOV A,33h
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
SETB P2.1
LCALL DELAY
CLR P2.1
MOV A,34h
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
SETB P2.2
LCALL DELAY
CLR P2.2
MOV A,35h
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
SETB P2.3
LCALL DELAY
ret
DELAY:
MOV R7,#25
LOOP:
MOV R6,#250
DJNZ R6,$
DJNZ R7,LOOP
RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
;*************************************************************
write_time_slot:
clr p3.0
nop
nop
mov p3.0,c
mov r5,#30
call delayne
setb p3.0
nop
nop
ret
read_time_slot:
clr p3.0
nop
nop
setb p3.0
nop
nop
nop
nop
nop
nop
nop
nop
mov c,p3.0
mov r5,#50
call delayne
ret
reset_ds1820:
clr p3.0
mov r5,#255
call delayne
setb p3.0
mov r5,#255
call delayne
ret
write_byte:
mov r7,#8
write_lai:
rrc a
call write_time_slot
djnz r7,write_lai
setb p3.0
mov r5,#50
call delayne
ret
read_byte:
mov r7,#8
readlai1:
call read_time_slot
rrc a
djnz r7,readlai1
mov 30h,a
mov r7,#8
readlai2:
call read_time_slot
rrc a
djnz r7,readlai2
mov 31h,a
mov r5,#50
call delayne
ret
delayne:
djnz r5,$
ret
readnhietdo:
setb p3.0
readnhietdo1:
call reset_ds1820
mov a,#0cch
call write_byte
mov a,#044h
call write_byte
call reset_ds1820
mov a,#0cch
call write_byte
mov a,#0beh
call write_byte
call read_byte
mov a,30h ;BYTE THAP
mov a,31h ;BYTE CAO
call chuyendoi
call hienthi
call reset_ds1820
ret
chuyendoi:
mov a,31h
swap a
mov 44h,a
mov a,30h
swap a
mov 45h,a
mov a,44h
mov r0,#45h
xchd a,@r0
mov 46h,a
mov a,46h
tach:
mov b,#10
div ab
mov 35h,b
mov b,#10
div ab
mov 33h,a
mov 34h,b
ret
;*****************************************************************
EXIT:
NOP
END