📄 ds12c877a.c
字号:
#include "regX52.H"
#include"pr/TWJ.h"
#define ctrl P1
#define DataUsb P3
#define DS12887RD 0x02 //p1.1 DS
#define DS12887ALE 0x10 //p1.4 AS
#define DS12887WR 0x08 //p1.2
#define DS12887CS 0x20 //p1.5
#define SecondAddr 0
#define MinuAddr 2
#define HourAddr 4
#define WeekAddr 6
#define DateAddr 7
#define MonthAddr 8
#define YearAddr 9
#define RegisterA 10
#define RegisterB 11
#define RegisterC 12
#define RegisterD 13
#define output_LowP3(tempdata) ctrl&=(~tempdata)
#define output_HighP3(tempdata) ctrl|=tempdata
BYTE RealTimeGroup[6];
//////////////////////////////////////////////////////////////////////////////////////
void InitalDS12887IO(void)
{
//IO2DIR|=0x13ff0000;
//PINSEL0&=0xfffff3ff;
//IO0DIR|=0x00000020;
output_HighP3(DS12887CS);
output_HighP3(DS12887WR);
output_LowP3(DS12887RD);
output_LowP3(DS12887ALE);
}
/////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
void WriteDataToDS12887(BYTE addr,BYTE needwritedata)
{
output_LowP3(DS12887CS);
output_HighP3(DS12887ALE);
//delay(20);
DataUsb=addr;
delay(80);
output_LowP3(DS12887ALE);
DataUsb=needwritedata;
delay(80);
output_LowP3(DS12887WR);
delay(80);
output_HighP3(DS12887WR);
delay(80);
output_HighP3(DS12887CS);
}
///////////////////////////////////////////////////////////////////////////
BYTE ReadDataFromDS12887(BYTE addr)
{
BYTE tempdata;
// delay(20);
output_HighP3(DS12887RD);
output_LowP3(DS12887CS);
delay(8);
output_HighP3(DS12887ALE);
delay(8);
DataUsb=addr;
delay(8);
output_LowP3(DS12887ALE);
delay(8);
DataUsb=0xff;
output_LowP3(DS12887RD);
delay(8);
tempdata=DataUsb;
output_HighP3(DS12887RD);
output_HighP3(DS12887CS);
return tempdata;
} ////////////////////////////////////////////////////////////////
void InitalRegisterAB(void)
{
WriteDataToDS12887(RegisterA,0x20);
WriteDataToDS12887(RegisterB,0x06);
}
///////////////////////////////////////////////////////////////////////////////////////////
void GetAllRealTime()
{
//RealTimeGroup[5]=ReadDataFromDS12887(SecondAddr);
//RealTimeGroup[0]=ReadDataFromDS12887(YearAddr);
//RealTimeGroup[1]=ReadDataFromDS12887(MonthAddr);
//RealTimeGroup[2]=ReadDataFromDS12887(DateAddr);
RealTimeGroup[3]=ReadDataFromDS12887(HourAddr);
RealTimeGroup[4]=ReadDataFromDS12887(MinuAddr);
/*SBUF=RealTimeGroup[3];
while(!TI);
TI=0;
SBUF=RealTimeGroup[4];
while(!TI);
TI=0; */
ca[0]= RealTimeGroup[3]/10;
ca[1]= RealTimeGroup[3]%10;
ca[2]=RealTimeGroup[4]/10;
ca[3]=RealTimeGroup[4]%10;
// RealTimeGroup[5]=ReadDataFromDS12887(SecondAddr);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
void SetAllTime(BYTE temp[6])
{
//WriteDataToDS12887(YearAddr,temp[0]);
//WriteDataToDS12887(MonthAddr,temp[1]);
//WriteDataToDS12887(DateAddr,temp[2]);
WriteDataToDS12887(HourAddr,temp[3]);
WriteDataToDS12887(MinuAddr,temp[4]);
WriteDataToDS12887(SecondAddr,temp[5]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -