|
講解:
DS1302和單片機(jī)的連接很簡(jiǎn)單。只需一根復(fù)位線,一根時(shí)鐘線,一根數(shù)據(jù)線即可。同時(shí)它本身還需要接一個(gè)32.768KHz的晶振來(lái)提供時(shí)鐘源。對(duì)于晶振的兩端可以分別接一個(gè)6PF左右的電容以提高晶振的精確度。同時(shí)可以在第8腳接上一個(gè)3.6V的可充電的電池。當(dāng)系統(tǒng)正常工作時(shí)可以對(duì)電池進(jìn)行涓流充電。當(dāng)系統(tǒng)掉電時(shí),DS1302由這個(gè)電池提供的能量繼續(xù)工作。
程序:
/******************************************************************************
*Function: static void v_DS1302Write_f(uint8 Content ) *
*Description:向DS1302寫一個(gè)字節(jié)的內(nèi)容 *
*Parameter:uint8 Content : 要寫的字節(jié) *
* *
******************************************************************************/
staticvoid v_DS1302Write_f( uint8 Content )
{
uint8 i ;
for( i = 8 ; i > 0 ; i-- )
{
if( Content & 0x01 )
{
DS1302_IO_HIGH
}
else
{
DS1302_IO_LOW
}
Content >>= 1 ;
DS1302_SCLK_HIGH
DS1302_SCLK_LOW
}
}
/******************************************************************************
*Function: static uint8 v_DS1302Read_f(void ) *
*Description: 從DS1302當(dāng)前設(shè)定的地址讀取一個(gè)字節(jié)的內(nèi)容 *
*Parameter: *
*Return: 返回讀出來(lái)的值(uint8) *
******************************************************************************/
staticuint8 v_DS1302Read_f( void )
{
uint8 i, ReadValue ;
DS1302_IO_HIGH
for( i = 8 ; i > 0 ; i-- )
{
ReadValue >>= 1 ;
if( DS1302_IO_READ )
{
ReadValue |= 0x80 ;
}
else
{
ReadValue &= 0x7f ;
}
DS1302_SCLK_HIGH
DS1302_SCLK_LOW
}
return ReadValue ;
}
|
|