Thông báo

Collapse
No announcement yet.

Hỏi Về Cách Giao Tiếp Giữa Vdk Với Ic Thời Gian Thực

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

  • #31
    Đây là hình nguyên lý lúc còn đi học tôi đã làm chơi 1 cái như vậy. Chạy cho tới giờ không có vấn đề gì hết. Ai cần thì lấy dùng, nếu thấy hay thì nhấn cám ơn.
    Attached Files

    Comment


    • #32
      Giải thích chút nguyên lý của hình tren được không anh.
      Còn chương trình thì như thế nào?
      |

      Comment


      • #33
        Trước giờ nhiều người nói về đề tài này mà không có ai đưa ra đáp án cụ thể. Bác big sky nhân dịp này hoàn thành vấn đề này luôn đi.
        Hướng dân mấy em nó các bước làm 1 đồng hồ với DS12887 và luôn chương trình nữa.
        |

        Comment


        • #34
          ----------------------------------------------------------------------------
          Last edited by vodangks; 18-08-2008, 15:02.

          Comment


          • #35
            addata equ p0
            cs bit p2.7
            as bit p2.6
            rewr bit p2.5
            dss bit p2.4
            ;**********************MAIN*********************** *****
            setb cs
            lcall kd_rtc
            nop
            lcall nap
            sjmp $

            ;**********************KHOI DONG RTC************************
            kd_rtc:
            mov a,#0ah; địa chỉ thanh ghi a cua rtc
            lcall wr_add
            mov a,#20h; nạp 20h vào A của RTC để khởi động
            lcall write_byte
            mov a,#0bh; thanh ghi B
            lcall wr_add
            mov a,#06h ;binary ,24h; nap 06h vao B
            ;mov a,#2h;bcd,24h
            lcall write_byte
            ret
            cho hỏi chương trình trên nạp dữ liệu vào A,B của RTC để khởi động còn thanh ghi C,D ko cần khai báo nên ko nạp
            mình nghĩ như vậy có đúng ko? , xin chỉ giáo giúp
            muốn truy suất dữ liệu ngày thàng năm giờ phút giây chỉ cần khai báo cho thanh ghi A,B như vậy thôi hả?
            mình chỉ trích một chút trong ctrinh thui, nhưng xem sẽ hiểu mong Pro chæ giuùp duøm , thank alot

            Comment


            • #36
              uh. Nạp các giá trị cần thiết vào thanh A, B là đủ rùi. Còn thanh C, D nếu ko nạp thì cũng chẳng sao.

              Comment


              • #37
                còn vấn đề chỉnh giờ thì sao nhỉ
                có phải khởi tạo các giá trị cho phép ngắt, chờ chân ngắt ngoài sẻ nhảy đến chương trình chỉnh giờ, sau đó chỉnh xong quay lại như thế có đúng ko?
                nhưng vấn đề là mình ko biết làm cách nào mà mình nhấn tăng Giờ or phút, rùi sao đó quay lại cttinh2 chính mà nó vẫn nhớ giờ mình đã chỉnh?

                Comment


                • #38
                  Khi các bạn làm việc với DS12887 thì lưu ý 2bit này
                  1.The Update In Progress (UIP) bit trong thanh ghi A
                  2.The Daylight Savings Enable (DSE) bit trong thanh ghi B
                  - Cần phải kiểm tra bit UIP trước khi cập nhật lại ngày/giờ cho DS12887, nếu không có thể có rủi ro sảy ra: các rủi ro có thể sảy ra là không cập nhật đúng giờ chúng ta yêu cầu, có thể hiển thị giờ >24 ví dụ: từ 25 giờ đến 255 giờ mới quay 0 giờ như bình thường, tương tự với phút, giây, ngày, tháng, ...
                  - Nếu bạn ở Bắc Mỹ hoặc viết chương trình để sử dụng ở Bắc Mỹ thì hãy bật bit DSE này lên, còn ngược lại hãy tắt nó đi, nếu không một ngày đẹp trời nào đó bạn thấy mạch của mình chạy nhanh 1 giờ hoặc trễ một giờ mà không biết lý do tại sao ??? Nếu dùng DS12887 làm Alarm giờ hẹn đi chơi với người yêu mà trễ 1 giờ thì hỏng bét rồi, hihi. Tuy nó đơn giản thế nhưng thỉnh thoảng các bảng Quang báo lớn tại TP.HCM và HN ở các ngõ ra vào TP vẫn có sai sót này. mình đã chứng kiến rồi. Chúc các bạn vui vẻ.

                  Comment


                  • #39
                    Nguyên văn bởi TrucQuanTu Xem bài viết
                    còn vấn đề chỉnh giờ thì sao nhỉ
                    có phải khởi tạo các giá trị cho phép ngắt, chờ chân ngắt ngoài sẻ nhảy đến chương trình chỉnh giờ, sau đó chỉnh xong quay lại như thế có đúng ko?
                    nhưng vấn đề là mình ko biết làm cách nào mà mình nhấn tăng Giờ or phút, rùi sao đó quay lại cttinh2 chính mà nó vẫn nhớ giờ mình đã chỉnh?
                    Ct real time clock mình viết ko cần dùng đến 1 timer nào hay 1 ngắt nào cả nhưng vẫn đầy đủ chức năng xem giờ, phút, giây, ngày, tháng, năm, chỉnh giờ, chỉnh giờ hẹn. Việc dò các phím bấm ko cần phải dùng đến ngắt mà hãy dùng pp thăm dò (dùng các lệnh JNB nut,rel chèn vào ct Main). Khi chỉnh thì tăng các giá trị xong rùi hãy thiết lập thêm 1 nút có chức năng cập nhật. Chỉnh xong, bấm nút cập nhật thì các giá trị ta chỉnh sẽ được ghi vào thanh ghi trong RTC.
                    CT Main của ta thực chất chỉ có vài dòng trong đó có các lệnh chính như Đọc gt từ RTC, hiển thị led, dò các nút, Sjmp Main.

                    Comment


                    • #40
                      bạn có thể nói rõ hơn chân nào có chức năng chỉnh giờ trong RTC dc ko? cách khai báo làm sao? thank bạn rất nhiều

                      Comment


                      • #41
                        Nguyên văn bởi TrucQuanTu Xem bài viết
                        bạn có thể nói rõ hơn chân nào có chức năng chỉnh giờ trong RTC dc ko? cách khai báo làm sao? thank bạn rất nhiều
                        Trong RTC 12C887 ko có chân nào dùng cho việc chỉnh giờ cả bạn à. Việc chỉnh giờ ta phải dùng phần mềm bằng cách lập trình cho VXL. Khi ta bấm các nút để chỉnh giờ, các giá trị giờ phút sẽ tăng dần, tới giá trị nào ta cần thì ta sẽ làm thêm 1 nút nữa, nút này có tác dụng là ghi toàn bộ giá trị ta vừa chỉnh vào các thanh ghi giờ phút trong RTC (bằng mấy cái lệnh Movx ấy). Cụ thể hơn thì mình gửi cho bạn sơ đồ, ct của đồng hồ mình làm. Dùng 89V51RB2 + DS12C887, chức năng: xem giờ, phút, giây, ngày, tháng, năm, chỉnh giờ, hẹn giờ báo thức (loa nối với p1.7, tới giờ hẹn thì loa sẽ kêu trong 15s, giá trị này tùy chỉnh được). CT này mình ko dùng 1 ngắt hay 1 timer nào của 89V51 cả nên rất đơn giản, dễ hiểu.
                        Link Down RTC_12C887.rar

                        Comment


                        • #42
                          Nguyên văn bởi vodangks Xem bài viết
                          Trong RTC 12C887 ko có chân nào dùng cho việc chỉnh giờ cả bạn à. Việc chỉnh giờ ta phải dùng phần mềm bằng cách lập trình cho VXL. Khi ta bấm các nút để chỉnh giờ, các giá trị giờ phút sẽ tăng dần, tới giá trị nào ta cần thì ta sẽ làm thêm 1 nút nữa, nút này có tác dụng là ghi toàn bộ giá trị ta vừa chỉnh vào các thanh ghi giờ phút trong RTC (bằng mấy cái lệnh Movx ấy). Cụ thể hơn thì mình gửi cho bạn sơ đồ, ct của đồng hồ mình làm. Dùng 89V51RB2 + DS12C887, chức năng: xem giờ, phút, giây, ngày, tháng, năm, chỉnh giờ, hẹn giờ báo thức (loa nối với p1.7, tới giờ hẹn thì loa sẽ kêu trong 15s, giá trị này tùy chỉnh được). CT này mình ko dùng 1 ngắt hay 1 timer nào của 89V51 cả nên rất đơn giản, dễ hiểu.
                          Link Down RTC_12C887.rar
                          REG_CAPNHAT: ;CHUYEN 2GT GIOCHINH VA PHUTCHINH - > BCD NEN
                          PUSH ACC
                          PUSH 00H

                          MOV A,CHPHUT_CHINH ;A = 0000 CHPHUT
                          SWAP A ;A = CHPHUT 0000
                          MOV R0,#DVPHUT_CHINH
                          XCHD A,@R0 ;A = CHPHUT DVPHUT
                          MOV 56H,A ;(56H) = CHPHUT DVPHUT

                          MOV A,CHGIO_CHINH
                          SWAP A
                          MOV R0,#DVGIO_CHINH
                          XCHD A,@R0
                          MOV 57H,A

                          POP 00H
                          POP ACC
                          RET
                          cho mình hỏi trườc khi cập nhật thì cần gì phải lưu acc và 00h vào stack point? nó có tác dụng gì? nói chung mình cũng hiểu sơ sơ nhưng còn vài điềulấn cấn, cam on ban

                          Comment


                          • #43
                            Nguyên văn bởi TrucQuanTu Xem bài viết
                            REG_CAPNHAT: ;CHUYEN 2GT GIOCHINH VA PHUTCHINH - > BCD NEN
                            PUSH ACC
                            PUSH 00H

                            MOV A,CHPHUT_CHINH ;A = 0000 CHPHUT
                            SWAP A ;A = CHPHUT 0000
                            MOV R0,#DVPHUT_CHINH
                            XCHD A,@R0 ;A = CHPHUT DVPHUT
                            MOV 56H,A ;(56H) = CHPHUT DVPHUT

                            MOV A,CHGIO_CHINH
                            SWAP A
                            MOV R0,#DVGIO_CHINH
                            XCHD A,@R0
                            MOV 57H,A

                            POP 00H
                            POP ACC
                            RET
                            cho mình hỏi trườc khi cập nhật thì cần gì phải lưu acc và 00h vào stack point? nó có tác dụng gì? nói chung mình cũng hiểu sơ sơ nhưng còn vài điềulấn cấn, cam on ban
                            Phải lưu lại vì thanh ghi ACC và thanh ghi R0 là những thanh ghi trung gian của các quá trình tính toán (có những phép toán chỉ sử dụng được trên ACC mà thôi), chính vì nó quan trọng như vậy cho nên ta cần lưu các gt hiện tại của nó, rùi sau đó mới dùng nó cho ct con, hết ct con thì trả lại giá trị đang có của nó, làm như vậy cốt là để tránh xung đột khi các chương trình con cùng dùng thanh ghi ACC, R0. Và khi dùng như vậy thì ta cũng đỡ phải mắc công suy nghĩ về các thanh ghi ACC, R0... trước đó đã dùng cho việc gì mà ta có thể dùng chúng 1 cách dễ dàng mà ko sợ xung đột.
                            Lưu ý: ko phải lúc nào cũng cần dùng những lệnh cất giữ thanh ghi như trên, nhưng khi dùng thì ta yên tâm hơn và đảm bảo ct chạy ổn định, nhất là những ct có quá nhiều ct con chằng chịt. Trong ct mình viết bạn thấy mình dùng rất nhiều lệnh trên, đôi chỗ thực sự ko cần thiết nhưng nó sẽ cần thiết khi bạn viết thêm các ct con vào chẳng hạn.
                            Last edited by vodangks; 26-08-2008, 22:53.

                            Comment


                            • #44
                              luu vao vung ram tu 10h -> ffh cua ds12887 co can khai bao gi k .ban nao biet chi dum minh ha

                              Comment


                              • #45
                                Không cần khai báo gì. Truy cậy vùng này giống như truy cập RAM ngoài bình thường

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X