DS1302时钟问题
时间:10-02
整理:3721RD
点击:
最近在学51,在DS1302时钟这块卡住了,很多疑问,比如通常的写入一个字节的数据程序会这样写:
void input(unsigned char byte)
{
unsigned char i;
for(i=8;i>0;i--)
{
IO=byte&0x01;
CLK=1; //7行
CLK=0; //8行
byte>>=1;
}
}
但是我不明白,芯片手册上说读数据是在时钟的上升沿,但我感觉程序中7行和8行是描述下降沿,其次,手册上说数据传输是从最低位到最高位,那么我给这个函数传递一字节数据0x8e时,这段程序代码到底是怎么处理的,是一位一位的传输再参与运算吗?请大神能帮我仔细剖析这段代码,真的很感激了
void input(unsigned char byte)
{
unsigned char i;
for(i=8;i>0;i--)
{
IO=byte&0x01;
CLK=1; //7行
CLK=0; //8行
byte>>=1;
}
}
但是我不明白,芯片手册上说读数据是在时钟的上升沿,但我感觉程序中7行和8行是描述下降沿,其次,手册上说数据传输是从最低位到最高位,那么我给这个函数传递一字节数据0x8e时,这段程序代码到底是怎么处理的,是一位一位的传输再参与运算吗?请大神能帮我仔细剖析这段代码,真的很感激了
在读数据之前,你看看CLK有没有赋值为0,如果赋值为0的话 想必你就会明白了,从0到1,然后循环。
首先 OX8E和0X01按位与 ,所以第一次就把最低位给传出去了,然后让 byte右移一位。然后重复for循环
