/*******************************************************************************
名称:void SPI1_Init()
功能:模拟SPI时序的端口初始化工作
参数:无
时间:2011.1.11
版本:1.0
注意:无
*******************************************************************************/
void SPI1_Init()
{
SPI1_Port|=((1<<SPI1_CS)|(1<<SPI1_MISO)|(1<<SPI1_MOSI)|(1<<SPI1_CLK))
SPI1_DDR|=(((1<枯梁<SPI1_CS)|(1<<SPI1_MOSI)|(1<<SPI1_CLK))&(~(1<<SPI1_MISO)))
SPI1_CS_H
SPI1_CLK_L
spi_delay=5
}
/*******************************************************************************
名称:SPI1_Send(unsigned char data)
功能:发送SPI数据
参数:unsigned char data
时间:2011.1.11
版本:1.0
注意:无
*******************************************************************************/
void SPI1_Send(unsigned char data)
{
unsigned char i
SPI1_CS_L //拉低片选信号
SPI1_CLK_L//时钟空闲时为低电平
SPI1_MOSI_L
_delay_us(spi_delay)
for(i=0i<8i++)
{
if(data&(0x80>>i))//高位在前,低位在前改为(0x01<<i)
SPI1_MOSI_H
else
SPI1_MOSI_L
_delay_us(spi_delay)
SPI1_CLK_H//在上升沿更新数据
_delay_us(spi_delay)
SPI1_CLK_L
}
_delay_us(spi_delay)
SPI1_CS_H //拉高片选,完成一次数据传输
}
/*******************************************************************************
名称:unsigned char SPI1_Get()
功掘让能:接收SPI数据
参数:返回data
时间:2011.1.11
版本:1.0
注意:无
*******************************************************************************/
unsigned char SPI1_Get()
{
unsigned char i
unsigned char data=0x00
SPI1_CS_L //拉低片选信号
SPI1_CLK_L//时钟空闲时为低电平
SPI1_MOSI_L
_delay_us(spi_delay)
for(i=0i<8i++)
{
if(SPI1_GetMISO)
data|=(0x80>>i)
_delay_us(spi_delay)
SPI1_CLK_H//在上判败局升沿更新数据
_delay_us(spi_delay)
SPI1_CLK_L
}
_delay_us(spi_delay)
SPI1_CS_H //拉高片选,完成一次数据传输
return data
}
有没有写皮族进去,读回来就知道歼旁了。另外你的读函数中if(SPI_DI==1) dat|=0x01else dat&=0x01这一段,置一对了燃改弊,但是清零错了,应该是dat&=0xfe欢迎分享,转载请注明来源:内存溢出
评论列表(0条)