📄 2ds12887new.c
字号:
#include <reg52.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
void get_clock(void); // 读取RTC时间
void set_clock(void); // 设置RTC时间
sbit CS=P1^0;
uchar time[7]={0x05,0x11,0x21,0x22,0x05,0x00,0x02};
void delay(void)
{
uint i=1000;
for(i=1000;i>0;i--)
{;; }
}
uchar BCD_D(uchar n)
{
uchar m=n&0x0f;
n>>=4;
m+=n*10;
return m;
}
// 设置RTC时间
void set_clock(void)
{
P0=0XFF;
CS=0;
XBYTE[10]=0x70;
XBYTE[11]=0x8a;
XBYTE[9]=(time[0]/10)*16+time[0]%10; // 年
XBYTE[8]=(time[1]/10)*16+time[1]%10; // 月
XBYTE[7]=(time[2]/10)*16+time[2]%10; // 日
XBYTE[4]=(time[3]/10)*16+time[3]%10; // 时
XBYTE[2]=(time[4]/10)*16+time[4]%10; // 分
XBYTE[0]=(time[5]/10)*16+time[5]%10; // 秒
XBYTE[10]=0x2f;
XBYTE[11]=0x7a;
CS=1;
}
// 读取RTC时间
void get_clock(void)
{
uchar k,i;
i=0;
P0=0;
CS=0;
do
{
k=XBYTE[10]&0x80;
if(k==0)
{break;}
i++;
}while(i<255);
time[0]=BCD_D(XBYTE[9]); // 年
time[1]=BCD_D(XBYTE[8]); // 月
time[2]=BCD_D(XBYTE[7]); // 日
time[3]=BCD_D(XBYTE[4]); // 时
time[4]=BCD_D(XBYTE[2]); // 分
time[5]=BCD_D(XBYTE[0]); // 秒
CS=1;
}
/*
main()
{
uchar k,a=9,b=78;
P1=0XF0;
time[0]=5;
time[1]=11;
time[2]=21;
time[3]=23;
time[4]=20;
time[5]=5;
//set_clock();
for(k=0;k<6;k++)
time[k]=2;
b=time[0];
get_clock();
a=time[0];
while(1);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -