Thông báo

Collapse
No announcement yet.

Đồng hồ dùng DS1307

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

  • #16
    chào mọi người
    Mình đang làm một cái để báo tiết, dùng DS12887.

    Mình có đoạn code này nói về việc so sánh thời gian đọc được với bảng thời gian alarm. Mình làm hoài mà nó không chạy, so sánh được rùi, nhưng khi xuất chuông thì nó bị treo. không thoát ra được chương trình. sau 1 phút nhấn Reset thì mọi chuyện ok lại. Minh đã sửa nhiều lần lắm rùi mà nó không như ý muốn, mong các bạn xem giúp có chỗ nào bị lỗi không?

    ban đầu nếu không có phím nào nhấn thì chương trình vẫn đọc bình thường (ct con DOC_DATA), sau khi đọc thì đã lưu các ô nhớ giờ, phút, giây. Sau đó gọi ct con SO_SANH để so sánh thời gian đọc với thời gian trong bảng alarm. Nếu nó bằng nhau thì cho xuất chuông.

    Chỉ vậy thôi mà nghĩ hoài không ra, mong hồi âm từ các bạn
    Cảm ơn trước nhé

    BATDAU:
    LAP1: JB P3.0,LAP ;KHONG NHAN THI TIEP TUC DOC
    JNB P3.0,$
    ACALL DOC_DATA JB P3.0,CHON_MODE ;CO NHAN THI CHINH PHUT
    LAP:
    ACALL DOC_DATA
    ACALL SO_SANH
    MOV R7,SOLAN
    CJNE R7,#0,LAP2
    JMP LAP
    LAP2: ACALL XUAT_CHUONG
    DJNZ R7,LAP2

    LJMP LAP1
    XUAT_CHUONG:
    MOV R3,#5
    M1: SETB CHUONG

    ACALL DELAY1

    CLR CHUONG
    DJNZ R3,M1

    RET
    ;
    SO_SANH: CLR CHUONG
    CLR A ; XOA A
    LL: MOV R1,A ;DUA A VAO R0
    MOV DPTR,#TABLE_HOUR
    PUSH ACC ; LUU GIA TRI A
    MOVC A,@A+DPTR ;TRA BANG
    CJNE A,GIO,NEXT ;SO SANH VOI O NHO BAO GIO
    MOV A,R1 ;DUA GIA TRI BAN DAU CUA A VAO
    MOV DPTR,#TABLE_MINUTE
    MOVC A,@A+DPTR ; TRA BANG
    CJNE A,PHUT,NEXT ;SO SANH VOI O NHO BAO PHUT
    ;
    MOV A,R1
    MOV DPTR,#TABLE_SECON
    MOVC A,@A+DPTR
    CJNE A,GIAY,NEXT
    ;

    MOV A,R1
    MOV DPTR,#TABLE_TIMES
    MOVC A,@A+DPTR
    MOV SOLAN,A
    JMP EXIT
    NEXT: POP ACC ; LAY DU LIEU A BAN DAU RA DE TANG LEN
    INC A
    CJNE A,#8,LL
    MOV SOLAN,#0
    EXIT:
    RET
    - - -

    Comment


    • #17
      dung 12887 la don gian nhat,sai so thap, no giap tiep song song 8bit, chuan song song voi 89s52, rat tot, khogn phai lap trinh nhieu, rat don gian, thoi gian cung chuan, co the hen gio, hieu chinh cung de

      Comment


      • #18
        thì em bit nó sẽ đơn giản nhưng làm mãi không được, vậy mới mong các pác giúp đỡ.
        - - -

        Comment


        • #19
          Các bác nào biết code asm dùng để đổi BCD sang DECIMAL và ngươc lại không chỉ giúp mình với, cám ơn rất nhiều
          Mình đang làm con DS1307 nhưng nó đọc ra là BCD nên mình muốn đổi sanh DECIMAL để xuất ra LED 7 đoạn, cũng thế mình đổi ngược lại để ghi vào 1307

          Comment


          • #20
            BIN_BCD: MOV A,giay
            MOV B,#10
            DIV AB
            MOV giay1,B
            MOV giay2,A
            MOV A,phut
            MOV B,#10
            DIV AB
            MOV phut1,B
            MOV phut2,A
            MOV A,gio
            MOV B,#10
            DIV AB
            MOV gio1,B
            MOV gio2,A
            RET



            Trên là đoạn code đó, bạn xem thử.
            - - -

            Comment


            • #21
              Cám on bạn đoạn code ở tren là từ bcd sang decimal, bạn có thể viết rõ cả hai cách đổi từ BCD--> DECIMAL và từ DECIMAL --> BCD
              cám ơn bạn văn thiên

              Comment


              • #22
                Cám ơn bạn Van thien theo mình được biết nếu đổi từ DECIMAL sang BCD code như sau:
                mov A,GIAYDECIMAL
                MOV B,#10
                DIV AB
                SWAP A
                ADD A,B
                MOV GIAYBCD,A
                Nhưng nếu đổi ngươc lại BCD --> DECIMAL thì phải làm như thế nào chỉ giúp mình với, cám ơn nhiều

                Comment


                • #23
                  đơn giản là mình dùng con 74HC247 thôi bạn ah.
                  - - -

                  Comment


                  • #24
                    Mình dang dùng 89s để điều khiển 1307 nên phải viết code, để dùng nhiều công dụng khác chứ không chỉ xem giờ mà thôi có ai biết vui lòng chỉ giúp mình cách viết code dể đổi mã cám ơn nhiều
                    mov A,GIAYDECIMAL
                    MOV B,#10
                    DIV AB
                    SWAP A
                    ADD A,B
                    MOV GIAYBCD,A
                    Nhưng nếu đổi ngươc lại BCD --> DECIMAL thì phải làm như thế nào chỉ giúp mình với, cám ơn nhiều

                    Comment


                    • #25
                      Nguyên văn bởi vuquivinh Xem bài viết
                      Mình dang dùng 89s để điều khiển 1307 nên phải viết code, để dùng nhiều công dụng khác chứ không chỉ xem giờ mà thôi có ai biết vui lòng chỉ giúp mình cách viết code dể đổi mã cám ơn nhiều
                      mov A,GIAYDECIMAL
                      MOV B,#10
                      DIV AB
                      SWAP A
                      ADD A,B
                      MOV GIAYBCD,A
                      Nhưng nếu đổi ngươc lại BCD --> DECIMAL thì phải làm như thế nào chỉ giúp mình với, cám ơn nhiều
                      lấy hàng chục bcd nhân với 10 rồi + với số hàng đơn vị của BCD.

                      Comment


                      • #26
                        Bạn vodangks vui lòng viết mấy dòng code Asm để cho mình hiểu ro thêm nhe, code đổi DEC--->BCD của mình viết như vậy có đúng không?
                        Mong tin bạn cám ơn nhiều

                        Comment


                        • #27
                          Rtc

                          Nguyên văn bởi vanthien Xem bài viết
                          thì em bit nó sẽ đơn giản nhưng làm mãi không được, vậy mới mong các pác giúp đỡ.
                          Dung RTC12887, hien thi ra LCD thoi gian! Day la code dung keil C! xem tham khao nhe!
                          Attached Files

                          Comment


                          • #28
                            Bạn vodangks vui lòng viết mấy dòng code Asm để cho mình hiểu ro thêm nhe, code đổi DEC--->BCD của mình viết như vậy có đúng không?
                            Mong tin bạn cám ơn nhiều

                            Comment


                            • #29
                              Nguyên văn bởi vodangks Xem bài viết
                              lấy hàng chục bcd nhân với 10 rồi + với số hàng đơn vị của BCD.
                              Bạn vodangks vui lòng viết mấy dòng code Asm để cho mình hiểu ro thêm nhe, code đổi DEC--->BCD của mình viết như vậy có đúng không?
                              Mong tin bạn cám ơn nhiều

                              Comment


                              • #30
                                dec -> bcd thì cứ chia đi 10 lấy dư là xong mà.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X