سلام دوستان .من نیاز به یک برنامه تو پروتییوس دارم که dc1307 با کامپایلر میکروسی شبیه سازی کنم.فقط هم میلادی.کسی هس لطف کنه کمکم کنه؟
اطلاعیه
Collapse
No announcement yet.
ساعت ds1307 با میکرو سی MIKROc
Collapse
X
-
پاسخ : ساعت 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]
دیدگاه