📄 clock.h
字号:
//#ifndef _REAL_TIMER_DS1302
//#define _REAL_TIMER_DS1302
/*****************************预定义**************************************/
#define uchar unsigned char
#define uint unsigned int
/***************************DS1302管脚配置****************************/
sbit clock_rst = P2^4;
sbit clock_io = P2^3;
sbit clock_sclk= P2^2;
/*********************为了编程方便定义的位变量**********************/
sbit ACC0 = ACC ^ 0;
sbit ACC7 = ACC ^ 7;
#define second_address 0x80
#define minute_address 0x82
#define hour_address 0x84
#define day_address 0x86
#define month_address 0x88
#define week_address 0x8A
#define year_address 0x8C
/********************************************************************************************
* 函数名称:Clock_Write_Byte()
* 功 能:向时钟DS1302写入一个字节
* 入口参数:temp
* 出口参数:无
*********************************************************************************************/
void Clock_Write_Byte(uchar temp)
{
uchar i;
ACC=temp;
for(i=8; i>0; i--)
{
clock_io = ACC0; //相当于汇编中的 RRC
clock_sclk = 1;
clock_sclk = 0;
ACC = ACC >> 1;
}
}
/********************************************************************************************
* 函数名称:Clock_Read_Byte()
* 功 能:从时钟DS1302读取一个字节
* 入口参数:无
* 出口参数:ACC
*********************************************************************************************/
uchar Clock_Read_Byte(void)
{
uchar i;
for(i=8; i>0; i--)
{
ACC = ACC >>1; //相当于汇编中的 RRC
ACC7= clock_io;
clock_sclk = 1;
clock_sclk = 0;
}
return(ACC);
}
/********************************************************************************************
* 函数名称:Clock_Write_Time()
* 功 能:向时钟DS1302写入一个时间
* 入口参数:时间地址
* 出口参数:无
*********************************************************************************************/
void Clock_Write_Time(uchar address, uchar temp)
{
clock_sclk=0;
clock_rst=0;
clock_rst=1;
Clock_Write_Byte(address);
Clock_Write_Byte(temp);
clock_rst=0;
clock_sclk=1;
}
/********************************************************************************************
* 函数名称:Clock_Read_Time()
* 功 能:从时钟DS1302读出一个时间
* 入口参数:时间地址
* 出口参数:时间数据
*********************************************************************************************/
uchar Clock_Read_Time(uchar address)
{
uchar temp=0;
clock_sclk=0;
clock_rst=0;
clock_rst=1;
Clock_Write_Byte( address|0x01 );
temp=Clock_Read_Byte();
clock_rst=0;
clock_sclk=1;
return(temp);
}/********************************************************************************************
* 函数名称:Clock_Set_Time()
* 功 能:设置时间
* 入口参数:时间地址 时间数据
* 出口参数:
*********************************************************************************************/
void Clock_Set_Time(uchar *point )
{
Clock_Write_Time(0x8e,0x00); //WP=0 写操作
Clock_Write_Time(second_address, *point); //秒
point++;
Clock_Write_Time(minute_address,*point); //分
point++;
Clock_Write_Time(hour_address, *point); //时
point++;
Clock_Write_Time(day_address, *point); //日
point++;
Clock_Write_Time(month_address, *point); //月
point++;
Clock_Write_Time(week_address, *point); //年
point++;
Clock_Write_Time(year_address, *point); //年
Clock_Write_Time(0x8e,0x80); //WP=1 写保护
}
/********************************************************************************************
* 函数名称:Clock_Get_Time()
* 功 能:从时钟DS1302读出时间
* 入口参数:时间地址
* 出口参数:时间数据
*********************************************************************************************/
void Clock_Get_Time(uchar *point)
{
*point = Clock_Read_Time(second_address);
point++;
*point = Clock_Read_Time(minute_address);
point++;
*point = Clock_Read_Time(hour_address);
point++;
*point = Clock_Read_Time(day_address);
point++;
*point = Clock_Read_Time(month_address);
point++;
*point = Clock_Read_Time(week_address);
point++;
*point = Clock_Read_Time(year_address);
}
/********************************************************************************/
//#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -