sbit MERCLK=P1^0;
sbit TIMERIO=P1^ 1;
sbit TIMERRST=P1^2;
sbit WDT=P1^3;
uchar bdata DS 1302dat;
sbit ds1302datHbit=DSI302ciat"7;
sbit ds1302datBit=DS1302dat^0;
uchar bdata DS 1302adr;
shit ds1302adrBit=DS1302adr^0;
uchar idata SEC;
uchar idata MIN;
uchar idata HR;
uchar idata DATE;
uchar idata MONTH;
uchar idata DAY;
uehar idata YEAR;
void delay(uchar time)
{
uchar i,j;
for(i=0;i<time;i++)
{
for(j=0;j<time;j++)
{
WDT=~ WDT;
}
}
void writeDS1302(uchar d5RanlAdr,UChar ds1302data)
{
uchar i;
TIMERCLK=0;
delay(2);
TIMERRST=1;
delay(2);
DS1302adr=dsRamAdr;
DS 1302dat=ds 1302data;
fof(i=0;i<3;i++)
{
CY=O;
TIMERCLK=0;
CY=ds13G2adrBit;
TIMERIO=CY;
delay(2);
TIMERCLK=1;
DS 1302adr=DS 1302adr>>1;
}
for(i=0;i<8;i++)
{
CY=0;
TIMERCLK=0;
CY=ds1302datBit;
TIMERIO=CY;
delay(2);
TIMERCLK=1 ;
DS-1302dat=DS-1302dat>>1;
}
TIMERRST=0;
delay(2);
TIMERCLK=0;
}
uchar readDS-1302(uchar DS 1302Adr)
{
uchar i;
TIMERCLK=0;
delay(2);
TIMERRST=1;
delay(2);
DS 1302adr=DS 1302Adr;
for(i=0;i<8;i++)
{
TIMERCLK=0;
TIMERIO=ds-1302adrBit;
delay(2);
TIMERCLK=1;
DS-1302adr=DS-1302adr>>1;
TIMERIO=1;
for(i=0;i<7;i++)
{
TIMERCLK=0;
ds-1302datHbit=TIMERIO;
TIMERCLK=1;
DS 1302dat=DS 1302dat; l;
TIMERCLK=0;
ds-1302datHbit=TIMERIO;
}
TIMERRST=0;
delay(2);
TIMERCLK=0;
return DS 1302dat;
}
TIMERCLK=0;
Ds 1302datHbit=TIMERIO;
void DS 13021nitial(void)
〔
uchar ds1302st;
TIMERCLK=0;
TIMERRST=0;
ds1302st=readDS1302(0x0c1);
if(ds1302st!=0x55)
{
W DT=~WDT;
writeDS1302(0x8e,0x00);
writeDS 1302(0x82,0x00);
writcDS1302(0x84,0x1b);
writeDS1302(0x86,0x19);
WDT=~WDT;
writeDS 1302(0x88,0x09);
\vriteDS1302(0x8a,0x02);
writeDS 1302(0x8c, 0x00);
WDT=~WDT;
writeDS1302(0x90,0x0a6);
(vriteDS 1302 (0x0C0,0X55);
writeDS 1302(0x80;0x00);
void readRTC(void)
{
MONTH=readDS 1302(0x89);
DATE=readDS 1302(0x87);
HR=readDS 1302(0x85);
MIN=readDS 1302(0x83);
}