int SPI_readByte(void)
{
int i;//j,k;
int CTdata=0;
i=7;
for(i=7;i>=0;i--)
{
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
CTdata=CTdata<<1;
SPI_CLK=1;
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
//}
if(SPI_MISO) CTdata|=0x01;
else CTdata&=0xFE;
SPI_CLK=0;
}
SPI_CLK=0;
return CTdata;
}
void SPI_SendByte(unsigned char data)
{
int i,j;
// int CTdata=data;
i=7;
// for(i=7;i>=0;i--)
do
{
SPI_CLK=0;
j=0x01<<i;
if(data&j)
SPI_MOSI=1;
else
SPI_MOSI=0;
SPI_CLK=1;
i--;
}while(i>=0);
SPI_CLK=0;
}
在读和写的时候根据需要进行一定的延时等待