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

📄 xiang_mu.c

📁 SPI总线发送数据的程序
💻 C
字号:
//-----------------------函数声明,变量定义--------------------------------------------------------
#include <reg52.h>
#include <intrins.h>
#include <math.h>
sbit SCK=P1^0;                           // 将p1.0口模拟时钟输出
sbit MOSI=P1^1;                          // 将p1.1口模拟主机输出
sbit MISO=P1^2;                          // 将p1.1口模拟主机输入
sbit SS1=P1^3;                           // 将p1.1口模拟片选

#define uchar unsigned char
#define uint  unsigned int
#define pi    3.1415926

xdata uchar table[255];
uchar c,i;
uchar adr;
float cy;

//--------------------------------------------------------------------------------------------------
// 函数名称: tab

// 函数功能: 正弦波相位分256份所对应的幅码表格的生成
//--------------------------------------------------------------------------------------------------
void tab()                               
{
	char b,flag;                       
	float a;
	for(i=0;i<255;i++)
	{
		a=2*pi/256;                      
		b=sin(i*a)*127;                  //将所得的幅码乘127
		table[i]=b;                      //将乘后的幅码存入table中
    }
  	flag=1;
}

void delay(){ ; ; }                      // 短延时子函数



//--------------------------------------------------------------------------------------------------
// 函数名称: SPISendByte
// 入口参数: ch
// 函数功能: 发送一个字节
//--------------------------------------------------------------------------------------------------
void SPISendByte(unsigned char ch)
{ 
	unsigned char idata n=8;             // 向SDA上发送一位数据字节,共八位      
	         SCK = 1 ;                   //时钟置高

	
		while(n--)
		{ 
			delay();
			SCK = 0 ;                    //时钟置低
			if((ch&0x80) == 0x80)        // 若要发送的数据最高位为1则发送位1
			{        
					MOSI = 1;            // 传送位1
			}
			else
			{  
					MOSI = 0;            // 否则传送位0
			} 
			delay();
			ch = ch<<1;                  // 数据左移一位
			SCK = 1 ;                    //时钟置高 
		}
}



main()
{
	tab();
	adr=1;
	i=0;
	while(adr)
	{
	 
	 c=table[i];
	 SPISendByte(c);
	 SPISendByte(adr-1);
	 i++;

	 adr++;
    }
	
}

⌨️ 快捷键说明

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