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

📄 spireadandwrite.txt

📁 s3c2410的IO模拟SPI驱动程序
💻 TXT
字号:
//SPI 端口定义
sbit DOUT = P1^1;  //SPI串行数据输出口,单片机输入口
sbit DIN  = P1^2;  //SPI串行数据输入口,单片机输出口
sbit SCLK = P1^3;  //SPI时钟,单片机输出口
sbit CS_  = P1^4;  //SPI使能,低电平有效,单片机输出口

//全局变量定义
unsigned char SPI_CM; //用于存放SPI读或写的命令字
unsigned char SPI_Data[3]; //用于存放SPI读或写的数据

void SPIRead()
{
	unsigned char i,k;
	CS_=1;
	_nop_();
	SCLK=0;
	_nop_();
	CS_=0;
	
	for(i=0;i<8;i++)
	{
		SCLK=1;
		if(SPI_CM&0x80)
		DIN=1;
			else
			DIN=0;
		_nop_();
		SCLK=0;
		SPI_CM=SPI_CM<<1;
		}
	DIN=0;
	_nop_();
	_nop_();
	_nop_();
	//
	//
	for(k=0;k<3;k++)
	{
		SPI_Data[k]=0;
		for(i=0;i<8;i++)
		{
			SPI_Data[k]=SPI_Data[k]<<1;
			SCLK=1;
			_nop_();
			if(DOUT)
			SPI_Data[k]=SPI_Data[k]|0x01;
			SCLK=0;
			}		
		}
		CS_=1;
	}

//SPI写函数
void SPIWrite()
{
	unsigned char i,k;
	CS_=1;
	_nop_();
	SCLK=0;
	_nop_();
	CS_=0;
	SPI_CM=SPI_CM&0x80;
	for(i=0;i<8;i++)
	{
		SCLK=1;
		_nop_();
		if(SPI_CM&0x80)
		DIN=1;
			else
			DIN=0;
			_nop_();
		SCLK=0;
		SPI_CM=SPI_CM<<1;
		}
	DIN=0;
	for(k=0;k<3;k++)
	{
		for(i=0;i<8;i++)
		{
			SCLK=1;
			_nop_();
			if(SPI_Data[k]&0x80)
			DIN=1;
				else
				DIN=0;
			_nop_();
			SCLK=0;
			SPI_Data[k]=SPI_Data[k]<<1;
			}
		}
	DIN=0;
	CS_=1;
	
	}

⌨️ 快捷键说明

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