📄 ds1302.h
字号:
void delay(uint time)
{
uint i,j;
for(i=time;i>0;i--)
for(j=100;j>0;j--);
}
uchar read_bit()
{
uchar i;
_nop_();_nop_();_nop_();
for(i=0;i<8;i++)
{
ACC_7=DS1302_DAT;
DS1302_SCK=1;
_nop_();_nop_();_nop_();
ACC>>=1;
DS1302_SCK=0; //下降沿读取数据
_nop_();_nop_();_nop_();
}
return ACC;
}
void write_bit(uchar temp)
{
uchar i;
uchar tmp;
tmp=temp;
for(i=0;i<8;i++)
{
DS1302_SCK=0;
_nop_();_nop_();
DS1302_DAT=(tmp&0x01);
DS1302_SCK=1;
_nop_();_nop_();
tmp=tmp>>1;
}
}
void write1302(uchar add,uchar dat)
{
DS1302_CE=0;//CE=0,禁止数据发送
DS1302_SCK=0;//时钟线拉为低,准备时钟
DS1302_CE=1;//CE=1,允许发送数据
write_bit(add);//按位发地址
write_bit(dat);//按位发数据
DS1302_SCK=1;
DS1302_CE=0;
}
void DS1302_init()
{
write1302(Wp,0x00); //禁止写保护
write1302(Writesec,0x55); //写秒
write1302(Writemin,0x58); //写分
write1302(Writehour,0x21); //写时
write1302(Writeday,0x17); //写天
write1302(Writemon,0x08); //写月
write1302(Writeweek,0x00); //写星期
write1302(Writeyear,0x23); //写年
}
uchar read1302(uchar addr)
{
uchar tmep;
uchar tmph,tmpl;
DS1302_CE=0;
DS1302_SCK=0;
DS1302_CE=1;
write_bit(addr);
tmep=read_bit();
DS1302_SCK=1;
DS1302_CE=0;
tmph=tmep/16;
tmpl=tmep%16;
tmep=tmph*10+tmpl;
return tmep;
}
void gettime()
{
uchar tmp;
tmp=read1302(Readsec);
t[4]=tmp/10;
t[5]=tmp%10;
tmp=read1302(Readmin);
t[2]=tmp/10;
t[3]=tmp%10;
tmp=read1302(Readhour);
t[0]=tmp/10;
t[1]=tmp%10;
tmp=read1302(Readday);
t[10]=tmp/10;
t[11]=tmp%10;
tmp=read1302(Readmon);
t[8]=tmp/10;
t[9]=tmp%10;
tmp=read1302(Readyear);
t[6]=tmp/10;
t[7]=tmp%10;
tmp=read1302(Readweek);
t[12]=tmp/10;
t[13]=tmp%10;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -