📄 1302._c
字号:
/*-------------------------------------------------------------*-
File name: 1302.c
Description:本模块为实时时钟模块。
Function List:
1.void pDS1302_Write(uchar reg,uchar data) 写实时时钟函数
2.uchar pDS1302_Read(uchar reg) 读实时时钟函数
3.void pDS1302_Init(void) 1302初始化函数
-----------------------------------------------------------------
实时时钟模块
-*--------------------------------------------------------------*/
#include <iom16v.h>
#include <macros.h>
#include "1302.h"
#include "main.h"
void pDS1302_Write(unsigned char reg,unsigned char data)
{
unsigned char i;
mDS1302IO_Out;
mSetDS1302IO;
mClrDS1302RST;
wait;
mClrDS1302SCK;
wait;
mSetDS1302RST;
wait;
for(i=0;i<8;i++)
{
if(reg&BIT(i))
mSetDS1302IO;
else
mClrDS1302IO;
wait;
mSetDS1302SCK;
wait;
mClrDS1302SCK;
wait;
}
for(i=0;i<8;i++)
{
if(data&BIT(i))
mSetDS1302IO;
else
mClrDS1302IO;
wait;
mSetDS1302SCK;
wait;
mClrDS1302SCK;
wait;
}
wait;
mClrDS1302RST;
wait;
}
unsigned char pDS1302_Read(unsigned char reg)
{
unsigned char data=0,i;
mDS1302IO_Out;
reg+=1;//读标志
mSetDS1302IO;
mClrDS1302RST;
wait;
mClrDS1302SCK;
wait;
wait;
mSetDS1302RST;
wait;
for(i=0;i<8;i++)
{
if(reg&BIT(i))
mSetDS1302IO;
else
mClrDS1302IO;
wait;
mSetDS1302SCK;
wait;
mClrDS1302SCK;
wait;
}
mDS1302IO_In;
wait;
wait;
for(i=0;i<8;i++)
{
if(mTestDS1302IO)
data |= BIT(i);
else
data &= ~BIT(i);
mSetDS1302SCK;
wait;
mClrDS1302SCK;
wait;
}
wait;
mClrDS1302RST;
wait;
return(data);
}
void pDS1302_Init(void)
{
pDS1302_Write(mDS1302_CONTROL_Reg,0x00); //关闭写保护
//pDS1302_Write(mDS1302_SEC_Reg,0x80); //暂停
pDS1302_Write(mDS1302_CHARGER_Reg,0x00); //涓流充电 A9
//pDS1302_Write(mDS1302_HOUR_Reg,0x14); //时
//pDS1302_Write(mDS1302_MIN_Reg,0x25); //分
//pDS1302_Write(mDS1302_SEC_Reg,0x20); //秒
pDS1302_Write(mDS1302_CONTROL_Reg,0x80); //打开写保护
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -