اطلاعیه

Collapse
No announcement yet.

مشکل در ds1307 با کامپایلر mikroc

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در ds1307 با کامپایلر mikroc

    یک برنامه برای ds1307 با کامپایلر mikroc تو یک سایت پیدا کردم که به گفته نویسندش جواب میده... با میکرو 16f877a
    ولی من تو پروتئوس تست میکنم جواب نمیده خیلی هم باهاش ور رفتم ولی نشد
    خودم برنامشو با ccs نوشتم ولی الان با mikroc نیاز دارم
    سورس برنامه با شکل مدارشو میزارم اگه کسی چیزی به ذهنش رسید ممنون میشم کمکم کنه.

    //Sample code for
    //DS1307 RTC Interfacing with PIC16F877A
    //Coded by punkky@gmail.com
    //Compiler: mikroC 8.0.0
    //http://picnote.blogspot.com
    //05/01/2009
    //Use with your own risk

    unsigned short read_ds1307(unsigned short address );
    void write_ds1307(unsigned short address,unsigned short w_data);
    unsigned short sec;
    unsigned short minute;
    unsigned short hour;
    unsigned short day;
    unsigned short date;
    unsigned short month;
    unsigned short year;
    unsigned short data;
    char time[9];
    char ddate[11];

    unsigned char BCD2UpperCh(unsigned char bcd);
    unsigned char BCD2LowerCh(unsigned char bcd);

    void main(){

    I2C_Init(100000); //DS1307 I2C is running at 100KHz
    PORTB = 0;
    TRISB = 0; // Configure PORTB as output
    TRISC = 0xFF;
    Lcd_Init(&PORTB); // Initialize LCD connected to PORTB
    Lcd_Cmd(Lcd_CLEAR); // Clear display
    Lcd_Cmd(Lcd_CURSOR_OFF); // Turn cursor off
    Lcd_Out(1, 1, "TIME:"
    Lcd_Out(2, 1, "DATE:"

    //Set Time
    write_ds1307(0,0x80); //Reset second to 0 sec. and stop Oscillator
    write_ds1307(1,0x10); //write min 27
    write_ds1307(2,0x01); //write hour 14
    write_ds1307(3,0x02); //write day of week 2:Monday
    write_ds1307(4,0x05); // write date 17
    write_ds1307(5,0x01); // write month 6 June
    write_ds1307(6,0x09); // write year 8 --> 2008
    write_ds1307(7,0x10); //SQWE output at 1 Hz
    write_ds1307(0,0x00); //Reset second to 0 sec. and start Oscillator

    while(1)
    {
    sec=read_ds1307(0); // read second
    minute=read_ds1307(1); // read minute
    hour=read_ds1307(2); // read hour
    day=read_ds1307(3); // read day
    date=read_ds1307(4); // read date
    month=read_ds1307(5); // read month
    year=read_ds1307(6); // read year

    time[0] = BCD2UpperCh(hour);
    time[1] = BCD2LowerCh(hour);
    time[2] = ':';
    time[3] = BCD2UpperCh(minute);
    time[4] = BCD2LowerCh(minute);
    time[5] = ':';
    time[6] = BCD2UpperCh(sec);
    time[7] = BCD2LowerCh(sec);
    time[8] = '\0';

    ddate[0] = BCD2UpperCh(date);
    ddate[1] = BCD2LowerCh(date);
    ddate[2] ='/';
    ddate[3] = BCD2UpperCh(month);
    ddate[4] = BCD2LowerCh(month);
    ddate[5] ='/';
    ddate[6] = '2';
    ddate[7] = '0';
    ddate[8] = BCD2UpperCh(year);
    ddate[9] = BCD2LowerCh(year);
    ddate[10] = '\0';

    Lcd_Out(1,6,time);
    Lcd_Out(2,6,ddate);
    Delay_ms(50);
    }
    }

    unsigned short read_ds1307(unsigned short address)
    {
    I2C_Start();
    I2C_Wr(0xd0); //address 0x68 followed by direction bit (0 for write, 1 for read) 0x68 followed by 0 --> 0xD0
    I2C_Wr(address);
    I2C_Repeated_Start();
    I2C_Wr(0xd1); //0x68 followed by 1 --> 0xD1
    data=I2C_Rd(0);
    I2C_Stop();
    return(data);
    }

    unsigned char BCD2UpperCh(unsigned char bcd)
    {
    return ((bcd >> 4) + '0'
    }

    unsigned char BCD2LowerCh(unsigned char bcd)
    {
    return ((bcd & 0x0F) + '0'
    }
    void write_ds1307(unsigned short address,unsigned short w_data)
    {
    I2C_Start(); // issue I2C start signal
    //address 0x68 followed by direction bit (0 for write, 1 for read) 0x68 followed by 0 --> 0xD0
    I2C_Wr(0xD0); // send byte via I2C (device address + W)
    I2C_Wr(address); // send byte (address of DS1307 location)
    I2C_Wr(w_data); // send data (data to be written)
    I2C_Stop(); // issue I2C stop signal
    }


    #2
    پاسخ : مشکل در ds1307 با کامپایلر mikroc

    برو به این سایت یک کتابخانه داره مثل کد ویژنه دستوراش
    http://sepehrelect.epage.ir/fa/modul...t_Page.37.html

    وقتی تو پروتئوس میبندیش یکم صبر کن تا ds بخونه فکر کنم این مشکل مال پروتئوسه که دیر میخونه وگر نه تو عمل سریع جواب میده

    دیدگاه

    لطفا صبر کنید...
    X