DS1302 时钟操作

来源:互联网 发布:侠客风云传读条优化 编辑:程序博客网 时间:2024/05/01 03:57
//----------------------------------------------------------//模块名称:DS1302.h//模块功能:时钟操作函数//----------------------------------------------------------sbit RET  = P1^0;sbit SCLK = P1^1;sbit IO  = P1^2;//----------------------------------------------------------//函数名称:void Write1302(unsigned char addr,dat)//函数功能:根据指定地址写入一字节的数据//----------------------------------------------------------void Write1302(unsigned char addr,dat){unsigned char  i;RET=0;SCLK=0;RET=1;//发送地址 for(i=0;i<8;i++){IO=(addr&0x01);addr>>=1;SCLK=0;SCLK=1;}//发送数据 for(i=0;i<8;i++){IO=(dat&0x01);dat>>=1;SCLK=0;SCLK=1;}RET=0;}//----------------------------------------------------------//函数名称:unsigned char Read1302(unsigned char addr)//函数功能:根据指定地址读出一字节的数据//----------------------------------------------------------unsigned char Read1302(unsigned char addr){unsigned char i,temp=0,dat;RET=0;SCLK=0;RET=1;//发送地址 for(i=0;i<8;i++){IO=(addr&0x01);addr>>=1;SCLK=0;SCLK=1;}//读取数据 for(i=8; i>0; i--){SCLK = 0;ACC = ACC>>1; ACC7 = IO;SCLK = 1; }temp=ACC; dat=temp/16;temp=temp%16;dat=dat*10+temp;return dat;   }//----------------------------------------------------------//函数名称:WriteControl(unsigned char number)//函数功能:向慢速充电器写入控制字节//----------------------------------------------------------void WriteControl(unsigned char number){Write1302(0x90,number);}//----------------------------------------------------------//函数名称:void WriteTime()//函数功能:更新时钟的时间//----------------------------------------------------------void WriteTime(){Write1302(WRITE_PROTECT,0X00);//禁止写保护Write1302(WRITE_SECOND,Second);//秒Write1302(WRITE_MINUTE,Minute);//分Write1302(WRITE_HOUR,Hour);//时Write1302(WRITE_DAY,Day);//日Write1302(WRITE_MONTH,Month);//月Write1302(WRITE_YEAR,Year);//年Write1302(WRITE_WEEK,Week);//星期WriteControl(0xa6);//慢速充电Write1302(WRITE_PROTECT,0X80);//允许写保护}//----------------------------------------------------------//函数名称:void ReadTime()//函数功能:从时钟中获取时间//----------------------------------------------------------void ReadTime(){Second = Read1302(READ_SECOND);//秒Minute = Read1302(READ_MINUTE);//分Hour = Read1302(READ_HOUR);//时Day = Read1302(READ_DAY);//日Month = Read1302(READ_MONTH);//月Year = Read1302(READ_YEAR);//年Week = Read1302(READ_WEEK);//星期}


原创粉丝点击