quanPro
13-12-2009, 11:33 AM
call reset_ds1820
jb p3.2,$ ; waitting ds1820 ready!
MOV p2,#'D'
LCALL write_data
MOV p2,#'S'
LCALL write_data
MOV p2,#'1'
LCALL write_data
MOV p2,#'8'
LCALL write_data
MOV p2,#'2'
LCALL write_data
MOV p2,#'0'
LCALL write_data
MOV p2,#' '
LCALL write_data
MOV p2,#'R'
LCALL write_data
MOV p2,#'E'
LCALL write_data
MOV p2,#'A'
LCALL write_data
MOV p2,#'D'
LCALL write_data
MOV p2,#'Y'
LCALL write_data
call delay1s
call delay1s
call reset_ds1820
jb p3.2,$ ; waitting ds1820 ready!
mov p2,#01h
call write_fc
MOV p2,#'N'
LCALL write_data
MOV p2,#'h'
LCALL write_data
MOV p2,#'i'
LCALL write_data
MOV p2,#'e'
LCALL write_data
MOV p2,#'t'
LCALL write_data
MOV p2,#' '
LCALL write_data
MOV p2,#'d'
LCALL write_data
MOV p2,#'o'
LCALL write_data
MOV p2,#' '
LCALL write_data
MOV p2,#'l'
LCALL write_data
MOV p2,#'a'
LCALL write_data
MOV p2,#':'
LCALL write_data
;_________________________________________________ ____-
return:
;;;;;;;;;;;;;;;;;;;;;;;command skip ROM
; push acc
mov a,#0CCh ;skip ROM
call write_byte ; write command
; pop acc
;;;;;;;;;;;;;;;;;;;;;;convert
; push acc
mov a,#044h ;convert
call write_byte ; write command
; pop acc
call reset_ds1820
jb p3.2,$ ; waitting ds1820 ready!
call delay1s
;;;;;;;;;;;;;;;;;;;;;;;command skip ROM
; push acc
mov a,#0CCh ;skip ROM
call write_byte ; write command
; pop acc
;;;;;;;;;;;;;;;;;;;;;;scrap read
; push acc
mov a,#0BEh ;read scrap
call write_byte ; write command
; pop acc
;;;;;;;;;;;;;;;;;;;;;;read temp_read 0
; push acc
call read_byte ; read byte
mov temp_read,a
; pop acc
;;;;;;;;;;;;;;reset
call reset_ds1820
jb p3.2,$ ; waitting ds1820 ready!
; call delay1s
;----------------------------------------;
;; display temperature;;;;;;;;;;;;;;;;;;;;
;----------------------------------------;
call check_temp ; tinh nhiet do va luu vao RAM
call dec_bcd ;chuyen DEC sang BCD
call display_temperature ;xuat nhiet do len LCD
jmp return
;_________________________________________________ _________________
check_temp:
mov a,temp_read
mov b,#2
div ab
mov temperature,a
mov extra,b
ret
dec_bcd:
mov a,temperature
mov b,#10
div ab
mov number3,b
mov b,#10
div ab
mov number2,b
mov number1,a
ret
display_temperature:
call init_lcd
call clear_lcd
mov a,#0d4h
call write_fc
mov a,number1 ;display number 1
cjne a,#0,ml0
jmp ml1
ml0:
add a,#30h
mov p2,a
call write_data
ml1:
mov a,number2 ;display number 2
add a,#30h
mov p2,a
call write_data
mov a,number3 ;display number 3
add a,#30h
mov p2,a
call write_data
nhayqua2: mov a,#'.'
mov p2,a
call write_data
mov a,extra
cjne a,#1,end1
mov p2,#35h
ll: call write_data
mov p2,#0dfh
call write_data
mov p2,#'C'
call write_data
ret
end1:
mov p2,#30h
jmp ll
reset_ds1820:
clr c
mov p3.2,c
call delay120us
call delay120us
call delay120us
call delay120us
call delay120us
setb c
mov p3.2,c
call delay60us
ret
write_0:
clr c
mov p3.2,c ;clear p3.2
call delay60us
setb p3.2 ;set p3.2
call delay5us
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
write_1:
clr c
mov p3.2,c ;clear p3.2
call delay5us
setb p3.2 ;set p3.2
call delay60us
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;
write_byte:
mov r0,#8
looop1: rrc a
jc bit_1
call write_0
looop: setb p3.2
djnz r0,looop1
ret
bit_1: call write_1
jmp looop
read_bit:
clr p3.2
nop
nop
setb p3.2
nop
nop
nop
nop
nop
nop
nop
nop
mov c,p3.2
call delay120us
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;
read_byte:
mov r0,#8
next: call read_bit
rrc a
setb p3.2
djnz r0,next
ret
__________________________________________________ ________
LCD da xuat ra duoc dong chu"DS1820 READY " va'nhiet do la:' ok theo y minh roi.tuy nhien nhiet do hien ra la 00.0 do C.hinh nhu chua doc duoc con ds ve.mong may ban help jup (xem ki jup minh phan read_byte va write_byte vi minh so phan dap ung xung ko dung cho con ds ).thanks.
jb p3.2,$ ; waitting ds1820 ready!
MOV p2,#'D'
LCALL write_data
MOV p2,#'S'
LCALL write_data
MOV p2,#'1'
LCALL write_data
MOV p2,#'8'
LCALL write_data
MOV p2,#'2'
LCALL write_data
MOV p2,#'0'
LCALL write_data
MOV p2,#' '
LCALL write_data
MOV p2,#'R'
LCALL write_data
MOV p2,#'E'
LCALL write_data
MOV p2,#'A'
LCALL write_data
MOV p2,#'D'
LCALL write_data
MOV p2,#'Y'
LCALL write_data
call delay1s
call delay1s
call reset_ds1820
jb p3.2,$ ; waitting ds1820 ready!
mov p2,#01h
call write_fc
MOV p2,#'N'
LCALL write_data
MOV p2,#'h'
LCALL write_data
MOV p2,#'i'
LCALL write_data
MOV p2,#'e'
LCALL write_data
MOV p2,#'t'
LCALL write_data
MOV p2,#' '
LCALL write_data
MOV p2,#'d'
LCALL write_data
MOV p2,#'o'
LCALL write_data
MOV p2,#' '
LCALL write_data
MOV p2,#'l'
LCALL write_data
MOV p2,#'a'
LCALL write_data
MOV p2,#':'
LCALL write_data
;_________________________________________________ ____-
return:
;;;;;;;;;;;;;;;;;;;;;;;command skip ROM
; push acc
mov a,#0CCh ;skip ROM
call write_byte ; write command
; pop acc
;;;;;;;;;;;;;;;;;;;;;;convert
; push acc
mov a,#044h ;convert
call write_byte ; write command
; pop acc
call reset_ds1820
jb p3.2,$ ; waitting ds1820 ready!
call delay1s
;;;;;;;;;;;;;;;;;;;;;;;command skip ROM
; push acc
mov a,#0CCh ;skip ROM
call write_byte ; write command
; pop acc
;;;;;;;;;;;;;;;;;;;;;;scrap read
; push acc
mov a,#0BEh ;read scrap
call write_byte ; write command
; pop acc
;;;;;;;;;;;;;;;;;;;;;;read temp_read 0
; push acc
call read_byte ; read byte
mov temp_read,a
; pop acc
;;;;;;;;;;;;;;reset
call reset_ds1820
jb p3.2,$ ; waitting ds1820 ready!
; call delay1s
;----------------------------------------;
;; display temperature;;;;;;;;;;;;;;;;;;;;
;----------------------------------------;
call check_temp ; tinh nhiet do va luu vao RAM
call dec_bcd ;chuyen DEC sang BCD
call display_temperature ;xuat nhiet do len LCD
jmp return
;_________________________________________________ _________________
check_temp:
mov a,temp_read
mov b,#2
div ab
mov temperature,a
mov extra,b
ret
dec_bcd:
mov a,temperature
mov b,#10
div ab
mov number3,b
mov b,#10
div ab
mov number2,b
mov number1,a
ret
display_temperature:
call init_lcd
call clear_lcd
mov a,#0d4h
call write_fc
mov a,number1 ;display number 1
cjne a,#0,ml0
jmp ml1
ml0:
add a,#30h
mov p2,a
call write_data
ml1:
mov a,number2 ;display number 2
add a,#30h
mov p2,a
call write_data
mov a,number3 ;display number 3
add a,#30h
mov p2,a
call write_data
nhayqua2: mov a,#'.'
mov p2,a
call write_data
mov a,extra
cjne a,#1,end1
mov p2,#35h
ll: call write_data
mov p2,#0dfh
call write_data
mov p2,#'C'
call write_data
ret
end1:
mov p2,#30h
jmp ll
reset_ds1820:
clr c
mov p3.2,c
call delay120us
call delay120us
call delay120us
call delay120us
call delay120us
setb c
mov p3.2,c
call delay60us
ret
write_0:
clr c
mov p3.2,c ;clear p3.2
call delay60us
setb p3.2 ;set p3.2
call delay5us
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
write_1:
clr c
mov p3.2,c ;clear p3.2
call delay5us
setb p3.2 ;set p3.2
call delay60us
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;
write_byte:
mov r0,#8
looop1: rrc a
jc bit_1
call write_0
looop: setb p3.2
djnz r0,looop1
ret
bit_1: call write_1
jmp looop
read_bit:
clr p3.2
nop
nop
setb p3.2
nop
nop
nop
nop
nop
nop
nop
nop
mov c,p3.2
call delay120us
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;
read_byte:
mov r0,#8
next: call read_bit
rrc a
setb p3.2
djnz r0,next
ret
__________________________________________________ ________
LCD da xuat ra duoc dong chu"DS1820 READY " va'nhiet do la:' ok theo y minh roi.tuy nhien nhiet do hien ra la 00.0 do C.hinh nhu chua doc duoc con ds ve.mong may ban help jup (xem ki jup minh phan read_byte va write_byte vi minh so phan dap ung xung ko dung cho con ds ).thanks.