打印

AVR读写DS1302求救

[复制链接]
1739|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
renhuan333|  楼主 | 2011-7-17 21:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用示波器观察写的时候波形正常,但是读的时候就无法读出正确数据,2星期了实在找不出原因来,求救!
/*************************************************
        DS1302 写一个字节
**************************************************/
void DS1302_WriteByte(uchar addr,uchar data)
{
uchar i,temp;
  
  IO_OUT;  //数据口设置输出模式,输出数据
  RST_0;   // RST拉低,数据传送终止
  _delay_us(10);
  CLK_0;  // 逻辑控制有效
  _delay_us(10);
  
  RST_1;
  _delay_us(10);
  temp=addr;
  
for(i=0;i<8;i++)
  {
   if(temp&0x01)
    IO_1;
   else
    IO_0;
//   _delay_us(500); //调试使用
   CLK_1;  // 上升沿写入数据
   _delay_us(10);
   CLK_0;
   temp>>=1;
  }
temp=0xaa;
IO_OUT;
_delay_us(10);
for(i=0;i<8;i++)
  {
   if(temp&0x01)
    IO_1;
   else
    IO_0;
//   _delay_us(500); //调试使用
   CLK_1;
   _delay_us(10);
   CLK_0;
   temp>>=1;
  }
RST_0;  
}
/*************************************************
        DS1302 读一个字节
**************************************************/
uchar DS1302_ReadByte(uchar addr)
{
uchar i,temp;
IO_OUT;
_delay_us(10);
RST_0;
_delay_us(10);
CLK_0;
_delay_us(10);

RST_1;
temp=addr;

_delay_us(10);
for(i=0;i<8;i++)
  {
   if(temp&0x01)
    IO_1;
   else
    IO_0;
   CLK_1;
//   _delay_us(10);
   CLK_0;
   temp>>=1;
  }
_delay_us(10);
IO_IN;
temp=0;
for(i=0;i<8;i++)
  {
   _delay_us(10);
   temp>>=1;
   if(IO_GET)
    temp |= 0x80;
    else
    temp &= 0x7f;
//   _delay_us(500);
   CLK_1;  // 下降沿读出数据
   _delay_us(10);
   CLK_0;
  }
CLK_0;
IO_OUT;
RST_0;

return temp;
}
全部程序在附件里,请大侠看看,读函数哪里出问题了!期待解答!谢谢!

DS1302时钟芯片.rar

41.69 KB

相关帖子

沙发
huangqi412| | 2011-7-17 22:03 | 只看该作者
网上大把的例程,LZ都已经有示波器。。。就算刚学编程,对软件不熟,
烧一个能用的例程,示波器记录波形, 然后再烧自己的,也记录波形,对比下自然能发现问题。。。

使用特权

评论回复
板凳
hotpower| | 2011-7-17 23:16 | 只看该作者
晕~~~

使用特权

评论回复
地板
wangshihui123| | 2011-7-17 23:25 | 只看该作者
就是这样

使用特权

评论回复
5
wangshihui123| | 2011-7-17 23:26 | 只看该作者
就是这样

使用特权

评论回复
6
wangshihui123| | 2011-7-17 23:27 | 只看该作者
我的帖子不符合要求 我去

使用特权

评论回复
7
SmartEnergy| | 2011-7-18 10:36 | 只看该作者
看看时间长短对不对。源码就没心思细看了。

使用特权

评论回复
8
老鱼探戈| | 2011-7-18 10:45 | 只看该作者
两星期,够长。。
软件找不出原因可以找找硬件原因,不用死磕软件

使用特权

评论回复
9
相信哥咯| | 2011-7-18 18:29 | 只看该作者
10
fangbaobin| | 2011-7-18 18:39 | 只看该作者
我建议你可以用(xunta.so)寻TA网搜索一下,这里有很多关于AVR的**,我帮你搜了一下,结果发现有13位专家在讨论此问题,你不妨可以去看看,链接是:http://www.xunta.so/searchAuthor ... ;searchTime=6months

使用特权

评论回复
11
renhuan333|  楼主 | 2011-7-19 22:45 | 只看该作者
谢谢 各位的回答,我继续查找!

使用特权

评论回复
12
Chuen09| | 2011-7-19 23:12 | 只看该作者
建议去看马潮老师的《AVR单片机嵌入式系统原理与应用实践》里面的方法很不错。。

使用特权

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

本版积分规则

0

主题

37

帖子

1

粉丝