时序图显示该SPI接口在CLK的上升沿读MISO 状态得到当前的输入数据位,在CLK的下降沿向MOSI输出当前数据位。
首先初始化SPI时把CLK拉低。
unsigned char SPI_Send(unsigned char data)
{
unsigned char i,temp;
bit loadbit = 0;
unsigned char loaddata = 0;
temp = data; //首先输出最高位
for(i=0; i<8; i++)
{
CLK = 1;
MOSI = temp & 0x08;
_nop_( ) ;
CLK = 0;
loadbit = MISO;
_nop_( ) ;
}
temp = temp <<1;
loaddata = (loaddata << 1) | loadbit;
return (loadbit);
}
这个程序大家觉得完善吗,如果不完善,请发表一下意见
|