Thông báo

Collapse
No announcement yet.

Lập trình cho DS1307 băng C18

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

  • Lập trình cho DS1307 băng C18

    Em đang học lập trình bằng C18, em muốn lập trình cho ds1307 nhưng chưa biết phải làm sao, để có thể ghi data vào DS1307 và lấy dữ liệu ra nữa !

    Mong các anh chị giúp cho, nếu được thì xin anh chị cho em 1 số code đơn giản để em tham khảo thêm.

    Chân thành cảm ơn các anh chị thật nhiều !!!
    Last edited by alone76816; 01-04-2010, 01:02.

    ------------------------------------------------

  • #2
    mình nghĩ đầu tiên bạn nên đọc datasheet trước đã. trong đó nó có ghi rõ dùng chuẩn giao tiếp nào, đọc ghi ra làm sao. bộ nhớ con đó thế nào.
    còn code thì có rất nhiều trong diễn đàn rồi. bạn chỉ cần search 1 tý là có hàng tá luôn.
    |

    Comment


    • #3
      Nguyên văn bởi ubuntu7 Xem bài viết
      mình nghĩ đầu tiên bạn nên đọc datasheet trước đã. trong đó nó có ghi rõ dùng chuẩn giao tiếp nào, đọc ghi ra làm sao. bộ nhớ con đó thế nào.
      còn code thì có rất nhiều trong diễn đàn rồi. bạn chỉ cần search 1 tý là có hàng tá luôn.
      Cảm ơn bạn, nhưng mình cũng đã đọc datasheet của con pic, cũng như DS1307 rồi, và cũng có tham khảo 1 số code mẫu nhưng mình viết chưa có cái nào chạy được, mình xin được post sơ đồ và code lên đây mong được sự giúp đỡ. Đây là sơ đồ trong proteus :



      Code như sau,mình cài đặt giờ cho DS1307, xong mình lấy month (biến mes) để hiển thị ra PORTD :

      #include"p18f4520.h"
      #include"delays.h"
      #include"i2c.h"

      #pragma config OSC = HS, FCMEN=OFF, IESO=OFF
      #pragma config PBADEN = OFF
      #pragma config WDT = OFF,WDTPS=512
      #pragma config LVP = OFF
      #pragma config PWRT = OFF , BOREN=OFF
      #pragma config MCLRE = ON,CCP2MX = PORTC

      #define databus PORTD

      unsigned char sec,min,hrs,day,wkd,mes,yer;

      void main(void)
      {
      ADCON1=0x0f;
      TRISD=0;
      databus=0x0f;
      TRISC=0;
      Delay10KTCYx(50);
      OpenI2C(MASTER, SLEW_OFF);
      SSPADD=0x09;

      EEByteWrite(0xd0, 0x00, 0x00);
      EEByteWrite(0xd0, 0x01, 0x59);
      EEByteWrite(0xd0, 0x02, 0x13);
      EEByteWrite(0xd0, 0x03, 0x01);

      EEByteWrite(0xd0, 0x04, 0x08);
      EEByteWrite(0xd0, 0x05, 0x01);
      EEByteWrite(0xd0, 0x06, 0x09);
      EEByteWrite(0xd0, 0x07, 0x10);
      EEByteWrite(0xd0, 0x00, 0x00);

      while(1)
      {


      sec=EERandomRead(0xd0,0x00);
      min=EERandomRead(0xd0,0x01);
      hrs=EERandomRead(0xd0,0x02);
      wkd=EERandomRead(0xd0,0x03);
      day=EERandomRead(0xd0,0x04);
      mes=EERandomRead(0xd0,0x05);
      yer=EERandomRead(0xd0,0x06);


      databus=mes;
      Delay10KTCYx(50);
      }

      }


      Mong các anh chị chỉ giùm em !!!
      Attached Files
      Last edited by alone76816; 01-04-2010, 14:17.

      ------------------------------------------------

      Comment


      • #4
        Nguyên văn bởi alone76816 Xem bài viết
        Em đang học lập trình bằng C18, em muốn lập trình cho ds1307 nhưng chưa biết phải làm sao, để có thể ghi data vào DS1307 và lấy dữ liệu ra nữa !

        Mong các anh chị giúp cho, nếu được thì xin anh chị cho em 1 số code đơn giản để em tham khảo thêm.

        Chân thành cảm ơn các anh chị thật nhiều !!!
        cau timtren dien dan day! cac bai viet cua nguyen quang nam ve pic giao tiep voi ds1307 rat hay! cau tham khao nhé! tren dian dan pic viet nam day! minh chi viet chuong trinh cho ds1307 giao tiep voi 8051 thoi con pic minh chua lam bao gio! mac qua! ma pic co ho tro cac ham giao tiep voi ds roi do cau chi can goi ra ma dung thoi! chuc thanh cong! dttcong88@gmail.com

        Comment


        • #5
          Nguyên văn bởi dttcong Xem bài viết
          cau timtren dien dan day! cac bai viet cua nguyen quang nam ve pic giao tiep voi ds1307 rat hay! cau tham khao nhé! tren dian dan pic viet nam day! minh chi viet chuong trinh cho ds1307 giao tiep voi 8051 thoi con pic minh chua lam bao gio! mac qua! ma pic co ho tro cac ham giao tiep voi ds roi do cau chi can goi ra ma dung thoi! chuc thanh cong! dttcong88@gmail.com
          Đúng như bạn nói, mình cũng đã tìm rồi, và có xem rồi, đa số là viết bằng CCS thôi, còn cái mình muốn là C18.

          Và mình đã tham khảo 1 số code viết bằng C18, nhưng cũng không được gì nữa.

          ------------------------------------------------

          Comment


          • #6
            Ngoài ra còn có những code như sau :


            #include"p18f4520.h"
            #include"delays.h"
            #include"i2c.h"

            #pragma config OSC = HS, FCMEN=OFF, IESO=OFF
            #pragma config PBADEN = OFF
            #pragma config WDT = OFF,WDTPS=512
            #pragma config LVP = OFF
            #pragma config PWRT = OFF , BOREN=OFF
            #pragma config MCLRE = ON,CCP2MX = PORTC

            unsigned char t,u;

            void main(void)
            {
            TRISD=0;
            PORTD=0x0f;

            SSPADD = 0x09; // SSPADD = 09 for 100K;
            OpenI2C(MASTER, SLEW_OFF); // 19 for 50K


            while(1){

            StartI2C();
            IdleI2C();

            WriteI2C(0xD0); // Write mode and clock in Ack
            IdleI2C();

            WriteI2C(0x00); // Control reg adress);
            IdleI2C();

            WriteI2C(0x10); // sec [0]
            IdleI2C();

            WriteI2C(0x03); // min [1]
            IdleI2C();

            WriteI2C(0x04); // Hour [2]
            IdleI2C();

            WriteI2C(0x05); // Day [3]
            IdleI2C();

            WriteI2C(0x06); // Date [4]
            IdleI2C();

            WriteI2C(0x07); // Month [5]
            IdleI2C();

            WriteI2C(0x00); // Year [6]
            IdleI2C();

            StopI2C();


            //read data from DS1307

            StartI2C();

            IdleI2C();
            WriteI2C(0xD0); // Write mode
            IdleI2C();
            WriteI2C(0x00); // Pointer=Start of Ram
            IdleI2C();

            RestartI2C();
            IdleI2C();
            WriteI2C(0xD1);
            IdleI2C();
            t = ReadI2C();
            AckI2C();
            u = ReadI2C();
            NotAckI2C();
            StopI2C();

            PORTD=t;
            Delay10KTCYx(50);
            }
            }

            ------------------------------------------------

            Comment


            • #7
              bạn thử thêm mấy cái này xem.
              TRis_scl = 0;
              tris_sda = 1;
              code mình cũng có viết bằng c18 rồi. nếu vẫn k chạy thì để mình tìm rồi pót lên cho bạn.
              |

              Comment


              • #8
                bạn thử thêm mấy cái này xem.
                TRis_scl = 0;
                tris_sda = 1;
                code mình cũng có viết bằng c18 rồi. nếu vẫn k chạy thì để mình tìm rồi pót lên cho bạn.
                |

                Comment


                • #9
                  thank you.

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  • vi van pham
                    Trả lời cho Tiếng Anh cho người Việt
                    bởi vi van pham
                    Cám ơn những lời chúc tốt đẹp của em.

                    Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

                    Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
                    hôm nay, 02:00
                  • nhathung1101
                    Trả lời cho Tiếng Anh cho người Việt
                    bởi nhathung1101
                    Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

                    Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

                    Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
                    Hôm qua, 22:18
                  • dinhthuong80
                    Trả lời cho Tiếng Anh cho người Việt
                    bởi dinhthuong80
                    Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

                    Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
                    Hôm qua, 14:51
                  • dinhthuong80
                    Trả lời cho Tiếng Anh cho người Việt
                    bởi dinhthuong80
                    Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

                    Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
                    Hôm qua, 14:39
                  • dinhthuong80
                    Trả lời cho Tiếng Anh cho người Việt
                    bởi dinhthuong80
                    Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

                    Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
                    Hôm qua, 14:28
                  • bqviet
                    Trả lời cho Tiếng Anh cho người Việt
                    bởi bqviet
                    Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
                    21-02-2025, 20:26
                  • mèomướp
                    Trả lời cho Tiếng Anh cho người Việt
                    bởi mèomướp
                    Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
                    21-02-2025, 12:32
                  • vi van pham
                    Trả lời cho Tiếng Anh cho người Việt
                    bởi vi van pham
                    Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                    Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                    20-02-2025, 21:31
                  • bqviet
                    Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                    bởi bqviet
                    Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
                    20-02-2025, 17:22
                  • dinhthuong80
                    Trả lời cho Tiếng Anh cho người Việt
                    bởi dinhthuong80
                    Tiếng Anh, Đình Thường phải nói là rất tệ, khiến việc giao tiếp đời thường thôi cũng khó chứ nói gì về kĩ thuật.

                    Nhân tiện, nhờ các bạn, các bác xem giúp thư ĐT viết thế này liệu có thể gửi tới địa chỉ nhận hay chăng,...
                    20-02-2025, 11:52
                  Đang tải...
                  X