直接上代码吧
void write_ds(uchar add,uchar date)
{
dsds=1;
dsrw=1;
dsas=1;
dscs=0;
P0=add;
dsas=0;
dsrw=0;
P0=date;
dsrw=1;
dsas=1;
dscs=1;
}
uchar read_ds(uchar add)
{
uchar ds_date;
dsds=1;
dsrw=1;
dsas=1;
dscs=0;
P0=add;
dsas=0;
dsds=0;
//P0=0xff;
ds_date=P0;
dsds=1;
dsas=1;
dscs=1;
return ds_date;
}
void init_shizhong()
{
write_ds(0x0A,0x20); //打开振荡器并允许RTC计时
write_ds(0x0B,0x06); //关闹钟
}
void main()
{
init_shizhong();
write_ds(4,6);
write_ds(0,11);
write_ds(2,10);
write_ds(4,22);
write_ds(0x00,0x00); //秒
write_ds(0x02,0x17); //分
write_ds(0x04,0x0c); //小时
shi_gao=read_ds(4)/10;
shi_di=read_ds(4)%10;
fen_gao=read_ds(2)/10;
fen_di=read_ds(2)%10;
while(1)
display(shi_gao,shi_di,fen_gao,fen_di);
}
无论怎么写,write的格式我也换了下(如上),显示的数据永远是0402,这个数据是我第一次读出来的数据,当时正好是下午4点2分,然后这数据再也不变了,而且写不进去,不知道是怎么回事,第一次用这个芯片,还是新手,请指教。
|