Thông báo

Collapse
No announcement yet.

Coi giùm mình chương trình đọc ds1307 này với,mình gà quá

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Coi giùm mình chương trình đọc ds1307 này với,mình gà quá

    Mình dùng 89c51 ghi váo rtc gía trị giờ phút giây.rồi đọc lại và xuất giá trị giây ra port3 để hiển thị lên led 7 đoạn thôi.MÀ KHI ĐỌC RA THÌ KHÔNG ĐÚNG VỚI THỜI GIAN THỰC.MÀ NÓ CÓ NHẢY VÀI SỐ BẬY BẠ RỒI TOÀN SỐ 0 LUÔN

    Scl bit p1.0
    sda bit p1.1
    ds_1307w equ 0d0h
    ds_1307r equ 0d1h
    giay equ 58h ;58 giay
    phut equ 58h ;58 phut
    gio equ 8h ;8 gio
    ;---------------------------------------------
    org 00h
    ljmp main
    ;--------------------------------------------
    org 30h
    main:
    Lcall start_bit ; gui bit start
    mov a,#ds_1307w ; gui dia chi ra rtc +w=0
    mov r7,#8
    lcall gui_ra_rtc ;
    lcall nhan_ack ;nhan ack tu rtc gui lai khi gui du mot byte
    ;--------ghi gia tri con tro cho ds1307-------------------------------
    mov a,#00h ; gui gia tri con tro cho ds1307
    mov r7,#8
    lcall gui_ra_rtc
    lcall nhan_ack
    ;--------ghi gia tri 8h vao thanh ghi giay -------------------------------
    mov a,#giay ;gui byte du lieu dau tien
    mov r7,# 8
    lcall gui_ra_rtc
    lcall nhan_ack
    ;--------ghi gia tri phut-------------------------------
    mov a,#phut ;gui byte du lieu tiep theo
    mov r7,#08
    lcall gui_ra_rtc
    lcall nhan_ack

    ;---------ghi gia tri gio---------------------------
    mov a,#gio ;gui byte du lieu tiep theo
    mov r7,#08
    lcall gui_ra_rtc
    lcall nhan_ack
    lcall stop_bit
    ;----******doc lai du lieu da ghi vao ds1307******
    lcall start_bit
    mov a,#ds_1307w ;dia chi rtc + w=0
    mov r7,#08
    lcall gui_ra_rtc ;
    lcall nhan_ack ;nhan ack tu rtc tra ve khi gui du mot byte
    mov a,#00h ; gia tri con tro cho ds1307
    mov r7,#8
    lcall gui_ra_rtc
    lcall nhan_ack
    lcall stop_bit
    ;------------------------------------------------
    doc_rtc: Mov r0,#20h ;ghi du lieu vao 8051 trong ram bat dau tu dia chi 20h
    lcall start_bit
    mov a,#ds_1307r ;dia chi rtc + r=1
    mov r7,#08
    lcall gui_ra_rtc ;
    lcall nhan_ack ;nhan ack tu rtc tra ve khi gui du mot byte
    mov r6,#02 ;doc 3 thanh ghi giay ,phut, gio
    next: Lcall read_rtc ; doc mot byte du lieu
    mov @r0,a ;chuyen du lieu vao dia chi ram
    inc r0
    djnz r6,doc_tiep
    sjmp stop
    doc_tiep: Lcall gui_ack ;nhan ack tu rtc khi nhan du mot byte
    sjmp next ;
    stop: Lcall no_ack ;gui no_ack khi doc xong du lieu
    lcall stop_bit ;ket thuc doc
    mov p2,20h
    mov p3,21h
    lcall delay_100ms ;
    ljmp doc_rtc

    ;-------start bit
    start_bit: Setb scl
    nop
    setb sda
    nop
    clr sda
    nop
    clr scl
    ret
    ;-------stop bit
    stop_bit:
    Clr sda
    nop
    setb scl
    nop
    setb sda
    nop
    nop
    clr scl
    ret
    ;------- nhan_ack
    nhan_ack:
    Setb sda
    nop
    setb scl ;tao xung clock nhan no
    nop
    clr scl
    ret
    ;------gui_ack
    gui_ack: Clr sda
    nop
    setb scl
    nop
    clr scl
    ret
    ; ------gui no_ack
    no_ack: Setb sda
    nop
    setb scl
    nop
    clr scl
    ret
    ;-------gui du lieu ra rtc
    gui_ra_rtc:
    Rlc a
    mov sda,c
    setb scl
    nop
    clr scl
    djnz r7,gui_ra_rtc
    ret
    ;------doc du lieu tu rtc gui ve
    read_rtc: Mov r7,#8
    read_byte: Setb scl
    nop
    mov c,sda
    clr scl
    nop
    rrc a
    djnz r7,read_byte
    ret
    ;------ hien thi len led 7 doan

    hien_thi: Mov p3,#20h
    ret
    ;------delay_100ms
    delay_100ms:
    Mov r2,#1
    loop_delay2: Mov r3,#200
    loop_delay1: Mov r4,#250
    djnz r4,$
    djnz r3,loop_delay1
    djnz r2,loop_delay2
    ret
    end

Về tác giả

Collapse

vanmau.bk Tìm hiểu thêm về vanmau.bk

Bài viết mới nhất

Collapse

Đang tải...
X