📄 ds130.c
字号:
#include <iom128.h>
#include <comp_a90.h>
#define ds1302_RST 0x04
#define ds1302_IO 0x02
#define ds1302_SCLK 0x01
//写一个字节的数据到1302
void write_cmd(unsigned char cmd)
{
unsigned char i,j;
DDRE|=ds1302_IO;
for(i=0;i<8;i++)
{
PORTE&=~ds1302_SCLK;
j=cmd&1;
if(j)
PORTE|=ds1302_IO;
else
PORTE&=~ds1302_IO;
PORTE|=ds1302_SCLK;
cmd>>=1;
}
}
//从1302中读一个字节的数据
unsigned char read_cmd(void)
{
unsigned char i,jj,dd;
DDRE&=~ds1302_IO;
PORTE|=ds1302_IO;
for(i=0;i<8;i++)
{
dd>>=1;
PORTE&=~ds1302_SCLK;
PORTE&=~ds1302_SCLK;
jj=PINE;
jj&=ds1302_IO;
PORTE|=ds1302_SCLK;
PORTE|=ds1302_SCLK;
if(jj==ds1302_IO)
dd|=0x80;
else
dd&=~0x80;
}
DDRE|=ds1302_IO;//shu ru
return dd;
}
//写数据
void write_1302(unsigned char cmd,unsigned char dd)
{
DDRE|=ds1302_SCLK;
DDRE|=(ds1302_RST|ds1302_IO);
PORTE&=~ds1302_SCLK; //ds1302_SCLK=0;
PORTE|=ds1302_RST;
write_cmd(cmd);
write_cmd(dd);
PORTE&=~ds1302_SCLK;//ds1302_SCLK=0;
PORTE&=~ds1302_RST;
}
//读数据
unsigned char read_1302(unsigned char cmd)
{
unsigned char dd;
PORTE&=~ds1302_SCLK;//ds1302_SCLK=0;
PORTE|=ds1302_RST;
write_cmd(cmd);
dd=read_cmd();
PORTE&=~ds1302_SCLK;//ds1302_SCLK=0;
PORTE&=~ds1302_RST;
return dd;
}
void readtime(unsigned char buf[])
{
unsigned char year;
buf[0] = '2';
buf[1] = '0';
year = read_1302(0x8d);
buf[2] = year/16 + '0';
buf[3] = year%16 + '0';
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -