⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1302.txt

📁 时钟芯片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 + -