///////////////////////////////向数据线上写一字节dat/////////////////////////////////
void write_byte(uchar dat)
{
uchar i;
for(i=8;i>0;i--)
{
sda=(bit)(dat&0x01);
scl=1;
_nop_();
scl=0;
dat=dat>>1;
}
}
//////////////////////////////////从数据线上读取一字节数据/////////////////////////
uchar read_byte()
{
uchar i,temp=0;
for(i=8;i>0;i--)
{
temp=temp>>1;
if(sda==1)
temp=temp|0x80;
scl=1;
_nop_();
scl=0;
}
return(temp);
}
为什么读写一个字节数据的时钟时序一样?不是读取数据的时候在寄存器地址写入后的紧接的下降沿就输出数据了嘛,那读的时候为什么是在上升沿? 这程序肯定没问题的。 |