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

📄 1233.c

📁 IIC总线的应用!本程序在测试实验中应用过!有别于网上常见的IIC协议程序!
💻 C
📖 第 1 页 / 共 2 页
字号:
	uchar i;
	i2c_start();
	SendByte(sla);
	if(ack==0)
		return(0);
	SendByte(suba);
	if(ack==0)
		return(0);
	i2c_start();
	SendByte(sla+1);
	if(ack==0)
		return(0);
	for(i=0;i<no-1;i++)
	{
		*s=RcvByte();
		i2c_ack(0);
		s++;
	}
	*s=RcvByte();
	i2c_ack(1);
	i2c_stop();
	return(1);
}
//***************************I2C BUS RECEIVE STRING***************************

//***************************I2C BUS SEND N BYTES***************************
bit Nsend(uchar sla,uchar suba,uchar *s,uchar no)//I2C BUS SEND N BYTES
{
	uchar i;
	i2c_start();
	SendByte(sla);
	if(ack==0)
		return(0);
	SendByte(suba);
	if(ack==0)
		return(0);
	for(i=0;i<no;i++)
	{
		SendByte(*s);
		if(ack==0)
			return(0);
		s++;
	}
	i2c_stop();
	return(1);
}
//***************************I2C BUS SEND N BYTES***************************

//***************************I2C BUS READ N BYTES***************************
bit NRead(uchar sla,uchar suba,uchar *s,uchar no)//I2C BUS READ N BYTES
{
	uchar i;
	i2c_start();
	SendByte(sla);
	if(ack==0)
		return(0);
	SendByte(suba);
	if(ack==0)
		return(0);
	i2c_start();
	SendByte(sla+1);
	if(ack==0)
		return(0);
	for(i=0;i<no-1;i++)
	{
		*s=RcvByte();
		i2c_ack(0);
		s++;
	}
	*s=RcvByte();
	i2c_ack(1);
	i2c_stop();
	return(1);
}
//***************************I2C BUS READ N BYTES***************************

//I2C FUNCTION STOP
//==================================================================================================


bit PCF8574_Write(BYTE bWrite_Data,BYTE bWrite_Address)
{
	BYTE sla;

	sla=0x70+bWrite_Address*2;
		
	i2c_start();
	SendByte(sla);
	if(ack==0)
		return(0);


	SendByte(bWrite_Data);
	if(ack==0)
		return(0);

	i2c_stop();

	return(1);


}
uchar PCF8574_Read(BYTE bWrite_Address)
{
	BYTE sla;
	
	sla=0x71+bWrite_Address*2;
		
	i2c_start();
	SendByte(sla);
	if(ack==0)
		return(0);


	sla=RcvByte();


	i2c_stop();

	return(sla);

}
bit judge_bit(BYTE j_data,BYTE s_data)
{
	BYTE byTemp;

	byTemp=PCF8574_Read(2);

	byTemp=byTemp & j_data;

	if(byTemp==s_data)
		return(0);
	else
		return(1);
}

bit Execute_Command_0x01(BYTE intOut)
{
	BYTE byTemp;
	BYTE byTemp1;
	BYTE byTemp2;

	bit bitResult;

	byTemp2=intOut;

	bitResult=0;
	if((byTemp2 & 0x80)==0x80)
		bitResult=1;

	byTemp2=byTemp2 & 0x7F;

	byTemp=(byTemp2-1) / 8;

	byTemp1=(byTemp2-1) % 8;


	byTemp2=0x01;
	byTemp2<<=byTemp1;

	if(bitResult==1)
	{
		byTemp1=RL_DO[byTemp] | byTemp2;
	}
	else
	{
		byTemp2=~byTemp2;
		byTemp1=RL_DO[byTemp] & byTemp2;
	}

	RL_DO[byTemp]=byTemp1;
	chrI2c=1;
/*
	Send(intOut);
	nc(50);
	Send(byTemp1);
	nc(50);
	Send(byTemp);
	nc(50);
*/
	PCF8574_Write(byTemp1,byTemp);
	delay(10);
	return(0);
}

bit Execute_Command_0x02(BYTE intInput)
{
	BYTE byTemp;
	BYTE byTemp1;
	BYTE byTemp2;

	bit bitResult;

	byTemp2=intInput;

	bitResult=0;
	if((byTemp2 & 0x80)==0x80)
		bitResult=1;

	byTemp=byTemp2 & 0x7F;

	byTemp=(byTemp-1) / 8;

	byTemp1=(byTemp2-1) % 8;


	byTemp2=0x01;
	byTemp2<<=byTemp1;
	byTemp1=byTemp2;


	chrI2c=2;
	byTemp2=PCF8574_Read(byTemp);	

	byTemp2=byTemp2 & byTemp1;

	if(bitResult==0)
	{
		if(byTemp1!=byTemp2)
				return(1);
	}
	else
	{
		if(byTemp1==byTemp2)
			return(1);
	}
	return(0);
}

void RS232_INI()
{
	BYTE i;

	for(i=0;i<15;i++)
		R_ARRAY[i]=0;

	RS232=0;
}

