打印

关于AVR单片机读写DS1302时钟芯片的问题,跪求解答!

[复制链接]
1317|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1061zou|  楼主 | 2013-4-27 20:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
1061zou|  楼主 | 2013-4-27 22:00 | 只看该作者

使用特权

评论回复
板凳
1061zou|  楼主 | 2013-4-27 22:14 | 只看该作者
#include"DEFF.h"
#include"ds1302.h"
#include"LCD_1602.h"

uchar time[7]=
{
13,5,4,26,21,11,20
};//年,周,月,日,时,分,秒
uchar write_add[7]=
{
0x8c,0x8a,0x88,0x86,0x84,0x82,0x80
};//写寄存器地址 r/w=0
  uchar read_add[7]=
{
0x8d,0x8b,0x89,0x87,0x85,0x83,0x81
};//读寄存器地址 r/w=1
  uchar dis[]=
{0,0,0,0,0,0,0,0};
void write_ds1302_byte(uchar a)//写一字节
{ uchar i;
for(i=0;i<8;i++)
{

  sck0;//写操作为上升沿发送,给‘0’使稳定

  if((a&0x01)==1)
  io1;
  else
  io0;
  delay_us(20);
  //先准备好数据
  sck1;//拉高发送
  delay_us(20);
  a=a>>1;//右移
}
}
void write_ds1302(uchar add,uchar dat)//写(双字节)//地址、数据
{
/* rst0;
  sck0;
rst_out;
sck_out;
io_out;*/
io_out;
rst0;
delay_us(20);
rst1;
delay_us(20);
write_ds1302_byte(add);
write_ds1302_byte(dat);
rst0;//停止
delay_us(20);
io_in;
/* io1;//释放
sck1;//释放*/
}
uchar read_ds1302(uchar add)
{ uchar a;uchar value;
/*rst_out;
sck_out;
io_in;*/
io_out;
rst0;
delay_us(20);

sck0;
delay_us(20);
rst1;
delay_us(20);
write_ds1302_byte(add);
for(a=0;a<8;a++)
{ value=value>>1;//只需移位七次
  sck0;
  if(PINA&BIT(4))
  value=value|0x80;
  sck1;
  delay_us(20);

}
rst0;
delay_us(20);
sck0;
delay_us(20);
sck1;
delay_us(20);
io1;
delay_us(20);
return value;
}
void set_rtc()
{ uchar i,j;
for(i=0;i<7;i++)
{
  j=time[i]/10;
  time[i]=time[i]%10;
  time[i]=time[i]+j*16;
}
write_ds1302(0x8e,0x00);//去除写保护
for(i=0;i<7;i++)
{
  write_ds1302(write_add[i],time[i]);//写入时间,对时
}
write_ds1302(0x8e,0x80);//写保护
}
void time_chuli()//BCD码转换,并成为ASCLL码
{
/*dis[0]=time[4]/16+0x30;
dis[1]=time[4]%16+0x30;
dis[2]='-';
dis[3]=time[5]/16+0x30;
dis[4]=time[5]%16+0x30;
dis[5]='-';
dis[6]=time[6]/16+0x30;
dis[7]=time[6]%16+0x30;
*/

dis[0]=time[4]/16+0x30;
dis[1]=time[4]%16+0x30;
dis[2]='-';
dis[3]=time[5]/16+0x30;
dis[4]=time[5]%16+0x30;
dis[5]='-';
dis[6]=time[6]/16+0x30;
dis[7]=time[6]%16+0x30;
}
void read_rtc()
{
uchar i;
for(i=0;i<7;i++)
{
  time[i]=read_ds1302(read_add[i]);
}
}


使用特权

评论回复
地板
1061zou|  楼主 | 2013-4-28 12:47 | 只看该作者
顶!在开发板上也是一样的现象

使用特权

评论回复
5
1061zou|  楼主 | 2013-4-30 18:48 | 只看该作者
问题已经解决,来点人散分吧!

使用特权

评论回复
6
1061zou|  楼主 | 2013-4-30 18:49 | 只看该作者
再不来人就结贴了,20分就浪费咯~

使用特权

评论回复
7
1061zou|  楼主 | 2013-4-30 20:41 | 只看该作者

使用特权

评论回复
8
zhangjunlong| | 2013-5-2 00:02 | 只看该作者
来了来了,快快散粉

使用特权

评论回复
9
421924538| | 2013-5-2 00:17 | 只看该作者
时序的问题吧

使用特权

评论回复
10
1061zou|  楼主 | 2013-5-2 19:49 | 只看该作者
zhangjunlong 发表于 2013-5-2 00:02
来了来了,快快散粉

20分都已经浪费了,你才来。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:<img src="static/image/smiley/comcom/3.gif" class="vm">

33

主题

237

帖子

1

粉丝