STC89S51单片机 DS1302时钟显示在LCD液晶屏幕上
1.根据时序图和单字节读写 写读写程序
void ds1302write(uchar addr, uchar dat)//写入函数
{
//要读2次 一次读地址 一次读数据
uchar n;
RST = 0;//可以看到CE先置0 延时一会后再置1
_nop_();
SCLK = 0;//开始先置0
_nop_();
RST = 1; //
_nop_();
//读地址
for (n=0; n<8; n++)//
{
//下降沿时 ds1302会自动把数据放到IO口上
DSIO = addr & 0x01;//取最低位 然后右移 8次 读取8位
addr >>= 1;
SCLK = 1;//然后产生时钟信号开始读取
_nop_();
SCLK = 0;
_nop_();
}
//读数据
for (n=0; n<8; n++)//
{
DSIO = dat & 0x01;//同上
dat >>= 1;
SCLK = 1;//
_nop_();
SCLK = 0;
_nop_();
}
//最后置0
RST = 0;
_nop_();
}
//从keli复制过来是注释是乱码 就不重新写了 同上
unsigned char ds1302read(unsigned char addr)8//读函数
{
uchar n,dat,dat1;
RST = 0;
_nop_();
SCLK = 0;
_nop_();
RST = 1;//
_nop_();
for(n=0; n<8; n++)//
{
DSIO = addr & 0x01;//
addr >>= 1