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

📄 spi.c

📁 是电表处理芯片CS5460A的单片机程序,已经经过产品的验证.
💻 C
字号:
                                                                    
#include <reg51.h>
#include <main.h>
#include <spi.h>


	extern uchar data chksum;
	
void Send_Measure_Byte(uchar para)
{	
   	uchar i;
	
  	SPI_CLK=HIGH;  
   	for(i=0;i<8;i++)
   	{				
      	if(para & 0x01)
			SPI_SDI=HIGH;
      	else
			SPI_SDI=LOW;
		                   
		SPI_CLK=LOW;
      	para>>=1;
      	Delay_10us(4);
		SPI_CLK=HIGH;
   	}
}


uchar Receive_Measure_Byte(void)
{	
   	uchar i,result=0;

	SPI_SDI=HIGH;
   	SPI_CLK=HIGH;
   	for(i=0;i<8;i++)
   	{
		SPI_CLK=LOW;				
   		Delay_10us(5);
      	result>>=1;
		SPI_CLK=HIGH;
		Delay_10us(2);		
		if(SPI_SDO)
         	result|=0x80;
   }
   return result;
}


uchar Read_From_Measure(uchar cmd,uchar *ps,uchar len)
{	
   	uint i;

	SPI_CS=0;		
   	Delay_10us(200);
   	Send_Measure_Byte(cmd);
	SPI_SDO=HIGH;
   	for(i=0;i<8000;i++)
   	{				
		if(SPI_SDO)continue;
      	else
         	break;
   	}
   	for(i=0;i<8000;i++)
   	{			
		if(SPI_SDO)continue;
      	else
         	break;
   	}    
   	if(i==8000)
   	{	          
		SPI_CS=HIGH;							
      	return 1;
   	}                
	   
	chksum=0;	    
   	for(i=0;i<len;i++)
   	{	
      	ps[i]=Receive_Measure_Byte();
		chksum+=ps[i];      
      	Delay_10us(8);
   	}
	SPI_CS=HIGH;
   	return 0;
}




uchar Write_To_Measure(uchar cmd,uchar *ps,uchar len)
{	 	
   	uint i;

	SPI_CS=LOW;
   	Delay_10us(150);
   	Send_Measure_Byte(cmd);
	SPI_SDO=HIGH;
   	for(i=0;i<8000;i++)
   	{			
		if(SPI_SDO)continue;
      	else
         	break;
   	}
    
   	if(i==8000)
   	{		
		SPI_CS=HIGH;
      	return 1;
   	}    
	   	     
   	for(i=0;i<len;i++)
      	Send_Measure_Byte(ps[i]);
   	Delay_10us(50);    
	SPI_CS=HIGH;
   	return 0;
}

	
void Delay_10us(uchar delay)
{
    while(delay>0)delay--;
}
 








































































































































⌨️ 快捷键说明

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