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

📄 spi.c

📁 一个实现一个串口扩展四个串口的实现程序
💻 C
字号:
#include "def.h"

extern void Delay(unsigned int nTime);
//************************************************************


//***********************************************************

//***********************************************************
//data1,data2是写入的两个数据,这里返回读取的数据
static unsigned int send(unsigned char data1,unsigned char data2)
{	
//	U_SpiCommand u_back;
	int wReadData,wSendData,tmp;
	uchar i;
	
#if SPI_INT_ENABLE
	SPI_CS = 0;
	SPSTAT &= 0x80;		//clear spi flag
	SPDAT = data1;
	while(!(SPSTAT&0x80));
	tmp = SPDAT;
	wReadData = tmp <<8;
	SPSTAT &= 0x80;		//clear spi flag
	SPDAT = data2;
	while(!(SPSTAT&0x80));
	tmp = SPDAT;
	wReadData += tmp; 
	SPI_CS =1;
	return wReadData;

#else	
	SPICLK=0;
	SPI_CS=0;    						//置814x片选有效
	Delay(1);
	wReadData = 0;
	tmp = data1;
	tmp = tmp<<8;
	wSendData = tmp + data2;
	for(i = 0; i < 16; i++)
	{
		if(wSendData & 0x8000)
			MOSI = 1;
		else
			MOSI = 0;
		wReadData <<= 1;			//Shift first, then fill the bit
		SPICLK = 1;
		wSendData <<= 1;
		wReadData |= MISO;			//Receive the 16-bit data
		Delay(1);
		SPICLK = 0;
		Delay(5);					//Can be comment by acture use
	}
	Delay(1);
	SPI_CS=1;    						//置814x片选有效
	SPICLK=0;
	return(wReadData);
#endif	

}

//*************************************************************************

//*************************************************************************
//写寄存器,port为子串口的路数,reg为寄存器的地址,dat为写入寄存器的数据
// port = 0~3; 下同,
uint  write_reg(unsigned char port,unsigned char reg,unsigned char dat)
{	
//	send(0x60+(port<<5)+(reg<<1),dat);
//	 if port  =0~3
	uint temp;
	temp = send(0x80+(port<<5)+(reg<<1),dat);
	return temp;
}

//*************************************************************************

//*************************************************************************
//读寄存器,port为子串口的路数,reg为寄存器的地址,返回寄存器的值
unsigned char read_reg(unsigned char port,unsigned char reg)
{
	return send((port<<5)+(reg<<1),0x00);
}
//***************************************************************************

⌨️ 快捷键说明

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