|
Tài trợ cho PIC Vietnam |
Trao đổi ngoài luồng Các loại vi điều khiển khác, tản mạn của các anh chàng và cô nàng kỹ thuật ... |
|
Ðiều Chỉnh | Xếp Bài |
13-12-2009, 11:33 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: Oct 2009
Bài gửi: 2
: |
giao tiep voi ds18b20 (8051)
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. |
|
|