⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi.h

📁 PIC16F887底层驱动(C语言)
💻 H
字号:
/*
****************************************************************************************************
同步串行通讯接口相关函数
****************************************************************************************************
*/
/*
****************************************************************************************************
日志:
		2008-07-04
		创建该文件
****************************************************************************************************
*/
/*
****************************************************************************************************
函数说明:
		InitSPI_Master:同步串行通讯初始化函数
		SPI_Send: 输出单字符(1字节数据)
		SPI_SendString:输出单多字符(多1字节数据)	
****************************************************************************************************
*/
void InitSPI_Master(void)							//SPI主设备初始化
{
	IO_Set('C',0B00101000);							//SDO,SCK设置为输出
	IO_Set('A',0B00100000);							//SS设置为输出高电平	
	IO_Clr('C',0B11101111);							//SDI设置为输入
	SSPCON=SSPEN|CKP;								//SPI使能,SCK空闲为高电平,SCK=Fosc/4
	SSPSTAT=0xc0;									//SPI主控模式,末尾采样输入数据,在SCK下降沿发送数据
}

void SPI_Send(SPI_Data)								//SPI发送一个字节,使用前先拉低SS
{
	SSPBUF=SPI_Data;								//数据移入SSPBUF发送
	while(SSPIF==0);								//等待发送完毕
	SSPIF=0;										//SSPIF清零
}

void SPI_SendString(uint8 *SPI_Data)				//SPI发送多个字节,使用前先拉低SS
{													//IO_Clr('A',0B11011111);SS设置为输出低高电平
	SSPBUF=(*SPI_Data);								//数据指针指向数组,将数据移入SSPBUF发送
	while(SSPIF==0);								//等待发送完毕
	SSPIF=0;										//SSPIF清零
	*SPI_Data++;									//数据指针加1
}

/*void InitSPI_Slave(void)
{
	IO_Set('C',0B00100000);							//SDO设置为输出
	IO_Clr('C',0B11100111);							//SDI,SCK设置为输入,选择从动模式
	IO_Init('A',0B00100000,0B11111111);				//SS设置为输入
}*/

void SPI_Receive(void)								//接收数据打开SPI中断
{
	PIE1|=SSPIE;									//打开SPI中断
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -