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

📄 ds1302.c

📁 STM8s
💻 C
字号:
/*========================================
========================================*/
#include "DS1302.h"


void Write1302(unsigned char add,unsigned char data)
{
	unsigned char i,data_h,data_l;
	data_h = (data/10)<<4;
	data_l = data_h|(data%10);
	DS1302_OUT_PP;
	
	DS1302_CE_L;
	DS1302_SCLK_L;
	DS1302_CE_H;
	for(i=0;i<8;i++)
	{
		DS1302_SCLK_L;
		if(add&0x01)
			DS1302_DIO_H;
		else
			DS1302_DIO_L;
		add>>=1;
		DS1302_SCLK_H;
	}
	for(i=0;i<8;i++)
	{
		DS1302_SCLK_L;
		if(data_l&0x01)
			DS1302_DIO_H;
		else
			DS1302_DIO_L;
		data_l>>=1;
		DS1302_SCLK_H;
	}
	DS1302_CE_L;
}
/*======================================
======================================*/
unsigned char Read1302(unsigned char add)
{
	unsigned char i,temp_h,temp_l;
	DS1302_OUT_PP;
	add += 1;
	DS1302_CE_L;
	DS1302_SCLK_L;
	DS1302_CE_H;
	for(i=0;i<8;i++)
	{
		DS1302_SCLK_L;
		if(add&0x01)
			DS1302_DIO_H;
		else
			DS1302_DIO_L;
		add>>=1;
		DS1302_SCLK_H;
	}
	DS1302_DIO_IN_PU_NO_IT;
	for(i=0;i<8;i++)
	{
		if(DS1302_DIO_IN)
			temp_l |= 0x80;
		DS1302_SCLK_H;
		nop();
		nop();
		nop();
		temp_l >>=1;
		DS1302_SCLK_L;
	}
	DS1302_CE_L;
	temp_h = ((temp_l>>4)*10)+(temp_l&0x0f);
	return temp_h;
}
void Set1302(unsigned char year,unsigned char month,unsigned char date,
unsigned char day,unsigned char hour,unsigned char min)
{
	Write1302(PROTECT,0);
	//Write1302(SECOND,second);
	Write1302(SECOND,0x00);//启动时钟,0x80停止时钟
	Write1302(MINUTE,min);
	Write1302(HOUR,hour);
	Write1302(DATE,date);
	Write1302(MONTH,month);
	Write1302(DAY,day);//week
	Write1302(YEAR,year);//年
//	Write1302(YEAR,year);
	Write1302(PROTECT,0x80);
}




⌨️ 快捷键说明

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