اطلاعیه

Collapse
No announcement yet.

ساعت ds1307 با میکرو سی MIKROc

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ساعت ds1307 با میکرو سی MIKROc

    سلام دوستان .من نیاز به یک برنامه تو پروتییوس دارم که dc1307 با کامپایلر میکروسی شبیه سازی کنم.فقط هم میلادی.کسی هس لطف کنه کمکم کنه؟

    #2
    پاسخ : ساعت ds1307 با میکرو سی MIKROc

    این تابع کد ویژن هستش که من قدیما تبدیل کردم برای mikroc

    [code=c]




    unsigned char rtc_read(unsigned char address)
    {
    unsigned char date;
    asm CLRWDT;
    i2c1_start();
    i2c1_Repeated_Start();
    i2c1_wr(0xd0);
    i2c1_wr(address);
    i2c1_start();
    i2c1_wr(0xd1);
    date=i2c1_Rd(0);
    i2c1_stop();
    return date;
    }


    void rtc_write(unsigned char address,unsigned char date)
    {
    asm CLRWDT;
    i2c1_start();
    i2c1_Repeated_Start();
    i2c1_wr(0xd0);
    i2c1_wr(address);
    i2c1_wr(date);
    i2c1_stop();
    }



    void rtc_init(unsigned char rs,unsigned char sqwe,unsigned char out)
    {
    asm CLRWDT;
    rs&=3;
    if (sqwe) rs|=0x10;
    if (out) rs|=0x80;
    i2c1_start();
    i2c1_wr(0xd0);
    i2c1_wr(7);
    i2c1_wr(rs);
    i2c1_stop();
    }





    void rtc_get_time(unsigned char *hour, unsigned char *min, unsigned char *sec,
    unsigned char *week_day, unsigned char *date ,unsigned char *month ,unsigned char *year)
    {
    asm CLRWDT;
    i2c1_start();
    i2c1_wr(0xd0);
    i2c1_wr(0);
    i2c1_Repeated_Start();
    i2c1_wr(0xd1);
    *sec=bcd2dec(i2c1_Rd(1));
    *min=bcd2dec(i2c1_Rd(1));
    *hour=bcd2dec(i2c1_Rd(1));

    *week_day=bcd2dec(i2c1_Rd(1));
    *date=bcd2dec(i2c1_Rd(1));
    *month=bcd2dec(i2c1_Rd(1));
    *year=bcd2dec(i2c1_Rd(0));

    i2c1_stop();
    }





    /////////////////////////////////////
    void rtc_set_time(unsigned char hour,unsigned char min,unsigned char sec)
    {
    asm CLRWDT;
    i2c1_start();
    i2c1_Repeated_Start();
    i2c1_wr(0xd0);
    i2c1_wr(0);
    i2c1_wr(dec2bcd(sec));
    i2c1_wr(dec2bcd(min));
    i2c1_wr(dec2bcd(hour));
    i2c1_stop();
    }



    void rtc_get_date(unsigned char *date,unsigned char *month,unsigned char *year)
    {
    asm CLRWDT;
    i2c1_start();
    i2c1_Repeated_Start();
    i2c1_wr(0xd0);
    i2c1_wr(4);
    i2c1_start();
    i2c1_wr(0xd1);
    *date=bcd2dec(i2c1_Rd(1));
    *month=bcd2dec(i2c1_Rd(1));
    *year=bcd2dec(i2c1_Rd(0));
    i2c1_stop();
    }

    void rtc_set_date(unsigned char date,unsigned char month,unsigned char year)
    {
    asm CLRWDT;
    i2c1_start();
    i2c1_Repeated_Start();
    i2c1_wr(0xd0);
    i2c1_wr(4);
    i2c1_wr(dec2bcd(date));
    i2c1_wr(dec2bcd(month));
    i2c1_wr(dec2bcd(year));
    i2c1_stop();
    }
    [/code]

    دیدگاه

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