uchar SPI_RW(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
MOSI=(byte&0x80);
byte=(byte<<1);
SCK=1;//由此可见,写数据是在SCK=0时进行,SCK上升沿把数据写进去
byte|=MISO;//由此可见,读数据是在SCK高电平期间进行
SCK=0;
}
return(byte);
}
你可以分析下这个函数的流程:
byte比如是11100001
1 byte=(byte<<1)(这里可以知道每次只取高位1,1,1,0,0,0,0,1)
2 SCK=1; //sck时钟高电平,一般用引脚控制,如用PA2脚控制
3 byte|=MISO;//由此可见,读数据是在SCK高电平期间进行
4 SCK=0;//sck时钟低电平
流程是1~2~4把byte写给ic 那3~4~2是取出byte的值
uchar SPI_RW(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
MOSI=(byte&0x80);
byte=(byte<<1);
SCK=1;//由此可见,写数据是在SCK=0时进行,SCK上升沿把数据写进去
byte|=MISO;//由此可见,读数据是在SCK高电平期间进行
SCK=0;
}
return(byte);
}
你可以分析下这个函数的流程:
byte比如是11100001
1 byte=(byte<<1)(这里可以知道每次只取高位1,1,1,0,0,0,0,1)
2 SCK=1; //sck时钟高电平,一般用引脚控制,如用PA2脚控制
3 byte|=MISO;//由此可见,读数据是在SCK高电平期间进行
4 SCK=0;//sck时钟低电平
流程是1~2~4把byte写给ic 那3~4~2是取出byte的值
举报