?? ds1302.txt
字號:
unsigned char ReadDataFromClock()
{
//unsigned char Frame;
P3MDOUT&=0xfe;
TDATA=1; //configure it as input pin
TSCLK=0;
TSCLK=0;
ACC0=TDATA;
TSCLK=1;
TSCLK=1;
TSCLK=0;
TSCLK=0;
ACC1=TDATA;
TSCLK=1;
TSCLK=1;
TSCLK=0;
TSCLK=0;
ACC2=TDATA;
TSCLK=1;
TSCLK=1;
TSCLK=0;
TSCLK=0;
ACC3=TDATA;
TSCLK=1;
TSCLK=1;
TSCLK=0;
TSCLK=0;
ACC4=TDATA;
TSCLK=1;
TSCLK=1;
TSCLK=0;
TSCLK=0;
ACC5=TDATA;
TSCLK=1;
TSCLK=1;
TSCLK=0;
TSCLK=0;
ACC6=TDATA;
TSCLK=1;
TSCLK=1;
TSCLK=0;
TSCLK=0;
ACC7=TDATA;
TSCLK=1;
TSCLK=1;
timetemp = ACC;
P3MDOUT |= 0x01;
return(timetemp);
}
void SendDataToClock(void) //send a byte data "ClockData"(Omni_Parameter) to clock
{
//char i;
P3MDOUT|=0x01;
for (timetemp=0; timetemp<8; timetemp++)
{
TDATA=ClockData&0x01;
TSCLK=1;
TSCLK=1;
TSCLK=0;
TSCLK=0;
ClockData=ClockData>>1;
}
}
void SendAddrToClock(void) //send a byte address "ClockAddr"(Omni_parameter) to clock
{
//char i;
P3MDOUT|=0x01;
for (timetemp=0; timetemp<8; timetemp++)
{
TDATA=ClockAddr&0x01;
TSCLK=1;
TSCLK=1;
TSCLK=0;
TSCLK=0;
ClockAddr=ClockAddr>>1;
}
}
//send a byte data "ClockData" to a location whose address is "ClockAddr"
void SendDateTimeByte()
{
TSCLK=0;
TRST=0;
TDATA=1;
TRST=1;
SendAddrToClock(); //send address
TDATA=1;
SendDataToClock(); //send data
TRST=0;
TSCLK=0;
}
//send a address "ClockAddr",then can receive a data
unsigned char ReadDateTimeByte(void)
{
//char Result;
TSCLK=0;
TRST=0;
TDATA=1;
TRST=1;
SendAddrToClock();
TDATA=1;
timetemp = ReadDataFromClock();
TRST=0;
TSCLK=0;
return(timetemp);
}
/**********************************************************************
//firstly set clock time "Year,Month,Date,Hour,Minute,Second",
//it is BCD code type;then you can set time using the below program
**********************************************************************/
void SendTime()
{
ClockAddr=0x8e;
ClockData=0x00;
SendDateTimeByte();
ClockAddr=0x80;
ClockData=second;
SendDateTimeByte(); //send second
ClockAddr=0x82;
ClockData=minute;
SendDateTimeByte(); //send minute
ClockAddr=0x84;
ClockData=hour;
SendDateTimeByte(); //send hour
ClockAddr=0x86;
ClockData=date;
SendDateTimeByte(); //send day
ClockAddr=0x88;
ClockData=month;
SendDateTimeByte(); //send month
ClockAddr=0x8c;
ClockData=year;
SendDateTimeByte(); //send year
}
//*****************************************************************
//change format from BCD to HEX
//*****************************************************************
void ReadTime(void)
{
ClockAddr=0x8e;
ClockData=0x00;
SendDateTimeByte();
ClockAddr=0x81;
second=ReadDateTimeByte(); /*capture second*/
second=(((second&0x70)>>4)*10)+(second&0x0f);
ClockAddr=0x83;
minute=ReadDateTimeByte(); /*capture minute*/
minute=(((minute&0x70)>>4)*10)+(minute&0x0f);
ClockAddr=0x85;
hour=ReadDateTimeByte(); /*capture hour*/
hour=(((hour&0x30)>>4)*10)+(hour&0x0f);
ClockAddr=0x87;
date=ReadDateTimeByte(); /*capture day*/
date=(((date&0x30)>>4)*10)+(date&0x0f);
ClockAddr=0x89;
month=ReadDateTimeByte(); /*capture month*/
month=(((month&0x10)>>4)*10)+(month&0x0f);
ClockAddr=0x8d;
year=ReadDateTimeByte(); /*capture year*/
year=(((year&0xf0)>>4)*10)+(year&0x0f);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -