/**
* 读一个字节
*/
uint8 read_ds1302_byte(void)
{
uint8 i, dat=0;
for (i=0;i<8;i++)
{
dat >>= 1;
if (SDA)
dat |= 0x80;
SCK = 1;
SCK = 0;
}
return dat;
}
上面的读操作是正确的 但是我想 第一次循环的时候在没有出现下降沿的时候 IF 语句根本判断不出来是高电平还是低电平啊,于是我换成这种写法
/**
* 读一个字节
*/
uint8 read_ds1302_byte(void)
{
uint8 i, dat=0;
for (i=0;i<8;i++)
{
dat >>= 1;
SCK = 1;
SCK = 0;
if (SDA)
dat |= 0x80;
}
return dat;
}
但是结果是错的,作为菜鸟我感觉糊涂了 望论坛里的朋友指点,还有这种写法:
/**
* 读一个字节
*/
uint8 read_ds1302_byte(void)
{
uint8 i, k,dat=0;
for (i=0;i<8;i++)
{
dat >>= 1;
k = SDA;
SCK = 1;
SCK = 0;
if (k)
dat |= 0x80;
}
return dat;
}
跟 错误的写法有什么区别吗??
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
楼主学的是小宋老师的视频吧?
一周热门 更多>