標(biāo)題:
DS1302的C語(yǔ)言源代碼 直接移植使用
[打印本頁(yè)]
作者:
sworderchina
時(shí)間:
2022-3-23 11:06
標(biāo)題:
DS1302的C語(yǔ)言源代碼 直接移植使用
#include "ds1302.h"
char ds1302_data_read()
{
return P22;
}
/***************************************************
程序驅(qū)動(dòng)
****************************************************/
void DS1302_Write(unsigned char D)
{
unsigned char i;
for(i=0;i<8;i++)
{
ds1302_data(D&0x01);
ds1302_sclk(1);
ds1302_sclk(0);
D=D>>1;
}
}
//寫地址和數(shù)據(jù)
void WDS1302(unsigned char ucAddr, unsigned char ucDat)
{
ds1302_rst(0);
ds1302_sclk(0);
ds1302_rst(1);
DS1302_Write(ucAddr);
DS1302_Write(ucDat);
ds1302_sclk(1);
ds1302_sclk(0);
ds1302_data(1);
}
//讀一串?dāng)?shù)據(jù)
unsigned char DS1302_Read()
{
unsigned char TempDat=0,i;
for(i=0;i<8;i++)
{
TempDat>>=1;
if(ds1302_data_read()) TempDat=TempDat|0x80;
ds1302_sclk(1);
ds1302_sclk(0);
}
return TempDat;
}
//寫地址然后讀數(shù)據(jù)
unsigned char read1302(unsigned char ucAddr)
{
unsigned char ucDat;
ds1302_rst(0);
ds1302_sclk(0);
ds1302_rst(1);
DS1302_Write(ucAddr);
ucDat=DS1302_Read();
ds1302_sclk(1);
ds1302_rst(0);
ds1302_data(1);
return ucDat;
}
/***************************************************
ds1302程序初始化
****************************************************/
void w_ram()
{
WDS1302(0x8e,0x00);//關(guān)閉保護(hù)寄存器
WDS1302(0xc0,0x51); //ram里面的一個(gè)數(shù)據(jù)
WDS1302(0x8e,0x80);//開保護(hù)
}
unsigned char g_ram()
{
unsigned char g_ram_data;
g_ram_data=read1302(0xc1);
return g_ram_data;
}
void init_time()
{
if(g_ram()!=0x51)
{
w_ram();
WDS1302(0x8e,0x00);//關(guān)閉保護(hù)寄存器
WDS1302(0x80,0x00);//set秒
WDS1302(0x82,0x36);//set分
WDS1302(0x84,0x20);//set時(shí)
WDS1302(0x8A,0x03);//set星期
WDS1302(0x86,0x16);//set日
WDS1302(0x88,0x03);//set月
WDS1302(0x8C,0x22);//set年
WDS1302(0x90,0xa5);//充電
WDS1302(0x8e,0x80);//開保護(hù)
}
}
void w_nian(unsigned char a)
{
unsigned char b;
b=a/10*16+a%10;
WDS1302(0x8e,0x00);//關(guān)閉保護(hù)寄存器
WDS1302(write_nian,b);//年
WDS1302(0x8e,0x80);//開保護(hù)
}
void w_yue(unsigned char a)
{
unsigned char b;
b=a/10*16+a%10;
WDS1302(0x8e,0x00);//關(guān)閉保護(hù)寄存器
WDS1302(write_yue,b);//年
WDS1302(0x8e,0x80);//開保護(hù)
}
void w_ri(unsigned char a)
{
unsigned char b;
b=a/10*16+a%10;
WDS1302(0x8e,0x00);//關(guān)閉保護(hù)寄存器
WDS1302(write_tian,b);//年
WDS1302(0x8e,0x80);//開保護(hù)
}
void w_fen(unsigned char a)
{
unsigned char b;
b=a/10*16+a%10;
WDS1302(0x8e,0x00);//關(guān)閉保護(hù)寄存器
WDS1302(0x82,b);//set分
WDS1302(0x8e,0x80);//開保護(hù)
}
void w_shi(unsigned char a)
{
unsigned char b;
b=a/10*16+a%10;
WDS1302(0x8e,0x00);//關(guān)閉保護(hù)寄存器
WDS1302(0x84,b);//set時(shí)
WDS1302(0x8e,0x80);//開保護(hù)
}
void w_miao(unsigned char a)
{
unsigned char b;
b=a/10*16+a%10;
WDS1302(0x8e,0x00);//關(guān)閉保護(hù)寄存器
WDS1302(write_second,b);//setmiao
WDS1302(0x8e,0x80);//開保護(hù)
}
void w_zhou(unsigned char a)
{
unsigned char b;
b=a/10*16+a%10;
WDS1302(0x8e,0x00);//關(guān)閉保護(hù)寄存器
WDS1302(write_zhou,b);//setmiao
WDS1302(0x8e,0x80);//開保護(hù)
}
unsigned char get_fen()
{
unsigned char a,b;
a=read1302(read_fen);
b=a%16+a/16*10;
return b;
}
unsigned char get_shi()
{
unsigned char a=0,b=0;
a=read1302(read_xiaoshi);
b=a%16+a/16*10;
return b;
}
unsigned char get_miao()
{
unsigned char a=0,b=0;
a=read1302(read_miao);
b=a%16+a/16*10;
return b;
}
unsigned char get_nian()
{
unsigned char a=0,b=0;
a=read1302(read_nian);
b=a%16+a/16*10;
return b;
}
unsigned char get_yue()
{
unsigned char a=0,b=0;
a=read1302(read_yue);
b=a%16+a/16*10;
return b;
}
unsigned char get_ri()
{
unsigned char a=0,b=0;
a=read1302(read_tian);
b=a%16+a/16*10;
return b;
}
unsigned char get_zhou()
{
unsigned char a=0,b=0;
a=read1302(read_zhou);
b=a%16+a/16*10;
return b;
}
復(fù)制代碼
源代碼免費(fèi)提供給大家,直接使用
51hei.png
(2.89 KB, 下載次數(shù): 43)
下載附件
2022-3-23 16:10 上傳
上圖2個(gè)文件下載 c代碼(請(qǐng)自行移植到各單片機(jī)平臺(tái)):
DS1302.zip
(1.48 KB, 下載次數(shù): 39)
2022-3-23 11:05 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
m6092820
時(shí)間:
2022-5-4 10:45
感謝樓主無(wú)私奉獻(xiàn)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1