当前位置:首页 > 单片机 > 单片机
[导读]#include#include"DS1302.h"#includevoidds1302_init(void){PORTX=0x00;DDRX=0x07;}voidwrite_ds1302_byte(unsignedchardat){unsignedchari;for(i=0;i>1;SCK=1;}}voidwrite_ds1302(unsignedcharadd,unsignedchardat)

#include

#include"DS1302.h"

#include

voidds1302_init(void)

{

PORTX=0x00;

DDRX=0x07;

}

voidwrite_ds1302_byte(unsignedchardat)

{

unsignedchari;

for(i=0;i<8;i++)

{

SCK=0;

IO_out=dat&0x01;

dat=dat>>1;

SCK=1;

}

}

voidwrite_ds1302(unsignedcharadd,unsignedchardat)

{

RST=1;

delay_us(1);

write_ds1302_byte(add);

write_ds1302_byte(dat);

RST=0;

delay_us(2);

IO_out=0;

SCK=0;

}

unsignedcharread_ds1302(unsignedcharadd)

{

unsignedchari,value=0;

RST=1;

write_ds1302_byte(add);

IO_setting=0;

for(i=0;i<8;i++)

{

value=value>>1;

SCK=0;

SCK=0;//必须给两次!!

if(IO_in)value=value|0x80;

SCK=1;

}

IO_setting=1;

SCK=0;

RST=0;

delay_us(2);

IO_out=0;

returnvalue;

}

voidset_rtc(unsignedchar*time_data)

{

unsignedchari,j,write_add;

for(i=0;i<7;i++)

{

j=time_data[i]/10;

time_data[i]=time_data[i];

time_data[i]=time_data[i]+j*16;

}

write_ds1302(0x8e,0x00);//去除写保护

for(i=0,write_add=0x8c;i<7;i++,write_add-=2)

write_ds1302(write_add,time_data[i]);

write_ds1302(0x8e,0x80);

}

voidread_rtc(unsignedchar*time_data)

{

unsignedchari,j,read_add;

write_ds1302(0x8e,0x00);

for(i=0,read_add=0x8d;i<7;i++,read_add-=2)

time_data[i]=read_ds1302(read_add);

for(i=0;i<7;i++)

{

j=time_data[i]/16;

time_data[i]%=16;

time_data[i]+=j*10;

}

write_ds1302(0x8e,0x80);

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