急求:PIC16F1828单片机SPI接收程序,发送已经正常,接收不到数据,两个都是主机,求高手。
#include"spi.h"/***************************************************函数名称:voidSPI_Init(...
#include"spi.h"
/***************************************************
函数名称:void SPI_Init(void)
函数功能:SPI初始化 通信模式设置
输入参数:无
输出参数:无
返 回 值 :无
****************************************************/
extern void SPI_Init(void)
{
SSP1STAT=0X00;//第一种通信模式 第一个上升沿采样
SSP1CON1=0X20;//spi模式 从动模式
}
/***************************************************
函数名称:void Write_Spi_Data(unsigned char data)
函数功能:data,要写入的数据
输入参数:无
输出参数:无
返回值 :无
****************************************************/
extern void Write_Spi_Data(unsigned char data)
{
SSP1IF = 0;
SSP1BUF =data; //送需发送的数据
while(!SSP1IF); //等待完成
SSP1IF = 0;
}
/*******************************************************************************
* 函 数 名: SPI_Read_Data()
* 函数功能: 写字节数据
* 入口参数: 无
* 返 回: 返回读取数据
*******************************************************************************/
extern uchar Read_Spi_Data(void)
{
uchar data;
Uart_Putstring("US");
SSP1IF = 0;
while(!SSP1IF); //等待完成
Uart_Putstring("UK");
data=SSP1BUF;
SSP1IF = 0;
return data;
}
while(!SSP1IF); //等待完成,程序停留在这个位置不再运行,急求高手。 展开
/***************************************************
函数名称:void SPI_Init(void)
函数功能:SPI初始化 通信模式设置
输入参数:无
输出参数:无
返 回 值 :无
****************************************************/
extern void SPI_Init(void)
{
SSP1STAT=0X00;//第一种通信模式 第一个上升沿采样
SSP1CON1=0X20;//spi模式 从动模式
}
/***************************************************
函数名称:void Write_Spi_Data(unsigned char data)
函数功能:data,要写入的数据
输入参数:无
输出参数:无
返回值 :无
****************************************************/
extern void Write_Spi_Data(unsigned char data)
{
SSP1IF = 0;
SSP1BUF =data; //送需发送的数据
while(!SSP1IF); //等待完成
SSP1IF = 0;
}
/*******************************************************************************
* 函 数 名: SPI_Read_Data()
* 函数功能: 写字节数据
* 入口参数: 无
* 返 回: 返回读取数据
*******************************************************************************/
extern uchar Read_Spi_Data(void)
{
uchar data;
Uart_Putstring("US");
SSP1IF = 0;
while(!SSP1IF); //等待完成
Uart_Putstring("UK");
data=SSP1BUF;
SSP1IF = 0;
return data;
}
while(!SSP1IF); //等待完成,程序停留在这个位置不再运行,急求高手。 展开
3个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询