⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1302.h

📁 LED+8952=万年历
💻 H
字号:
/********************************************
文件名:ds1302RTC芯片操作
作者  :袁洋洋
*********************************************/
/***端口说明*********************************/
#define uchar unsigned char
#define uint  unsigned int
sbit rst=P1^5;
sbit sclk=P1^6;
sbit io=P1^7;
sbit  ACC0 = ACC^0;
sbit  ACC7 = ACC^7;
/**向ds1302写一个字节************************/
void inbyte(uchar d) 	
{ 
    uchar i;
    ACC = d;
    for(i=8; i>0; i--)
    {
        io = ACC0;           	//相当于汇编中的 RRC
        sclk = 1;
        sclk = 0;
        ACC = ACC >> 1; 
    } 
}
/***从ds1302读一个字节*************************/
uchar outbyte(void) 	
{ 
    uchar i;
    for(i=8; i>0; i--)
    {
        ACC = ACC >>1;         			//相当于汇编中的 RRC 
        ACC7 = io;
        sclk = 1;
        sclk = 0;
    } 
    return(ACC); 
}
/***向ds1302的某个地址写入数据*********************/
void write_1302(uchar add,uchar dat)
{
 rst=0;
 sclk=0;
 rst=1;
 inbyte(add);
 inbyte(dat);
 rst=0;
 sclk=1;
}
/****从ds1302的某个地址读取数据*********************/
uchar read_1302(uchar add)
{uchar dat;
 rst=0;
 sclk=0;
 rst=1;
 inbyte(add);
 dat=outbyte();
 rst=0;
 sclk=1;
 return dat;
}

/*****从ds1302中读出时间****************************/
char gettime_1302(uchar add)
{char time,value;
 value=read_1302(add);
 time=((value&0x70)>>4)*10+(value&0x0f);//顺序为秒,分,时,日,月,星期,年
 return time;							//地址为81h,83h,85h,87h,89h,8bh,  8dh
}
/*****ds1302的写保护设定****************************/
void setprotect_ds1302(bit flag)        //是否写保护:wp=0可以写操作,wp=1禁止写操作
{
	if(flag)
		write_1302(0x8E,0x80);
	else
		write_1302(0x8E,0x00);
}
/****设定ds1302的时间*****************************/

void settime_ds1302(uchar add,uchar value)        // 设置时间函数
{   											//顺序为秒,分,时,日,月,星期,年
	setprotect_ds1302(0);   					//地址为80h,82h,84h,86h,88h,8ah,8ch
	write_1302(add, ((value/10)<<4 | (value%10))); 
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -