Thông báo

Collapse
No announcement yet.

Vấn đề mô phỏng pic877 và ds1307

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

  • Vấn đề mô phỏng pic877 và ds1307

    Các đại ca chỉ giúp em, em điên với nó lắm rồi.
    Chả là em định làm cái lịch vạn niên,chương trình chính ngắn gọn thôi

    while(true)
    {
    read();
    for(i=1;i<=300;i++)
    {
    porta=0x01;
    portd=phut;
    delay_ms(10);


    porta=0x02;
    portd=gio;
    delay_ms(10);

    porta=0x04;
    portd=thu;
    delay_ms(10);

    porta=0x08;
    portd=ngay;
    delay_ms(10);

    porta=0x10;
    portd=thang;
    delay_ms(10);

    porta=0x20;
    portd=nam;
    delay_ms(10);
    }
    }

    Chương Trình Đọc
    void read()
    {
    i2c_start();
    i2c_write(0xD0);
    i2c_write(0x00);
    i2c_start();
    i2c_write(0xD1);
    giay=i2c_read();
    phut=i2c_read();
    gio=i2c_read();
    thu=i2c_read();
    ngay=i2c_read();
    thang=i2c_read();
    nam=i2c_read();
    i2c_stop();
    }



    nhưng khi quét lần 1 thì hiển thị đúng, quét lần 2 porta chạy đúng nhưng portd toàn set mức cao,lần 3 lại bình thường,...
    Không biết tại cái gì hay do mô phỏng bị trục trặc.
    Và 1 điều nữa là portc chỉ sử dụng chan sda và scl giao tiếp với ds1307, vậy mấy chân còn lại của portc thì làm sao để sử dụng như là chân I/O đây (phần set_tris_c(????) )

  • #2
    giay = i2c_read(1);
    phut = i2c_read(1);
    gio = i2c_read(1);
    thu = i2c_read(1);
    ngay = i2c_read(1);
    thang = i2c_read(1);
    nam = i2c_read(0);

    thêm tham số ack vào thì chạy ổn . em k hiểu , ai biết chỉ dùm với.

    Comment


    • #3
      Nguyên văn bởi TL_pro Xem bài viết
      giay = i2c_read(1);
      phut = i2c_read(1);
      gio = i2c_read(1);
      thu = i2c_read(1);
      ngay = i2c_read(1);
      thang = i2c_read(1);
      nam = i2c_read(0);

      thêm tham số ack vào thì chạy ổn . em k hiểu , ai biết chỉ dùm với.
      bạn tìm hiểu về giao thức i2c thì sẽ hiểu ngay.
      (^_^) hoangnv.3i@gmail.com

      Comment


      • #4
        Nguyên văn bởi TL_pro Xem bài viết
        giay = i2c_read(1);
        phut = i2c_read(1);
        gio = i2c_read(1);
        thu = i2c_read(1);
        ngay = i2c_read(1);
        thang = i2c_read(1);
        nam = i2c_read(0);

        thêm tham số ack vào thì chạy ổn . em k hiểu , ai biết chỉ dùm với.
        bạn đọc liên tục trong giao tiếp I2C thì phải có bit ack nó mới hiểu
        Còn về portC thì cứ sử dụng lệnh output với các chân còn lại bình thường vì CCS khi bạn dùng lệnh output nó sẽ tự động đi set bit trong tris tương ứng với pin bạn output.

        Comment


        • #5
          ra là đọc liên tục thì phải có ack.em mò trong tài liệu mà ko thấy nói đến. chắc đến lúc dạy thầy mới nói.hi.cám ơn.

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X