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

📄 fx2_to_extsyncfifo.c

📁 TI C5409 IIC 接口程序
💻 C
字号:

----------------------------------------------------*/
void Set_IIC_Ch1(unsigned char Addr,unsigned char R);
//unsigned char Read_IIC(unsigned char Addr);
void IIC_Init_Ch1(void);
void IIC_Start_Ch1(void);
void IIC_Stop_Ch1(void);
void IIC_Ack_Slave_Ch1(void);
//void IIC_Ack_Master(void);
void IIC_Write_Ch1( unsigned char d );
//void Set_IIC_DR0_Ch1(unsigned char Addr,unsigned char R);

void Set_IIC_Ch2(unsigned char Addr,unsigned char R);
//unsigned char Read_IIC(unsigned char Addr);
void IIC_Init_Ch2(void);
void IIC_Start_Ch2(void);
void IIC_Stop_Ch2(void);
void IIC_Ack_Slave_Ch2(void);
//void IIC_Ack_Master(void);
void IIC_Write_Ch2( unsigned char d );

void Set_IIC_Ch1(unsigned char Addr,unsigned char R)  
{
 unsigned char a,Reg;

 a=Addr|0x50;
 Reg=R&0x3F;
 
 
 IIC_Start_Ch1();
 IIC_Write_Ch1( a);    
 IIC_Ack_Slave_Ch1();
 IIC_Write_Ch1(0xA0);
 IIC_Ack_Slave_Ch1();
 IIC_Write_Ch1(Reg);
// IIC_Ack_Slave();
 IIC_Stop_Ch1();
 Delay_ms( 10 );
 

}

/*
void Set_IIC_DR0_Ch1(unsigned char Addr,unsigned char R)
{
	unsigned char a,Reg;

  a=Addr|0x50;
  Reg=R&0x3F;
  IIC_Start_Ch1();
  IIC_Write_Ch1( a);    
  IIC_Ack_Slave_Ch1();
  IIC_Write_Ch1(0xC4);
  IIC_Ack_Slave_Ch1();
  IIC_Write_Ch1(Reg);
//  IIC_Ack_Slave();
  IIC_Stop_Ch1();
  Delay_ms( 100 );
}



unsigned char Read_IIC(unsigned char Addr)   //Reg0:R1
{
 unsigned char a;
 unsigned char i,rdata;

 a=Addr|0x50;



 
 
 rdata=0;




 IIC_Start();
 IIC_Write_8bit( a);    
 IIC_Ack_Slave();
 IIC_Write_8bit(0x90);
 IIC_Ack_Slave();

 for( i=0; i<8; i++ )
  {
   rdata<<=1;
   SCL_Ch1=0; Delay_ms(1);
   SCL_Ch1=1; Delay_ms(1); 
   rdata|=SDA_Ch1;
  }
 SCL_Ch1=0; Delay_ms(10);
 
 IIC_Ack_Master();
 IIC_Stop();
 
 return rdata;
 


}



void IIC_Inc(unsigned char Addr,unsigned char n)
{
	unsigned char a,i;

  a=Addr|0x50;
   
  IIC_Start();
  IIC_Write_8bit( a);    
  IIC_Ack_Slave();
  IIC_Write_8bit(0x20);
  IIC_Ack_Slave();
  
  SCL_Ch1=0;Delay_ms(1);
  SDA_Ch1=1;Delay_ms(1);
  
  for (i=0;i<n;i++)
  {
  	SCL_Ch1=1;Delay_ms(10);
  	SCL_Ch1=0;Delay_ms(10);
  }
  IIC_Stop();
  Delay_ms( 10 );	   
}

void IIC_Dec(unsigned char Addr,unsigned char n)
{
	unsigned char a,i;

  a=Addr|0x50;
   
  IIC_Start();
  IIC_Write_8bit( a);    
  IIC_Ack_Slave();
  IIC_Write_8bit(0x20);
  IIC_Ack_Slave();
  
  SCL_Ch1=0;Delay_ms(1);
  SDA_Ch1=0;Delay_ms(1);
  
  for (i=0;i<n;i++)
  {
  	SCL_Ch1=1;Delay_ms(10);
  	SCL_Ch1=0;Delay_ms(10);
  }
  IIC_Stop();
  Delay_ms( 10 );	   
}

*/

void IIC_Init_Ch1(void)
{
 //  EIE|=0x01;

   SCL_Ch1=1;  _nop_();
   SDA_Ch1=1;  _nop_();
}

void IIC_Start_Ch1(void)
{
   SCL_Ch1=1;  Delay_ms(1);
   SDA_Ch1=1;  Delay_ms(1);
   SDA_Ch1=0;  Delay_ms(1);
   SCL_Ch1=0;  Delay_ms(1);
}

void IIC_Stop_Ch1(void)
{
   SCL_Ch1=1;  Delay_ms(1);
   SDA_Ch1=0;  Delay_ms(1);
   SDA_Ch1=1;  Delay_ms(1);
   SCL_Ch1=0;  Delay_ms(1);
}

