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

📄 cs5460a.c

📁 cs5460a做功率表用 cs5460a做功率表用 cs5460a做功率表
💻 C
字号:
/**********************************************
公司名称:
文 件 名:CS5460A.c
版 本 号:
程序设计:
说    明:
完成日期:
修改日期:
功能摘要:cs5460功能:初始化,读写5460。	
***********************************************/
#define _CS5460A
#include  "includes.h"

void	Initi5460A(void);                       //初始化5460 
void  	Rest5460A(void);                        //复位5460
void  	Sync_5460A(void);                        //写5460A同步命令
void  	Clear5460A(void);                       //清5460A状态寄存器
void    Wr_interrupt(void);						//写中断屏蔽寄存器
void    Wr_configure(void);	 					//写配置寄存器

void  	Wr5460A(uchar *DP_Buf,uchar Buf_Count); //写5460命令
void	Wr_ADByte(uchar	temp);                  //写5460A一个字节
void	Rd5460A(uchar *DP_Buf,uchar AD_Comd);   //读5460A寄存器
uint8	Rd_ADByte(void);                        //读5460A一个字节

uchar  	Rest5460A_Time;                         //启动AD时,AD屏蔽次数
//-----------------------------------------------------
void	Initi5460A(void)
{
		Rest5460A_Time = 2;
    	Sync_5460A();                 
		Wr_interrupt();
		Wr_configure();
		Clear5460A();
}
//---------------------------------------------
void  Rest5460A(void)
{
		REST_AD = 0;                     
		_delay_ms(10);
		REST_AD = 1;
}
//-------------------------------------------------------
void  Sync_5460A(void)
{
		uchar AD_Buf[4];
		
		AD_Buf[0] = 0xff;              
		AD_Buf[1] = 0xff;
		AD_Buf[2] = 0xff;
		AD_Buf[3] = 0xfe;
		
		CS_AD_A = 0;
    	CS_AD_B = 0;    
		Wr5460A(AD_Buf,4);
		CS_AD_A = 1;
    	CS_AD_B = 1;    
}
//---------------------------------------------
void    Clear5460A(void)
{
		uchar AD_Buf[4];
		
		AD_Buf[0] = 0x5e;             
		AD_Buf[1] = 0xff;
		AD_Buf[2] = 0xff;
		AD_Buf[3] = 0xff;
    	CS_AD_A = 0;		
		Wr5460A(AD_Buf,4);		
		CS_AD_A = 1;
		
    	CS_AD_B = 0;		
		Wr5460A(AD_Buf,4);		
		CS_AD_B = 1;    
}
//---------------------------------------------
void   Wr_interrupt(void)
{
       uchar AD_Buf[4];
		AD_Buf[0] = 0x74;             	
		AD_Buf[1] = 0x80;			  
		AD_Buf[2] = 0x00;			  
		AD_Buf[3] = 0x00;
		CS_AD_A = 0;
    	CS_AD_B = 0;    
		Wr5460A(AD_Buf,4);
		CS_AD_A = 1;
    	CS_AD_B = 1;
}

//------------------------------------------------
void    Wr_configure(void)
{
        uchar AD_Buf[4];
	    AD_Buf[0] = 0x40;            
    	AD_Buf[1] = 0x04;            
    	AD_Buf[2] = 0x00;			 
		AD_Buf[3] = 0x61;			 
		CS_AD_A = 0;				 
    	CS_AD_B = 0;    			 
		Wr5460A(AD_Buf,4);
		CS_AD_A = 1;
    	CS_AD_B = 1;
} 
//---------------------------------------------------
void	Wr5460A(uchar *DP_Buf,uchar Buf_Count)
{
		uchar i;
		
		SI_AD = 0;
		CLK_AD = 0;
		_delay_us(5);
		for(i=0;i<Buf_Count;i++)
		   {
			  Wr_ADByte(*DP_Buf);             
		  	  DP_Buf++;
		    }
}		   
//---------------------------------------------------
void	Wr_ADByte(uchar temp)
{
	  uchar i;
	  
	  OS_CLOSE_INT();
	  for(i=0;i<8;i++)    
	     {
	  	    if (temp & 0x80) 
		       { SI_AD = 1; } 
			else 
			   { SI_AD = 0; } 
			temp <<= 1;
	     	CLK_AD = 1;
	  	    _delay_us(5);	  	
	  	    CLK_AD = 0;
	  	    _delay_us(5);
	      }
	  OS_OPEN_INT();	
}
//----------------------------------------------------
void	Rd5460A(uchar *DP_Buf,uchar AD_Comd)
{
		uchar	i;
		
		CLK_AD = 0;
		_delay_us(5);		
		Wr_ADByte(AD_Comd);                
		SI_AD = 1;
		for(i=0;i<3;i++,DP_Buf++)
			{ *DP_Buf = Rd_ADByte(); }
}
//-----------------------------------------------------

uint8	Rd_ADByte(void)
{
	uchar i;
	uchar temp = 0;
	
	OS_CLOSE_INT();
	for(i=0;i<8;i++)
	   {
	      CLK_AD = 1;
		  _delay_us(5);
		  temp <<= 1;
		  if (SO_AD == 1) temp++;		
		  CLK_AD = 0;
		  _delay_us(5);		
	    }
	OS_OPEN_INT();	
	return (temp);
}		
//--------------------------------------------
  

⌨️ 快捷键说明

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