单片机,DS1302时钟芯片读写的问题。。。。。。。。。
DS1302,读字节数据的时候SCLK下降沿读取一个字节数据但是为什么底层函数是这样的呢?实物做出来没问题函数名称:DS1302_ReadOneByte(void)入口参...
DS1302,读字节数据的时候 SCLK下降沿读取一个字节数据 但是为什么底层函数是这样的呢?实物做出来没问题
函数名称:DS1302_ReadOneByte(void)
入口参数:void
出口参数:unsigned char ReadDate
函数功能:从DS1302中读取一个字节数据
****************************************************************************/
unsigned char DS1302_ReadOneByte(void)
{
unsigned char Number;
unsigned char ReadDate = 0;
for(Number=0;Number<8;Number++) //8位计数器
{
DS1302_ResetSCLK(); //DS1302时钟线拉低
_nop_();_nop_(); //延时等待
ReadDate >>= 1; //数据右移一位
if(DS1302_ReadPinIO()) //判断数据是否为高电平
{
ReadDate |= 0x80; //读取一位数据逻辑‘1’
} //否则默认为低电平逻辑‘0’
DS1302_SetSCLK(); //DS1302时钟线拉高
_nop_();_nop_(); //延时等待
}
return ReadDate; //返回读取的字节
}
但是看不懂 下降沿读取字节 为什么程序是上升沿读取字节 难道是先写指令 给最高位1后,读取字节数据?
你说得很多,接的P1口,拉了上拉电阻,默认就是高电平了。这个问题懂了。还有一个问题。为什么取出来的位 展开
函数名称:DS1302_ReadOneByte(void)
入口参数:void
出口参数:unsigned char ReadDate
函数功能:从DS1302中读取一个字节数据
****************************************************************************/
unsigned char DS1302_ReadOneByte(void)
{
unsigned char Number;
unsigned char ReadDate = 0;
for(Number=0;Number<8;Number++) //8位计数器
{
DS1302_ResetSCLK(); //DS1302时钟线拉低
_nop_();_nop_(); //延时等待
ReadDate >>= 1; //数据右移一位
if(DS1302_ReadPinIO()) //判断数据是否为高电平
{
ReadDate |= 0x80; //读取一位数据逻辑‘1’
} //否则默认为低电平逻辑‘0’
DS1302_SetSCLK(); //DS1302时钟线拉高
_nop_();_nop_(); //延时等待
}
return ReadDate; //返回读取的字节
}
但是看不懂 下降沿读取字节 为什么程序是上升沿读取字节 难道是先写指令 给最高位1后,读取字节数据?
你说得很多,接的P1口,拉了上拉电阻,默认就是高电平了。这个问题懂了。还有一个问题。为什么取出来的位 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询