AVR读写DS1302求救

[复制链接]
3288|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;
}
全部程序在附件里,请大侠看看,读函数哪里出问题了!期待解答!谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
huangqi412 发表于 2011-7-17 22:03 | 显示全部楼层
网上大把的例程,LZ都已经有示波器。。。就算刚学编程,对软件不熟,
烧一个能用的例程,示波器记录波形, 然后再烧自己的,也记录波形,对比下自然能发现问题。。。
hotpower 发表于 2011-7-17 23:16 | 显示全部楼层
wangshihui123 发表于 2011-7-17 23:25 | 显示全部楼层
就是这样
wangshihui123 发表于 2011-7-17 23:26 | 显示全部楼层
就是这样
wangshihui123 发表于 2011-7-17 23:27 | 显示全部楼层
我的帖子不符合要求 我去
SmartEnergy 发表于 2011-7-18 10:36 | 显示全部楼层
看看时间长短对不对。源码就没心思细看了。
老鱼探戈 发表于 2011-7-18 10:45 | 显示全部楼层
两星期,够长。。
软件找不出原因可以找找硬件原因,不用死磕软件
相信哥咯 发表于 2011-7-18 18:29 | 显示全部楼层
fangbaobin 发表于 2011-7-18 18:39 | 显示全部楼层
我建议你可以用(xunta.so)寻TA网搜索一下,这里有很多关于AVR的**,我帮你搜了一下,结果发现有13位专家在讨论此问题,你不妨可以去看看,链接是:http://www.xunta.so/searchAuthor ... ;searchTime=6months
 楼主| renhuan333 发表于 2011-7-19 22:45 | 显示全部楼层
谢谢 各位的回答,我继续查找!
Chuen09 发表于 2011-7-19 23:12 | 显示全部楼层
建议去看马潮老师的《AVR单片机嵌入式系统原理与应用实践》里面的方法很不错。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

37

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部