void IIC_Ack_Slave_Ch1(void)
{
 /*  SDA_Ch1=0;  Delay_ms(1);
   SCL_Ch1=1;  Delay_ms(1);
   Delay_ms( 10 );
   SCL_Ch1=0;  Delay_ms(1);
*/
SCL_Ch1=0;  LED_Wk=1;
while(SDA_Ch1!=0)
{
_nop_();

}
LED_Wk=1;
//Delay_ms(1);
_nop_();_nop_();
 //Delay_ms(1);
SCL_Ch1=1;Delay_ms(1);

}


/*
void IIC_Ack_Master(void)
{
   SDA_Ch1=1;  Delay_ms(1);
   SCL_Ch1=1;  Delay_ms(1);
   Delay_ms( 10 );
   SCL_Ch1=0;  Delay_ms(1);
}
*/


void IIC_Write_Ch1( unsigned char d )
{
   char i;
   SCL_Ch1=0;  Delay_ms(1);
   for( i=0; i<8; i++ )
   {
      SDA_Ch1=(bit)(d&0x80);  Delay_ms(1);
	  d <<= 1;
	  SCL_Ch1=1;  Delay_ms(1);
	  SCL_Ch1=0;  Delay_ms(1);
   }
}




void Delay_ms( unsigned int n )//50us
{
   unsigned int i;
   for( i=0; i<20*n; i++ )
   {
      _nop_();
   }
}



/*
void IIC_Write_6bit( unsigned char d )
{
   char i;
   d&=0x3F;
   d <<= 2;
   SCL_Ch1=0;  Delay_ms(1);
   for( i=0; i<6; i++ )
   {
      SDA_Ch1=(bit)(d&0x80);  Delay_ms(1);
	  d <<= 1;
	  SCL_Ch1=1;  Delay_ms(1);
	  SCL_Ch1=0;  Delay_ms(1);
   }
}
*/



void Set_IIC_Ch2(unsigned char Addr,unsigned char R)  
{
 unsigned char a,Reg;

 a=Addr|0x50;
 Reg=R&0x3F;
 
 
 IIC_Start_Ch2();
 IIC_Write_Ch2( a);    
 IIC_Ack_Slave_Ch2();
 IIC_Write_Ch2(0xA0);
 IIC_Ack_Slave_Ch2();
 IIC_Write_Ch2(Reg);
// IIC_Ack_Slave();
 IIC_Stop_Ch2();
 Delay_ms( 10 );
 

}
void Set_IIC(char addr,char cmmd,char data)
{
 
 IIC_Init();
 
 IIC_Star();
 
 IIC_Write( addr);
 IIC_Slave_Ack();
 
 IIC_Write( cmmd);
 IIC_Slave_Ack();
 
 IIC_Write( data);
 IIC_Slave_Ack();
 
 IIC_Stop();
}

/*
void Set_IIC_DR0_Ch2(unsigned char Addr,unsigned char R)
{
	unsigned char a,Reg;

  a=Addr|0x50;
  Reg=R&0x3F;
  IIC_Start_Ch2();
  IIC_Write_Ch2( a);    
  IIC_Ack_Slave_Ch2();
  IIC_Write_Ch2(0xC4);
  IIC_Ack_Slave_Ch2();
  IIC_Write_Ch2(Reg);
//  IIC_Ack_Slave();
  IIC_Stop_Ch2();
  Delay_ms( 100 );
}

*/
void IIC_Init_Ch2(void)
{
 //  EIE|=0x01;

   SCL_Ch2=1;  _nop_();
   SDA_Ch2=1;  _nop_();
}

void IIC_Start_Ch2(void)
{
   SCL_Ch2=1;  Delay_ms(1);
   SDA_Ch2=1;  Delay_ms(1);
   SDA_Ch2=0;  Delay_ms(1);
   SCL_Ch2=0;  Delay_ms(1);
}

void IIC_Stop_Ch2(void)
{
   SCL_Ch2=1;  Delay_ms(1);
   SDA_Ch2=0;  Delay_ms(1);
   SDA_Ch2=1;  Delay_ms(1);
   SCL_Ch2=0;  Delay_ms(1);
}

void IIC_Ack_Slave_Ch2(void)
{
 /*  SDA_Ch2=0;  Delay_ms(1);
   SCL_Ch2=1;  Delay_ms(1);
   Delay_ms( 10 );
   SCL_Ch2=0;  Delay_ms(1);
*/
SCL_Ch2=0;  LED_Wk=1;
while(SDA_Ch2!=0)
{
_nop_();

}
LED_Wk=1;
//Delay_ms(1);
_nop_();_nop_();
 //Delay_ms(1);
SCL_Ch2=1;Delay_ms(1);

}


/*
void IIC_Ack_Master(void)
{
   SDA_Ch2=1;  Delay_ms(1);
   SCL_Ch2=1;  Delay_ms(1);
   Delay_ms( 10 );
   SCL_Ch2=0;  Delay_ms(1);
}
*/


void IIC_Write_Ch2( unsigned char d )
{
   char i;
   SCL_Ch2=0;  Delay_ms(1);
   for( i=0; i<8; i++ )
   {
      SDA_Ch2=(bit)(d&0x80);  Delay_ms(1);
	  d <<= 1;
	  SCL_Ch2=1;  Delay_ms(1);
	  SCL_Ch2=0;  Delay_ms(1);
   }
}

⌨️ 快捷键说明

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