📄 pcf8583.c
字号:
/*
*********************************************************************************************************
* File Name:PCF8583.c
*
* Last Modified Data:2005-06-22
*
* Last Version:V1.0
*
* Description:PCF8583时钟芯片接口函数
*
*********************************************************************************************************
*/
#define _PCF8583_
#include "..\Inc\Include.h"
/*
********************************************************************************************************
* Function:TimeRest
*
* Descriptions:复位PCF8583时钟芯片
*
* Input:无
*
* OutPut:无
*******************************************************************************************************
*/
void InitPCF8583(void)
{
uchar x;
x = READ_TIME(0xF0);
if (x!=0x23) // 判断PCF8583是否第一次上电...
{
WriteTimeNow(); // 将TimeNow中时间写入
WriteTimeNow();
WRITE_TIME(0xF0,0x23); // 置标志位
}
else
{
ReadTimeNow();
//ReadTimeNow();
}
}
/*
********************************************************************************************************
* Function:ReadTimeNow
*
* Descriptions:读时间
*
* Input:无
*
* OutPut:无
*******************************************************************************************************
*/
void ReadTimeNow(void)
{
uchar i, x, tmp;
IIWR(PCF_8583, 0x00, 0x40); // 保持当前时间单元
for (i=1; i<6; i++)
{
x = READ_TIME(0x07-i); // 命令从0x02开始,分别读 年 月 日 时 分 秒
if (MaxTime[i] > 39) tmp = 0x70;
else if(MaxTime[i] > 19) tmp = 0x30;
else tmp = 0x10;
TimeNow[i] = ((x & tmp) >> 4) * 10 + (x & 0x0f);
} // 将BCD码转换成十进制
x = READ_TIME(0x05);
TimeNow[0] = TimeNow[0] + ((x&0xC0)>>6);
IIWR(PCF_8583,0x00,0x00);
}
/*
********************************************************************************************************
* Function:WriteTimeNow
*
* Descriptions:写时间
*
* Input:无
*
* OutPut:无
*******************************************************************************************************
*/
void WriteTimeNow(void)
{
uchar i, x;
IIWR(PCF_8583, 0x00, 0x80); // 停止计数
for (i=1; i<6; i++)
{
x = (TimeNow[i] / 10) * 16 + (TimeNow[i] % 10);
// 将十进制转换成BCD码依次写入
IIWR(PCF_8583, 0x07-i, x);
}
IIWR(PCF_8583,0x00,0x00); // 启动计数
}
/*---------------------------------------End-----------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -