8位数据接收处理(高位先-IIC-SPI)
写是数据准备好再变化电平,读是电平准备好再接收
写之后需要时钟归位(空闲状态电平,一般低电平),数据需要释放(空闲状态电平,一般高电平)
读之前需要时钟归位(空闲状态电平,一般低电平),数据需要释放(空闲状态电平,一般高电平)
如果不是连续数据,可以
延时根据协议速度(IIC-100k(10us保持5us以上)-400k-3.4m SPI最大18M)
void write_byte(uchar date)
{
uchar i,temp;
for(i=0;i<8;i++)
{
temp=date&0x80;//处理高位
date=date<<1;
scl=0;
delay();
sda=temp;//准备写的数据
delay();
scl=1;//改变电平
delay();
}
scl=0;
delay();
sda=1;
delay();
}
uchar read_byte()
{
uchar i,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;//准备电平
delay();
k=(k<<1)|sda;//读
scl=0;
delay();
}
return k;
}