void main()
{
	bit blnT;

	BYTE byCommand;
	BYTE byTemp;

	int_init();
	port_init();
	config_init();
	delay(5);

	Send_String("Welcome to FCT",14);

	Send(0x0A);
	nc(23);
	Send(0x0D);
	nc(23);
	RS232_INI();

	while(1)
	{
		while(blnRev==0);
		
		blnRev=0;

		byCommand=R_ARRAY[0];

		switch(byCommand)
		{
			case 'W':
				{
					switch(R_ARRAY[1])
					{
						case '0':
							{
							byTemp=R_ARRAY[2];
							P0=byTemp;
							Send(byTemp);
							nc(50);
							Send(0x0D);
							nc(50);
							}
							break;
						case '1':
							{
							byTemp=R_ARRAY[2];
							P1=byTemp;
							Send(byTemp);
							nc(50);
							Send(0x0D);
							nc(50);
							}
							break;
						case '2':
							{
							byTemp=R_ARRAY[2];
							P2=byTemp;
							Send(byTemp);
							nc(50);
							Send(0x0D);
							nc(50);
							}
							break;
						case '3':
							{
							byTemp=R_ARRAY[2];
							P3=byTemp;
							Send(byTemp);
							nc(50);
							Send(0x0D);
							nc(50);
							}
							break;						
						default:
							break;																						
					}
				}
				break;
			case 'R':
				{
					switch(R_ARRAY[1])
					{
						case '0':
							{
							byTemp=P0;
							nc(5);
							Send(byTemp);
							nc(50);
							Send(0x0D);
							nc(50);
							}
							break;
						case '1':
							{
							byTemp=P1;
							nc(5);
							Send(byTemp);
							nc(50);
							Send(0x0D);
							nc(50);
							}
							break;
						case '2':
							{
							byTemp=P2;
							nc(5);
							Send(byTemp);
							nc(50);
							Send(0x0D);
							nc(50);
							}
							break;
						case '3':
							{
							byTemp=P3;
							nc(5);
							Send(byTemp);
							nc(50);
							Send(0x0D);
							nc(50);
							}
							break;						
						default:
							break;																						
					}

				}
				break;
			case 'A':
				{
					byTemp=AD_Read(R_ARRAY[1]);

					Send(byTemp);
					nc(23);
					Send(0x0A);
					nc(23);
					Send(0x0D);
					nc(23);
				}
				
				break;
			case 'K':
				{
					Execute_Command_0x01(R_ARRAY[1]);

					Send_String(R_ARRAY,RS232-1);
					Send(0x0A);
					nc(23);
					Send(0x0D);
					nc(23);
				}
				
				break;
			case 'I':
				{
					port_init();
				}
				break;
			case 'C':
				{
					chrI2c=1;
					byTemp=PCF8574_Read(0x02);	
					
					Send(byTemp);
					nc(23);
					Send(0x0A);
					nc(23);
					Send(0x0D);
					nc(23);
				}
				break;

			case 'B':                                     //add 2008.5.24
				{
					chrI2c=1;
					byTemp=PCF8574_Read(0x02);	
					byTemp=byTemp&0x11;

					Send(byTemp);
					nc(23);
					Send(0x0A);
					nc(23);
					Send(0x0D);
					nc(23);
				}
				break;



			case 'D':
				{
					chrI2c=2;
					switch(R_ARRAY[1])
					{
						case '0':
						{
							byTemp=PCF8574_Read(0x00);	
					
							Send(byTemp);
							nc(23);
							Send(0x0A);
							nc(23);
							Send(0x0D);
							nc(23);
						}
						break;
						case '1':
						{
							byTemp=PCF8574_Read(0x01);	
					
							Send(byTemp);
							nc(23);
							Send(0x0A);
							nc(23);
							Send(0x0D);
							nc(23);
						}
						break;							
						case '2':
						{
							byTemp=PCF8574_Read(0x02);
							
							Send(byTemp);
							nc(23);
							Send(0x0A);
							nc(23);
							Send(0x0D);
							nc(23);
						}
							break;							
						case '3':
						{
							byTemp=PCF8574_Read(0x03);
							
							Send(byTemp);
							nc(23);
							Send(0x0A);
							nc(23);
							Send(0x0D);
							nc(23);
						}
							break;
						case '4':
						{
							byTemp=PCF8574_Read(0x04);
							
							Send(byTemp);
							nc(23);
							Send(0x0A);
							nc(23);
							Send(0x0D);
							nc(23);
						}
							break;							
						default:
							break;																						
						}
					}
					break;								
				case 'E':
				{
					chrI2c=1;
					switch(R_ARRAY[1])
					{
						case '0':
						{
							byTemp=PCF8574_Write(R_ARRAY[2],0x00);
							
							Send(byTemp);
							nc(23);
							Send(0x0A);
							nc(23);
							Send(0x0D);
							nc(23);
						}
							break;
						case '1':
						{
							byTemp=PCF8574_Write(R_ARRAY[2],0x01);
							
							Send(byTemp);
							nc(23);
							Send(0x0A);
							nc(23);
							Send(0x0D);
							nc(23);
						}
							break;							
						case '2':
						{
							byTemp=PCF8574_Write(R_ARRAY[2],0x02);
							
							Send(byTemp);
							nc(23);
							Send(0x0A);
							nc(23);
							Send(0x0D);
							nc(23);
						}
							break;							
						case '3':
						{
							byTemp=PCF8574_Write(R_ARRAY[2],0x03);
							
							Send(byTemp);
							nc(23);
							Send(0x0A);
							nc(23);
							Send(0x0D);
							nc(23);
						}
							break;							
						default:
							break;																						
					}
				}
				break;								
			default:
				break;
		}
		RS232_INI();
	}
	for(;;);

}

⌨️ 快捷键说明

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