程序如下。我想写入小时,可是不管怎么弄,都无效,求高手帮忙。
#include <reg51.h>
#include "My function.c"
#include <intrins.h>
sbit RST=P3^5 ;
sbit SCLK=P3^6;
sbit DSIO=P3^4;
//unsigned char Ds1302Read(unsigned char addr);
void Ds1302Write(unsigned char addr,unsigned dat);
void write()
{
Ds1302Write(0x8e,0x00);
Ds1302Write(0x84,0x17);
Ds1302Write(0x84,0x17);
Ds1302Write(0x8e,0x80);
}
void Ds1302Write(unsigned char addr,unsigned dat)
{
unsigned char n;
SCLK=0;//先将SCLK置低电平。
_nop_();
RST=1; //然后将RST(CE)置高电平。
_nop_();
for(n=0;n<8;n++)//开始传送八位地址命令
{
DSIO=addr&0x01;//数据从低位开始传送
SCLK=1;//数据在上升沿时,DS1302读取数据
_nop_();
SCLK=0;
_nop_();
addr>>=1;
}
for(n=0;n<8;n++)//写入8位数据
{
DSIO=dat&0x01;
SCLK=1;//数据在上升沿时,DS1302读取数据
_nop_();
SCLK=0;
_nop_();
dat>>=1;
}
RST=0;//传送数据结束
_nop_();
}
#include <reg51.h>
#include "My function.c"
#include <intrins.h>
sbit RST=P3^5 ;
sbit SCLK=P3^6;
sbit DSIO=P3^4;
//unsigned char Ds1302Read(unsigned char addr);
void Ds1302Write(unsigned char addr,unsigned dat);
void write()
{
Ds1302Write(0x8e,0x00);
Ds1302Write(0x84,0x17);
Ds1302Write(0x84,0x17);
Ds1302Write(0x8e,0x80);
}
void Ds1302Write(unsigned char addr,unsigned dat)
{
unsigned char n;
SCLK=0;//先将SCLK置低电平。
_nop_();
RST=1; //然后将RST(CE)置高电平。
_nop_();
for(n=0;n<8;n++)//开始传送八位地址命令
{
DSIO=addr&0x01;//数据从低位开始传送
SCLK=1;//数据在上升沿时,DS1302读取数据
_nop_();
SCLK=0;
_nop_();
addr>>=1;
}
for(n=0;n<8;n++)//写入8位数据
{
DSIO=dat&0x01;
SCLK=1;//数据在上升沿时,DS1302读取数据
_nop_();
SCLK=0;
_nop_();
dat>>=1;
}
RST=0;//传送数据结束
_nop_();
}