📄 ds1302.c
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit sclk=P2^0;
sbit dat=P2^1;
sbit rst=P2^2;
uchar readclk(void )
{ uint i;
uchar temp=0; //读数据为控制指令字后下一个sclk脉冲的下降沿
for(i=0;i<8;i++)
{
temp>>=1;
if(dat) temp|=0x80;
else;
sclk=1;
sclk=0;
}
return(temp);
}
void writeclk(uchar Data)
{
uint i;
for(i=0;i<8;i++) //控制指令字输入后的下一个sclk时钟的上升沿时数据被写入DS1302
{
dat=Data&0x01;
sclk=1;
sclk=0;
Data>>=1;
}
}
void writebyte(uchar addr,uchar Data)
{
addr&=0xfe; //保证最低位为0写操作
rst=0;sclk=0;rst=1;
writeclk(addr);
writeclk(Data);
rst=0;
}
uchar readbyte(uchar addr)
{
addr|=0x01; //保证最低位为1读操作
rst=0;sclk=0;rst=1;
writeclk(addr);
return( readclk());
rst=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -