急求: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); //等待完成,程序停留在这个位置不再运行,急求高手。
展开
 我来答
浅唱20151
2014-10-15 · TA获得超过1775个赞
知道答主
回答量:173
采纳率:0%
帮助的人:196万
展开全部
看下SPI的通信协议就知道了,发送和接收都是先接收MSB位,每发送一位,数据就向左(最高位)移一位,这样当发送了一个字节后,也正好接收到了一个字节,不知这样说能否理解。。。
做而论道
高能答主

2014-10-15 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
两个都是主机?
应该是一主一从。
追问
设置的就是一主一从。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
双子BOY没
2018-03-19
知道答主
回答量:1
采纳率:0%
帮助的人:892
展开全部
这个解决了吗?我也是这样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式