עם הרכיב: DS12C887+
אני מחפש קוד לדוגמא שעובר ושרטוט אם אפשר.
אני אחרי קריאה מעמיקה של הdatasheet ואל נסיונות לא מצליח עדיין.


P0_3 = 1; //rtc_cs
P0_0 = 1; //rtc_as
P0_1 = 1; //rw
P0_2 = 0; //ds
P1=0;
P0_3 = 0; //rtc_cs
rtc_delay(10);
P0_3 = 1; //rtc_cs
P0_0 = 0; //rtc_as
P0_1 = 1; //rw
P0_2 = 1; //ds
P1=0x00;
P0_3 = 0; //rtc_cs
rtc_delay(10);

unsigned char rtc_get_sec()
{
unsigned char tmp;
tmp = rtc_read(0);
return tmp;
}
void rtc_write(unsigned char ad, unsigned char da)
{
P0_1 = 1; //rw
P0_2 = 1; //ds
P0_3 = 1; //rtc_cs
P0_0 = 1; //rtc_as
P1=ad;
P0_3 = 0; //rtc_cs
P0_1 = 0; //rw
P0_0 = 0; //rtc_as
P1=da;
P0_3 = 1; //rtc_cs
P0_1 = 1; //rw
P0_0 = 1; //rtc_as
return;
}
unsigned char rtc_read(unsigned char ad)
{
unsigned char a=0;
P0_1 = 1; //rw
P1=ad;
P0_2 = 1; //ds
P0_0 = 1; //rtc_as
P0_3 = 0; //rtc_cs
P0_0 = 0; //rtc_as
P0_2 = 0; //ds
P1=0xff;
a=P1;
P0_3 = 1; //rtc_cs
P0_1 = 1; //rw
P0_0 = 1; //rtc_as
return a;
}
void rtc_delay(unsigned int dly_time)
{
int i=0,i1=0;
if ( dly_time == 0 ) return; // Return if no delaytime is assigned
for(i=0;i<dly_time;i++) // delay1
{
for(i1=0;i1<dly_time;i1++); // delay2
}
return;
}
void rtc_init(unsigned char sec, unsigned char min, unsigned char hour, unsigned char day, unsigned char month, unsigned char year)
{
rtc_write(0x0a,0xa0);
rtc_write(0x0b,0x16);
rtc_write(0,sec);
rtc_write(2,min);
rtc_write(4, hour);
rtc_write(7, day);
rtc_write(8, month);
rtc_write(9, year);
return;
}







משתמשים הגולשים בפורום זה: Bing [Bot], xalmek ו 9 אורחים