Thông báo

Collapse
No announcement yet.

Giúp mình code C này với !!!!!

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

  • Giúp mình code C này với !!!!!

    CODE:


    unsigned char read_I2C(bit ACK_Bit)
    {
    unsigned char Data=0;
    int i;
    SDA = 1;
    for (i=0;i<8;i++)
    {
    SCL = 1;
    Data<<= 1;
    Data = (Data | SDA);
    SCL = 0;
    nop();
    }

    if (ACK_Bit == 1)
    SDA = 0; // Send ACK
    else
    SDA = 1; // Send NO ACK

    nop();nop();

    //ACK
    SCL = 1;
    nop();nop();
    SCL = 0;

    return Data;
    }

    đây là hàm lấy dữ liệu từ DS1307, mình ko hiểu tại sao lại cho SDA = 1; ( phần in đậm trong code ). Bạn nào biết giúp mình với ????????


    code:

    #include "RTC/rtc.h"

    xdata unsigned char RTC_ARR[28]; // second,minute,.....,year,sum


    unsigned char BCD2HEX(unsigned int bcd)
    {
    unsigned char temp;
    tempbcd>>8)*100)|((bcd>>4)*10)|(bcd&0x0f);
    return temp;

    }
    void delay()
    {
    int i,j;
    for(i =0;i<100;i++)
    {
    for(j=0;j<100;j++)
    {
    }
    }
    }
    void main()
    {

    P1 = 0x00;
    P3 = 0xFF;

    RTC_ARR[0] = 0x40;
    RTC_ARR[1] = 0x19;
    RTC_ARR[2] = 0x10;
    RTC_ARR[3] = 0x03;
    RTC_ARR[4] = 0x03;
    RTC_ARR[5] = 0x02;
    RTC_ARR[6] = 0x10;
    RTC_ARR[7] = 0x14;

    RTC_ARR[8] = 0x40;
    RTC_ARR[9] = 0x19;
    RTC_ARR[10] = 0x10;
    RTC_ARR[11] = 0x03;
    RTC_ARR[12] = 0x03;
    RTC_ARR[13] = 0x02;
    RTC_ARR[14] = 0x10;
    RTC_ARR[15] = 0x14;

    RTC_ARR[16] = 0x40;
    RTC_ARR[17] = 0x19;
    RTC_ARR[18] = 0x10;
    RTC_ARR[19] = 0x03;
    RTC_ARR[20] = 0x03;
    RTC_ARR[21] = 0x02;
    RTC_ARR[22] = 0x10;
    RTC_ARR[23] = 0x14;

    RTC_ARR[24] = 0x40;
    RTC_ARR[25] = 0x19;
    RTC_ARR[26] = 0x10;
    RTC_ARR[27] = 0x03;





    write_RTC(&RTC_ARR[0]); // Set RTC


    while(1)
    {
    read_RTC(&RTC_ARR[0]);


    P3=RTC_ARR[0];//BCD2HEX(RTC_ARR[0]);
    delay();

    //DelayMs(1000); // delay about 1 second
    }
    }

    đây là chương trình DS1307 với 8051. mình không hiểu xdata unsigned char là kiểu dữ liệu như thế nào ?

    thanks mọi người trước nha ! Cố gắng giúp mình với
    " Muốn biết phải hỏi, muốn giỏi phải học "

  • #2
    là đưa chân SDA lên mức cao.

    Xem kỹ giao thức I2C
    Vẫn biết mỗi lần xa là một lần về lại...

    Comment

    Về tác giả

    Collapse

    fan.8051 Say mê Điện tử Tìm hiểu thêm về fan.8051

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

    Collapse

    • Andrea14
      Vấn đề về tốc độ quay
      bởi Andrea14
      Chào mọi người,

      Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
      12-12-2025, 12:42
    • bqviet
      Trả lời cho Đấu tắt điện cho máy tính bảng
      bởi bqviet
      Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
      06-12-2025, 17:17
    • nguyendinhvan
      Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
      bởi nguyendinhvan
      Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
      05-12-2025, 19:59
    Đang tải...
    X