Thông báo

Collapse
No announcement yet.

Kết nối 89c51 tới ic 1302 đếm thời gian

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

  • Kết nối 89c51 tới ic 1302 đếm thời gian

    Em đang dùng con ic DS1307 để đêm thời gian cho led nó sinh động. Bác nào đã từng làm rồi nói giúp cho em rõ thêm đôi chút về con 1302 với. Các cách nạp thời gian cho nó với đọc thời gian ra. Em đọc datasheet rồi nhưng vẫn còn mù mờ lắm lắm...Please help me!!
    Last edited by a2ofu; 13-10-2009, 16:27.


  • #2
    Làm sao để chuyển dữ liệu 8bit vào con 89c51 trong khi chỉ có 1 đường để truyền dữ liệu SDA...dùng ngôn ngữ asm để viết..help me!

    Comment


    • #3
      bạn thử tìm hiểu đoạn ct sau:

      ;dong ho LCD CO RTC DUNG 2051 ;P1 NOI LCD
      ;P3.2 CHINH GIAY
      ;P3.3 CHINH PHUT
      ;p3.0 scl
      ;p3.1 sda
      ;p1 giao tiep LCD
      ;RS P3.7
      ;RW P3.5
      ;E P3.4
      ;R0 con tro doc bit truyen len SDA
      ;R1 con tro hang chuc
      ;R2 con tro hang don vi
      ;R3 con tro ***DONG HO SO***
      ;R4 con tro chinh phut
      ;R5 con tro chinh gio
      INCLUDE 89c2051.mc
      GIAY BIT P3.2
      sda BIT p3.1
      scl BIT p3.0
      RS BIT P3.7
      RW BIT P3.5
      E BIT P3.4

      o r g 0 0h
      MOV A,#38H ;LCD 2 dong ,matran 5x7
      ACALL COMMAND ;xuat lenh
      MOV A,#0EH ;HIEN THI LCD VA CON TRO
      ACALL COMMAND ;xuat lenh
      MOV A,#01H ;xoa LCD
      ACALL COMMAND ;xuat lenh
      MOV A,#80H ;HIEN THI DAU DONG 2
      ACALL COMMAND ;xuat lenh
      MOV R3,#0
      MOV A,R3 ;R3 con tro ***DONG HO SO***
      laph: MOV DPTR,#asciikitu
      MOVC A,@a+dptr
      ACALL DATA-DISPLAY
      INC R3
      MOV A,R3
      CJNE A,#16,laph
      ;;;;;;;;;;; hien thiu 2 dau < : > o hang 2
      MOV A,#c6h
      ACALL COMMAND
      MOV A,#":"
      ACALL DATA-DISPLAY
      MOV A,#c9h
      ACALL COMMAND
      MOV A,#":"
      ACALL DATA-DISPLAY
      ; ACALL DELAY1
      SJMP rtc ; CHAY RTC
      asciikitu:
      DB "***DONG HO SO***"

      COMMAND:
      ACALL DELAY; LCD san sang chua
      MOV P1,A
      CLR rs
      CLR rw
      SETB E
      CLR E
      RET
      DATA-DISPLAY:
      ACALL DELAY
      MOV P1,A
      SETB rs
      CLR rw
      SETB E
      CLR E
      CLR RS
      RET
      DELAY:
      SETB P1.7
      CLR rs
      SETB rw
      BACK:CLR E
      SETB E
      JB P1.7,BACK
      RET

      rtc: ;ACALL ghi ;cau hinh cho rtc
      ;MOV A, #00h
      ;ACALL guibyte
      ;MOV A, #00h
      ;ACALL guibyte
      ;ACALL STOP
      ACALL ghi
      MOV A, #07h
      ACALL guibyte
      MOV A, #10h
      ACALL guibyte
      ACALL STOP

      main: ACALL ghi
      MOV A, #00h
      ACALL guibyte
      ACALL STOP
      ACALL doc
      ACALL nhanbyte
      ACALL STOP
      ACALL dechex
      ACALL hienthiGIAY
      ;;;;;;;;;;;;;;;;;;;;;;;;; CHUONG TRINH PHUT
      phut: ACALL ghi
      MOV A, #01h
      ACALL guibyte
      ACALL STOP
      ACALL doc
      ACALL nhanbyte
      ACALL STOP

      MOV R4,A
      JB P3.2 , NHAYphut
      ACALL delay1
      JNB P3.2,$
      ACALL delay1
      ACALL ghi
      MOV A, #01h
      ACALL guibyte
      TANGPHUT: CJNE R4,#09h,phut2
      MOV R4,#0fh
      phut2: CJNE R4,#19h,phut3
      MOV R4,#1fh
      phut3: CJNE R4,#29h,phut4
      MOV R4,#2fh
      phut4: CJNE R4,#39h,phut5
      MOV R4,#3fh
      phut5: CJNE R4,#49h,phut6
      MOV R4,#4fh
      phut6: CJNE R4,#59h,phut1
      MOV R4,#ffh
      phut1: INC R4
      MOV A,R4
      ACALL guibyte
      ACALL STOP
      ;JNB P3.2,$
      ; ACALL delay1

      SJMP phut
      NHAYphut: ACALL dechex

      MOV A,#0C7H ;dich co tro sang phai
      ACALL COMMAND ;dua con tro ve dong 1 lenh 6
      ACALL hienthi
      ;;;;;;;;;;;;;;;;;;;;;;; CHUONG TRINH GIO
      GIO: ACALL ghi
      MOV A, #02h
      ACALL guibyte
      ACALL STOP
      ACALL doc
      ACALL nhanbyte
      ACALL STOP
      MOV R5,A
      JB P3.3 , NHAYGIO
      ACALL delay1
      JNB P3.3,$
      ACALL delay1
      ACALL ghi
      MOV A, #02h
      ACALL guibyte
      CJNE R5,#09h,bt1
      MOV R5,#0fh
      bt1: CJNE R5,#19h,bt2
      MOV R5,#1fh
      bt2: CJNE R5,#23h,bt3
      MOV R5,#ffh
      bt3: INC R5
      MOV A,R5
      ACALL guibyte
      ACALL STOP
      SJMP GIO
      NHAYGIO: ACALL dechex
      ;ACALL hienthiGIO
      MOV A,#0C4H
      ACALL COMMAND
      ACALL hienthi

      JMP main ;quay tro lai quet giay


      hienthiGIAY: MOV A,#0CaH ;dich co tro sang phai
      ACALL COMMAND ;dua con tro ve dong 1 lenh 6
      hienthi: MOV A,#0cH ;dich co tro sang phai
      ACALL COMMAND ;dua con tro ve dong 1 lenh 6
      MOV A,R1 ;hien thi chu L
      MOV DPTR,#ascii
      MOVC A,@a+dptr
      ACALL DATA-DISPLAY
      MOV A,R2 ;hien thi chu L
      MOV DPTR,#ascii
      MOVC A,@a+dptr
      ACALL DATA-DISPLAY
      RET
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;
      ghi: MOV A, #0d0h
      ACALL start ; start condition
      ACALL guibyte
      RET
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;

      doc: MOV A, #0d1h;
      ACALL start ; start condition
      ACALL guibyte
      RET
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;
      guibyte: MOV R0, #8 ; bo dem so lan lap
      nbits:
      RLC A ; dua bit vao CY, D7 truoc tien
      MOV sda,C ; dua gia tri co CY ra chan SDA
      NOP
      NOP
      NOP
      SETB scl
      NOP
      NOP
      NOP
      NOP
      CLR scl
      DJNZ R0,nbits
      NOP
      SETB sda
      ACALL getack ; get acknowledge -
      RET ;doi cho bo thu gui tin hieu phan hoi
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      nhanbyte: MOV R0 , #8 ;
      nbitr: SETB scl ;
      NOP
      NOP
      NOP
      MOV C,sda ; daten into carry
      RLC A ; carry into accu
      CLR scl ;
      NOP
      DJNZ R0,nbitr ; next bit
      SETB sda ; data = 1
      NOP
      NOP
      NOP
      NOP
      ACALL givack ; goi tinuhieu ack di de bao la nhan xong roi
      ret
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;
      nhanbytecuoi: MOV R0,#8 ; nhan den byte cuoi cung thi phai
      nbitr2: SETB scl ; gui tin hieu NO ack truoc khi stop
      NOP
      MOV C,sda ;
      RLC A
      CLR scl ;
      DJNZ R0,nbitr2 ;
      NOP
      SETB sda ; data = 1
      ACALL givnoack ; gui tin hieu NOack di de bao la nhan xong roi
      ret
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;
      start:
      SETB sda
      NOP
      NOP
      NOP
      NOP
      SETB scl
      CLR sda
      NOP
      NOP
      NOP
      NOP
      CLR scl
      RET
      stop:
      CLR sda
      SETB scl
      NOP
      NOP
      NOP
      NOP
      SETB sda
      NOP
      NOP
      NOP
      NOP
      CLR scl
      CLR sda
      RET
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;
      getack: NOP
      SETB scl
      ackbit: MOV C,sda ;
      JC ackbit ; SDA = 0 ; thoat
      CLR scl
      RET
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;
      givack: SETB scl
      NOP
      NOP
      NOP
      NOP
      CLR scl
      RET
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;
      givnoack: SETB sda ; Gui di tin hieu noack cho bo phat nhan biet
      NOP ; Tao muc HIGH o duong SDA
      NOP
      NOP
      SETB scl
      NOP
      NOP
      NOP
      NOP
      CLR scl
      RET
      ;DELAY2: MOV 60H,#250;0 ;200
      ; MOV 61H,#250;0
      ; MOV 62H,#100;00 ;10
      ; LAPa: DJNZ 60H,$
      ; MOV 60H,#250;0 ;200
      ; DJNZ 61H,LAPa
      ; LAPb: MOV 61H,#250;0
      ; DJNZ 61H,$

      ; DJNZ 62H,LAPb
      ; RET
      DELAY1: MOV 62H,#250 ;250
      MOV 63H,#250 ;250
      LAP2: DJNZ 62H,$
      MOV 62H,#250 ;250
      DJNZ 63H,LAP2
      ; JNB P3.2,$
      RET
      dechex: MOV B,#16 ;Decimal to Hexadecimal conversion
      DIV ab
      MOV R2,B
      MOV R1,A
      RET
      ascii: DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h
      END

      Comment


      • #4
        @minhcpl:
        Bạn làm chương trình gì mà mình đọc hoa cả mắt..và cũng không đủ trình độ để hiểu hết chương trình của bạn. Ở đây mình chỉ thắc mắc vài vấn đề nhỏ như con thỏ thôi.

        Vì con ic ds1307 có 3 chân là SCL,SDA và SQW/OUT là nối vào 89c51 và chỉ có chân SDA là xuất dữ liệu. Ở đây mình nối SCL,SDA và SQW/OUT vào các chân P1.6,P1.5 và P1.7 của 89c51. Việc ghi dữ liệu vào ds 1307 và xuất ra đều là dữ liệu nối tiếp. Mình lại không hiểu ghi vào hay xuất ra như thế nào cả. Như ở bên 89c51 có 2 chan Rxt và RXD là truyền dữ liệu nối tiếp. Còn các chân P1.5,P1.6,P1.7 thì mình lại không biết truyền như thế nào..Mong bạn nói ngắn gọn dễ hiểu tí..Mình chỉ cẩn hiểu nguyên tắc cơ bản cái đã..Thank

        Comment


        • #5
          Nhân tiện hỏi luôn: vấn đề thay đổi thời gian thì con 1307 này tự xử lý hay là mình phải đi lập trình thay đổi thời gian cho nó nữa nhỉ...


          Ôi mình gà thật...các sư huynh giúp với nào..em đang cần sự tư vấn gấp..

          Comment


          • #6
            ds1307 nhận ,gởi theo chuẩn i2c , cho nên bạn nên xem lại giao thức đó. còn cách truyền và nhận n bitcho vdk thì bạn xem ct con nhanbyte và guibyte ở trên.
            nhanbyte: MOV R0 , #8 ;
            nbitr: SETB scl ;
            NOP
            NOP
            NOP
            MOV C,sda ; daten into carry
            RLC A ; carry into accu
            CLR scl ;
            NOP
            DJNZ R0,nbitr ; next bit
            SETB sda ; data = 1
            NOP
            NOP
            NOP
            NOP
            ACALL givack ; goi tinuhieu ack di de bao la nhan xong roi
            ret
            *******
            guibyte: MOV R0, #8 ; bo dem so lan lap
            nbits:
            RLC A ; dua bit vao CY, D7 truoc tien
            MOV sda,C ; dua gia tri co CY ra chan SDA
            NOP
            NOP
            NOP
            SETB scl
            NOP
            NOP
            NOP
            NOP
            CLR scl
            DJNZ R0,nbits
            NOP
            SETB sda
            ACALL getack ; get acknowledge -
            RET ;doi cho bo thu gui tin hieu phan hoi

            Comment


            • #7
              chinhr thời gian ds1307 là phải viết, bạn xem thử ct con ở trên
              ;;;;;;;;;;;;;;;;;;;;;;; CHUONG TRINH GIO;;;;;;;;;
              GIO: ACALL ghi
              MOV A, #02h
              ACALL guibyte
              ACALL STOP
              ACALL doc
              ACALL nhanbyte
              ACALL STOP
              MOV R5,A
              JB P3.3 , NHAYGIO
              ACALL delay1
              JNB P3.3,$
              ACALL delay1
              ACALL ghi
              MOV A, #02h
              ACALL guibyte
              CJNE R5,#09h,bt1
              MOV R5,#0fh
              bt1: CJNE R5,#19h,bt2
              MOV R5,#1fh
              bt2: CJNE R5,#23h,bt3
              MOV R5,#ffh
              bt3: INC R5
              MOV A,R5
              ACALL guibyte
              ACALL STOP
              SJMP GIO
              NHAYGIO: ACALL dechex
              ;ACALL hienthiGIO
              MOV A,#0C4H
              ACALL COMMAND
              ACALL hienthi

              JMP main ;quay tro lai quet giay

              Comment


              • #8
                ct trên hoat động được lâu lâu làm cho mấy đứa bạn 1 cái đồng hồ lcd 16x2 xài chơi . chúc bạn thành công .

                Comment


                • #9
                  thời gian ngày tháng năm nhuận con DS1302 hoặc DS1307 đã tính sẵn rồi VDK chỉ việc đọc giá trị, và tác động vào thay đổi nó thôi, bạn nên dùng con 1307 hoặc 1288(có sẵn pin)

                  Comment


                  • #10
                    Nguyên văn bởi minhcpl Xem bài viết
                    chinhr thời gian ds1307 là phải viết, bạn xem thử ct con ở trên
                    ;;;;;;;;;;;;;;;;;;;;;;; CHUONG TRINH GIO;;;;;;;;;
                    GIO: ACALL ghi
                    MOV A, #02h
                    ACALL guibyte
                    ACALL STOP
                    ACALL doc
                    ACALL nhanbyte
                    ACALL STOP
                    MOV R5,A
                    JB P3.3 , NHAYGIO
                    ACALL delay1
                    JNB P3.3,$
                    ACALL delay1
                    ACALL ghi
                    MOV A, #02h
                    ACALL guibyte
                    CJNE R5,#09h,bt1
                    MOV R5,#0fh
                    bt1: CJNE R5,#19h,bt2
                    MOV R5,#1fh
                    bt2: CJNE R5,#23h,bt3
                    MOV R5,#ffh
                    bt3: INC R5
                    MOV A,R5
                    ACALL guibyte
                    ACALL STOP
                    SJMP GIO
                    NHAYGIO: ACALL dechex
                    ;ACALL hienthiGIO
                    MOV A,#0C4H
                    ACALL COMMAND
                    ACALL hienthi

                    JMP main ;quay tro lai quet giay
                    Sau một hồi nghiền ngẫm chương trình của bạn thì mình cũng ngộ ra được nhiều điều. Thế nhưng có một số cái mình vẫn bó tay. Ở chương trình trên bạn lập trình cho nó nhảy giờ. Thế thì mình cũng có nghĩa là phải có cả chương trình nhảy giây, nhảy ngày, nhảy tháng và nhảy năm nữa phải không?.
                    Thứ 2: P3.3 của bạn là gì? mình không hiểu.
                    Thứ 3: bạn giải thích giùm chỗ này...

                    MOV A, #02h
                    ACALL guibyte
                    CJNE R5,#09h,bt1
                    MOV R5,#0fh
                    bt1: CJNE R5,#19h,bt2
                    MOV R5,#1fh
                    bt2: CJNE R5,#23h,bt3
                    MOV R5,#ffh
                    bt3: INC R5
                    MOV A,R5

                    Thứ 4: Chương trình dechex của bạn nghĩa là sao

                    dechex:
                    mov b,#16
                    div ab
                    mov r2,b
                    mov r1,a
                    ret

                    Thứ 5:. Bạn mov a,#0c4h để làm gì?

                    Mong bạn giải thích giùm...

                    Comment


                    • #11
                      Em vừa viết được một chương trình sau một hồi mò mẫm chương trình của bac minhcpl nhưng mà lại không chạy được. Em post lên mong các bậc tiền bối chỉ giùm chỗ sai cho em...


                      ORG 0000H
                      MOV TMOD,#20H ;CHON TIME1 CHE DO 2
                      MOV TH1,#0F3H
                      MOV TL1,#0F3H ; CHON TOC DO 9600BAUD
                      MOV SCON,#50H ; CHON KHUNG DU LIEU 8BIT STOP
                      SETB TR1 ; KHOI DONG BO TIME1
                      CLR RI
                      LJMP MAIN
                      ORG 000BH
                      ; LJMP LED_SCAN
                      ;================================================= =========================
                      ;*************************** MAIN PROGRAM *********************************
                      ;================================================= =========================
                      ORG 0030H
                      MAIN:
                      LCALL GHI_DU_LIEU
                      MOV A,#07H
                      LCALL GUI_BYTE
                      MOV A,#10H
                      LCALL GUI_BYTE
                      LCALL STOP_CONDITION

                      JNB RI,$
                      MOV A,SBUF
                      CLR RI
                      CJNE A,#01,NHAY
                      SJMP TIEP
                      NHAY: LJMP DOC_TIME
                      TIEP:

                      ;************************************************* ********************
                      ;===============CHINH GIAY==========================================

                      LCALL GHI_DU_LIEU
                      MOV A,#00H
                      LCALL GUI_BYTE
                      JNB RI,$
                      MOV A,SBUF
                      LCALL GUI_BYTE
                      LCALL STOP_CONDITION
                      ;================================================= ====================
                      ;======================CHINH PHUT=====================================
                      LCALL GHI_DU_LIEU
                      MOV A,#01H
                      LCALL GUI_BYTE
                      JNB RI,$
                      MOV A,SBUF
                      LCALL GUI_BYTE
                      LCALL STOP_CONDITION
                      ;================================================= ===================
                      ;=====================CHINH GIO=======================================
                      LCALL GHI_DU_LIEU
                      MOV A,#02H
                      LCALL GUI_BYTE
                      JNB RI,$
                      MOV A,SBUF
                      LCALL GUI_BYTE
                      LCALL STOP_CONDITION
                      ;================================================= ===================
                      ;=====================CHINH NGAY TRONG TUAN==========================
                      LCALL GHI_DU_LIEU
                      MOV A,#03H
                      LCALL GUI_BYTE
                      JNB RI,$
                      MOV A,SBUF
                      LCALL GUI_BYTE
                      LCALL STOP_CONDITION
                      ;================================================= ===================
                      ;=====================CHINH NGAY TRONG THANG=========================
                      LCALL GHI_DU_LIEU
                      MOV A,#04H
                      LCALL GUI_BYTE
                      JNB RI,$
                      MOV A,SBUF
                      LCALL GUI_BYTE
                      LCALL STOP_CONDITION
                      ;================================================= ===================
                      ;=====================CHINH THANG=======================================
                      LCALL GHI_DU_LIEU
                      MOV A,#05H
                      LCALL GUI_BYTE
                      JNB RI,$
                      MOV A,SBUF
                      LCALL GUI_BYTE
                      LCALL STOP_CONDITION
                      ;================================================= ===================
                      ;=====================CHINH NAM=======================================
                      LCALL GHI_DU_LIEU
                      MOV A,#06H
                      LCALL GUI_BYTE
                      JNB RI,$
                      MOV A,SBUF
                      LCALL GUI_BYTE
                      LCALL STOP_CONDITION

                      LJMP MAIN

                      DOC_TIME:
                      LCALL DOC_DU_LIEU
                      LCALL NHAN_BYTE
                      MOV SBUF,A
                      JNB TI,$
                      CLR TI
                      NOP
                      NOP
                      NOP
                      LCALL NHAN_BYTE
                      MOV SBUF,A
                      JNB TI,$
                      CLR TI
                      NOP
                      NOP
                      NOP
                      NOP
                      LCALL NHAN_BYTE
                      MOV SBUF,A
                      JNB TI,$
                      CLR TI
                      NOP
                      NOP
                      NOP
                      NOP
                      LCALL NHAN_BYTE
                      MOV SBUF,A
                      JNB TI,$
                      CLR TI
                      NOP
                      NOP
                      NOP
                      NOP
                      LCALL NHAN_BYTE
                      MOV SBUF,A
                      JNB TI,$
                      CLR TI
                      NOP
                      NOP
                      NOP
                      NOP
                      LCALL NHAN_BYTE
                      MOV SBUF,A
                      JNB TI,$
                      CLR TI
                      NOP
                      NOP
                      NOP
                      NOP
                      LCALL NHAN_BYTE_CUOI
                      MOV SBUF,A
                      JNB TI,$
                      CLR TI
                      LCALL STOP_CONDITION

                      JNB RI,DOC_TIME
                      LJMP MAIN


                      ;===================GHI THOI GIAN VAO DS1307=========================



                      GHI_DU_LIEU:
                      MOV A,#0D0H
                      LCALL START_CONDITION
                      LCALL GUI_BYTE
                      RET
                      ;================================================= =================
                      DOC_DU_LIEU:
                      MOV A,#0D1H
                      LCALL START_CONDITION
                      LCALL GUI_BYTE
                      RET


                      ;*************************************************

                      START_CONDITION:
                      SETB P1.5
                      NOP
                      NOP
                      NOP
                      SETB P1.6
                      CLR P1.5
                      NOP
                      NOP
                      NOP
                      CLR P1.6
                      RET
                      ;************************************************* ***

                      STOP_CONDITION:
                      CLR P1.5
                      SETB P1.6
                      NOP
                      NOP
                      NOP
                      NOP
                      SETB P1.5
                      NOP
                      NOP
                      NOP
                      NOP
                      CLR P1.6
                      CLR P1.5
                      RET
                      ;************************************************* **

                      GUI_BYTE:
                      MOV R0,#8
                      LAP: RLC A
                      MOV P1.5,C
                      NOP
                      NOP
                      NOP
                      SETB P1.6
                      NOP
                      NOP
                      NOP
                      NOP
                      CLR P1.6
                      DJNZ R0,LAP
                      NOP
                      SETB P1.5
                      LCALL GET_ACK
                      RET

                      GET_ACK:
                      SETB P1.6
                      LAI: MOV C,P1.5
                      JC LAI
                      CLR P1.6
                      RET
                      ;================================================= =========

                      NHAN_BYTE:
                      MOV R0,#8
                      LAI1: SETB P1.6
                      NOP
                      MOV C,P1.5
                      RLC A
                      CLR P1.6
                      NOP
                      DJNZ R0,LAI1
                      SETB P1.5
                      NOP
                      NOP
                      NOP
                      NOP
                      LCALL GIVE_ACK
                      RET

                      GIVE_ACK:
                      SETB P1.6
                      NOP
                      NOP
                      NOP
                      NOP
                      CLR P1.6
                      RET
                      ;================================================= ============

                      NHAN_BYTE_CUOI:
                      MOV R0,#8
                      LAI2: SETB P1.6
                      NOP
                      MOV C,P1.5
                      RLC A
                      CLR P1.6
                      NOP
                      DJNZ R0,LAI2
                      SETB P1.5
                      NOP
                      NOP
                      NOP
                      NOP
                      LCALL GIVE_NOACK
                      RET
                      GIVE_NOACK:
                      SETB P1.5
                      NOP
                      NOP
                      NOP
                      SETB P1.6
                      NOP
                      NOP
                      NOP
                      NOP
                      CLR P1.6
                      RET

                      ;================================================= =======
                      END

                      Comment


                      • #12
                        Trong đó: P1.5 SDA
                        P1.6 SCL
                        P1.7 SQR/OUT

                        Comment


                        • #13
                          ct này chỉ chạy giờ phút giây hiển thị lcd 16x ,còn ng, th ,n phải viết thêm.
                          - p3.3 thay đổi giờ
                          - p3.2 thay đổi phút
                          -"mov a,#0c4h"đây là lệnh xác định vị trí hiển thị của lcd
                          ***DONG HO SO***
                          00:00:00

                          Comment


                          • #14
                            Sau một hồi mày mò cuối cùng tui cũng hiểu được cơ chế hoạt động của con ds1307 theo nguyên tắc thế này.

                            Write : Start ->A= OD0H -> send-> A= address->send->A=value->send->stop
                            Read: Start ->A= OD0H -> send-> A= address->send-> A=0d1h->send->stop

                            Các bác xem thấy có đúng không.
                            Nhưng còn cái chuyển dữ liệu từ còn ds1307 ra lai là mã BCD. Vậy phải xử lý như thế nào để đi quét led đây nhỉ..

                            Comment


                            • #15
                              còn thiếu xung SCL phải đúng theo datasheet của nó
                              ds1307 nhận và phát số BCD,do đó phải đổi sang HEX ,bạn chia cho 16 là xong.

                              MOV A, #02h mà bạn hỏi là do tôi ghi vào ô giờ của ds1307
                              bạn xem bản đồ địa chỉ của nó: 00h....seconds
                              01h....minutes
                              02h....hours
                              ...............

                              Comment

                              Về tác giả

                              Collapse

                              a2ofu Tìm hiểu thêm về a2ofu

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

                              Collapse

                              Đang tải...
                              X