打印

怎么从代码看出上升沿和下降沿?(菜鸟提问)

[复制链接]
2281|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
skynothing|  楼主 | 2009-2-2 16:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码如下:(DS1302_CLK为时钟线)
void DS1302InputByte(unsigned char d)     //实时时钟写入一字节

    unsigned char i;
    ACC = d;
    for(i=8; i>0; i--)
    {
        DS1302_IO = ACC0;               
        DS1302_CLK = 1;    
        DS1302_CLK = 0;
        ACC = ACC >> 1; 
    } 
}

unsigned char DS1302OutputByte(void)     //实时时钟读取一字节(内部函数)

    unsigned char i;
    for(i=8; i>0; i--)
    {
        ACC = ACC >>1;                     
        ACC7 = DS1302_IO;
        DS1302_CLK = 1;
        DS1302_CLK = 0;
    } 
    return(ACC); 
}
如何从上面看出
DS1302芯片手册所说的“上升沿写数据,从bit0开始”“下降沿读数据,从bit0开始”。小弟在看写数据时候觉得非常的迷惑时钟明明是下降的?请大侠们给小弟帮帮忙点解下把

相关帖子

沙发
hotpower| | 2009-2-2 17:45 | 只看该作者

Keil的软件仿真可以清楚地看到上升沿和下降沿

使用特权

评论回复
板凳
李冬发| | 2009-2-2 22:02 | 只看该作者

你这个代码的DS1302_CLK是初始化为0的吧,要不问题大得很噢

这段代码相当于:

        DS1302_CLK = 0;
        DS1302_CLK = 1;    
        DS1302_CLK = 0;

有上升沿,有下降沿。手册上那句话是说:写入时,数据必须在上升沿之前有数据,上升沿过后才能撤消;当下降沿过后,输出数据才有效。

使用特权

评论回复
地板
hotpower| | 2009-2-2 22:11 | 只看该作者

A人之DS1302读写一体化程序~~~

//读写DS1302
unsigned char TimeSpiReadWrite(unsigned char val)
{
unsigned char i;
  ACC = val;//取8位数据
  for (i = 8;i > 0; i--)
  {
    TIMECLK = 0;//时钟下降沿输入数据(DS1302读)
    _nop_();//延时
    CY = TIMEIO;//接收串行数据到CY
    _rrca_();//右移一位数据到CY(先存后取)
    TIMEIO = CY;//发送串行数据
    TIMECLK = 1;//时钟上升沿打入数据(DS1302写)
    TIMEIO  = 1;//释放数据总线
  }
  val = ACC;
  return val;
}

相关链接:http://www.google.cn/search?hl=zh-CN&newwindow=1&q=DS1302%E8%AF%BB%E5%86%99%E4%B8%80%E4%BD%93%E5%8C%96C51%E6%BA%90%E7%A8%8B%E5%BA%8F+hotpower&meta=&aq=f&oq=

使用特权

评论回复
5
skynothing|  楼主 | 2009-2-6 17:47 | 只看该作者

thanks

非常感谢。。。。弄明白乐~~!!

使用特权

评论回复
6
hotpower| | 2009-2-6 22:46 | 只看该作者

不知如何明白了~~~

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