背景图片
十速单片机驱动DS1302程序 - 啊和的博客

十速单片机驱动DS1302程序 - 啊和的博客 十速单片机驱动DS1302程序 - 啊和的博客

十速单片机驱动DS1302程序

#include <REGtenxTM52F5276B.H>
#include<intrins.h>   //包含_nop_()函数定义的头文件
#include    "DS1302.H"

/************************************************
*名称:DS1302_Sendchar()
*描述:向DS1302写字节
*变量:dat
************************************************/
void DS1302_Sendchar(uchar dat)
{
	uchar i;
	for(i=0;i<8;i++)
	{
		SCL = 0;
		IO = (bit)(dat & 0x01);
		dat >>= 1;
		SCL = 1;
	}
}
 
/************************************************
*名称:DS1302_Rendchar2()
*描述:从ds1302读取字节
*变量:dat
************************************************/
uchar DS1302_Readchar()
{
	uchar dat,i;
	for(i=0;i<8;i++)
	{
		if(IO == 1)
		{
			dat = dat|0x80;
		}
		SCL = 1;
		dat >>= 1;
		SCL = 0;
	}
	IO = 0;//将读1个字节函数最后加上I/O=0即可消除85显示
	return dat;
}
 
/************************************************
*名称:DS1302_WriteADD()
*描述:向1302寄存器写数据
*变量:com,dat
************************************************/
void DS1302_WriteADD(uchar com,uchar dat)
{
	CE = 0;
	SCL = 0;
	CE = 1;
	DS1302_Sendchar(com);
	DS1302_Sendchar(dat);
	SCL = 1;
	CE = 0;
}
 
/************************************************
*名称:DS1302_ReadADD()
*描述:从1302指定寄存器内读数据
*变量:com
************************************************/
uchar DS1302_ReadADD(uchar com)
{
	uchar dat;
	CE = 0;
	SCL = 0;
	CE = 1;
	DS1302_Sendchar(com);
	dat = DS1302_Readchar();
	SCL = 1;
	CE = 0;
	return dat;
}
 
/************************************************
*名称:DS1302_Init()
*描述:初始化DS1302
*变量:无
************************************************/
void Init_DS1302()
{
//	uchar flag;
//	flag = DS1302_ReadADD(0x81);
//	if(flag & 0x80)
//	{
	
		DS1302_WriteADD(0x8e,0x00);
		//DS1302_WriteADD(0x80,((10/10)<<4|(10%10))&0x7f);
		//DS1302_WriteADD(0x82,((12/10)<<4|(12%10)));
		//DS1302_WriteADD(0x84,((13/10)<<4|(13%10)));
		//DS1302_WriteADD(0x86,((14/10)<<4|(14%10)));
		//DS1302_WriteADD(0x88,((1/10)<<4|(1%10)));
		//DS1302_WriteADD(0x8c,((1/10)<<4|(1%10)));   
        DS1302_WriteADD(0x90, 0xa6);	
		DS1302_WriteADD(0x8e,0x80);
	
//	}
}
//设置时间

void Set_1302_Time(unsigned char year,unsigned char month,unsigned char day,unsigned char week,unsigned char hour1,unsigned char min1,unsigned char second1)
{
	    DS1302_WriteADD(0x8e,0x00);
		DS1302_WriteADD(0x80,((second1/10)<<4|(second1%10))&0x7f);
		DS1302_WriteADD(0x82,((min1/10)<<4|(min1%10)));
		DS1302_WriteADD(0x84,((hour1/10)<<4|(hour1%10)));
		DS1302_WriteADD(0x86,((day/10)<<4|(day%10)));
		DS1302_WriteADD(0x88,((month/10)<<4|(month%10)));
		DS1302_WriteADD(0x8c,((year/10)<<4|(year%10))); 

	    DS1302_WriteADD(0x8a,((week/10)<<4|(week%10))); 
		DS1302_WriteADD(0x8e,0x80);
	
}

评论 0

挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论