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

📄 i2c24c64.c

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 C
字号:
#include <e:\app\door\soft0814\main.h>
#include <e:\app\door\soft0814\I2C24C64.h>
#include <iom128v.h>
#include <macros.h>
unsigned char ram1,ram2;

void  Delay_10_uS(void)
{
 char i=5;
 while(i--);
}
void Delay_mS()
{
  unsigned char i=2000;   
  while(i--); 
}
void I2C_Start(void)
{ 
  	 SET_SDA();
 	 Delay_10_uS(); 
 	 CLEAR_SDA();
 	 Delay_10_uS();
 	 CLEAR_SCL();
 	 Delay_10_uS();
}
void  I2C_Stop(void)
{
 	  Delay_10_uS();
 	  CLEAR_SDA();
 	  Delay_10_uS();
 	  SET_SCL();
 	  Delay_10_uS();
 	  SET_SDA();
 	  Delay_10_uS();
}
void I2C_Ack(void)
{
 	 Delay_10_uS();
 	 CLEAR_SDA();
 	 Delay_10_uS();
 	 SET_SCL();
 	 Delay_10_uS();
 	 CLEAR_SCL();
 	 Delay_10_uS();
}
void I2C_Nack(void)
{
 	 Delay_10_uS();
 	 SET_SDA();
 	 Delay_10_uS();
 	 SET_SCL();
 	 Delay_10_uS();
 	 CLEAR_SCL();
 	 Delay_10_uS();
}
unsigned char I2C_Send_Byte(unsigned char d)
{
 	unsigned char i;
 	unsigned char bit_ack; 
 	for(i=0;i<8;i++)
	{
	 	if((d&0x80)==0x80)
		SET_SDA();
		else
		CLEAR_SDA();
		
		SET_SCL();
		d=d<<1;
		CLEAR_SCL();
	}
 	SET_SDA();
 	Delay_10_uS();
 	SET_SCL();
 	Delay_10_uS();
 	if((PIND&0x02)==0x02)
	bit_ack=0;
	else
	bit_ack=1;
	
 	CLEAR_SCL();
 	Delay_10_uS();  
 	return bit_ack;
}
unsigned char I2C_Receive_Byte(void)
{
 		 unsigned char i, d;  
 		 for(i=0;i<8;i++)
 		 {
  		  	   d = d << 1; 
  			   CLEAR_SCL();  
  			   Delay_10_uS();
  			   SET_SCL();  
  			   Delay_10_uS();
  			   if(PIND&0x02)d=d+1;
  			   CLEAR_SCL();
  			   Delay_10_uS();
 		}
 		CLEAR_SCL();
 		Delay_10_uS();
 		return d;
}
unsigned char send_address(unsigned char address) 
{
 	I2C_Start();
 	if(I2C_Send_Byte(0xa0)&&I2C_Send_Byte(address))
        return (1);
 	else
        return (0);
}
unsigned char send_read(unsigned char aa)
{
 		 I2C_Start();
		 if(I2C_Send_Byte(aa))
   		 {
    	  		I2C_Stop();
   		}
}


/*main()
{ 
aa:
  I2C_Stop();
  if(send_address(0))
  {
  //I2C_Start();
  send_read(0xa1);
  ram1=I2C_Receive_Byte();
  if(ram1==0){led6=0;led7=1;}
  else if(ram1==1){led6=1;led7=0;}
  else if(ram1==2){led6=1;led7=1;}
  }
  else
  {
  led6=0;led7=0;
  }
  while(p1_2);
  if(send_address(0))
  {
  if(I2C_Send_Byte(1))
  {led6=0;led7=0;}
  I2C_Stop();
  Delay_mS();  
  while(!p1_2);
  goto aa;
  }
}*/

⌨️ 快捷键说明

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