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

📄 7022_a.c

📁 计量芯片7022 与dsp f206的spi通讯程序
💻 C
字号:
#include	<C:\TDS-EMU2XX-1\gzy\tyclh.h>
#include	<C:\TDS-EMU2XX-1\gzy\ADio.h> 

extern unsigned i_574vol;

/*---------------------7022_a----------------------------*/

#define cs_a_h    i_574vol |= 0x0020;    CsIo574= i_574vol; Wait;                                   
#define cs_a_l    i_574vol &= 0x00df;    CsIo574= i_574vol; Wait;
#define sclk_a_h    i_574vol |= 0x0008;    CsIo574= i_574vol; Wait; 
#define sclk_a_l    i_574vol &= 0x00f7;    CsIo574= i_574vol; Wait;
#define data_a_h    i_574vol |= 0x0010;    CsIo574= i_574vol; Wait;
#define data_a_l    i_574vol &= 0x00ef;    CsIo574= i_574vol; Wait;	

/*---------------------7022_b----------------------------*/

#define cs_b_h    i_574vol |= 0x0004;    CsIo574= i_574vol; Wait;                                   
#define cs_b_l    i_574vol &= 0x00fb;    CsIo574= i_574vol; Wait;
#define sclk_b_h    i_574vol |= 0x0001;    CsIo574= i_574vol; Wait; 
#define sclk_b_l    i_574vol &= 0x00fe;    CsIo574= i_574vol; Wait;
#define data_b_h    i_574vol |= 0x0002;    CsIo574= i_574vol; Wait;
#define data_b_l    i_574vol &= 0x00fd;    CsIo574= i_574vol; Wait;
/*------------------------------------------------------*/
/*void read7022_a(int com);    
void write7022_a(int com,long data);
void read7022_b(int com);    
void write7022_b(int com,long data); */

/*-------------------------7022_a--------------------------*/

long read7022_a(int com)
{	long data=0;
	long jj=0;
	int i=0;
	int k=0x80;
	reg_aspcr&= 0xfff0;	
	cs_a_h;
	sclk_a_l;
	cs_a_l;
	for (i=0;i<=7;i++)  		 /*送地址*/
	{
		if (com&k)
		{
		    sclk_a_h;
   		    data_a_h;
		    sclk_a_l;
			
	 	}
	 	else 
	 	{
	 	    sclk_a_h;
   		    data_a_l;
		    sclk_a_l;
	 	}
		   k=k/2;
		   
	}
	Wait;Wait;Wait;
	     for (i=23;i>=0;i--)	/*读数据*/
    	    {
    	    	sclk_a_h;
    	        jj=reg_iosr&0x0001;			
		jj=jj<<i;
		data=jj+data;
		sclk_a_l;
	    }
		cs_a_h;
		return(data);	
}		
/*-----------------------------------------------------------*/	
	
void write7022_a(int com,long data)
{	
	long jj=0x800000;
	int i=0;
	int k=0x80;
//	reg_aspcr&= 0xfff0;	
	cs_a_h;
	sclk_a_l;
	cs_a_l;
	for (i=0;i<=7;i++)  		 /*送地址*/
	{
		if (com&k)
		{
		    sclk_a_h;
   		    data_a_h; 
		    sclk_a_l;
			
	 	}
	 	else 
	 	{
	 	    sclk_a_h;
   		    data_a_l; 
		    sclk_a_l;
	 	}
		   k=k/2;
		   
	}

	    for (i=0;i<=23;i++)  		 /*写数据*/
	{
		if (data&jj)
		{
		    sclk_a_h;
   		    data_a_h;
		    sclk_a_l;
			
	 	}
	 	else 
	 	{
	 	    sclk_a_h;
   		    data_a_l;
		    sclk_a_l;
	 	}
		   jj=jj/2;
		   
	}
		cs_a_h;
		
}			

/*====================7022_b===========================*/
long read7022_b(int com)
{	long data=0;
	long jj=0;
	int i=0;
	int k=0x80;	
	reg_aspcr&= 0xfff0;
	cs_b_h;
	sclk_b_l;
	cs_b_l;
	for (i=0;i<=7;i++)  		 /*送地址*/
	{
		if (com&k)
		{
		    sclk_b_h;
   		    data_b_h;
		    sclk_b_l;
			
	 	}
	 	else 
	 	{
	 	    sclk_b_h;
   		    data_b_l;
		    sclk_b_l;
	 	}
		   k=k/2;
		   
	}
	Wait;Wait;Wait;
	     for (i=23;i>=0;i--)	/*读数据*/
    	    {
    	    	sclk_b_h;
    	        jj=reg_iosr&0x0004;
    	        jj=jj>>2;			
		jj=jj<<i;
		data=jj+data;
		sclk_b_l;
	    }
		cs_b_h;
		return(data);	
}		
/*-----------------------------------------------------------*/	
	
void write7022_b(int com,long data)
{	
	long jj=0x800000;
	int i=0;
	int k=0x80;
//	reg_aspcr&= 0xfff0;	
	cs_b_h;
	sclk_b_l;
	cs_b_l;
	for (i=0;i<=7;i++)  		 /*送地址*/
	{
		if (com&k)
		{
		    sclk_b_h;
   		    data_b_h;
		    sclk_b_l;
			
	 	}
	 	else 
	 	{
	 	    sclk_b_h;
   		    data_b_l;
		    sclk_b_l;
	 	}
		   k=k/2;
		   
	}
/*	Wait;Wait;Wait;  */
	    for (i=0;i<=23;i++)  		 /*写数据*/
	{
		if (data&jj)
		{
		    sclk_b_h;
   		    data_b_h;
		    sclk_b_l;
			
	 	}
	 	else 
	 	{
	 	    sclk_b_h;
   		    data_b_l;
		    sclk_b_l;
	 	}
		   jj=jj/2;
		   
	}
		cs_b_h;
		
}			

/*-------------------------------------*/
 delaytime(int cishu)
{                       
int ii,i;
	for (ii=0;ii<cishu;ii++)
	{
	    for(i=0;i<0xf;i++)
		{	
			asm("	rpt #75");
			asm("	nop") ;
		} 
	}
}
/*------------------------------------------------------*/
void reset7022_a()
{
	i_574vol &= 0x00bf;
	CsIo574= i_574vol;
	delaytime(10);
	i_574vol |= 0x0040;  
	CsIo574= i_574vol;
	
	
}
/*------------------------------------------------------*/
void reset7022_b()
{
	i_574vol &= 0x007f;
	CsIo574= i_574vol;
	delaytime(10);
	i_574vol |= 0x0080;  
	CsIo574= i_574vol;
	
	
}

⌨️ 快捷键说明

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