iiccon.h

来自「自动取款机系统」· C头文件 代码 · 共 110 行

H
110
字号
void delay_2()
{ ; ; }
/*void delay1(uchar x)//x毫秒延迟
{
	uchar a,b;
	for(a=x;a>0;a--)
	 for(b=120;b>0;b--);
}
*/
void start()//iic开始信号
{
	sda=1;	
	delay_2();
	scl=1;
	delay_2();
	sda=0;
	delay_2();
}
void stop()//IIc停止信号
{
	sda=0;
	delay_2();
	scl=1;
	delay_2();
	sda=1;
	delay_2();
}
void respons()  //iic应答信号
{
	uchar i;
	scl=1;
	delay_2();
	while((sda==1)&&(i<250))i++;
	scl=0;
	delay_2();
}
void  ic_init()//iic初始化
{
 	scl=1;
 	delay_2();
	sda=1;
	delay_2();
}
void write_byte(uchar date)//向iic写单个数据
{
	uchar i,temp;
	temp=date;


	for(i=0;i<8;i++)
	{
		temp=temp<<1;
		scl=0;
	    delay_2();
		sda=CY;
		delay_2();
		scl=1;
		delay_2();
	//	scl=0;
     //   delay();
	}
	scl=0;
	delay_2();
	sda=1;
	delay_2();
}
uchar read_byte()//从iic读单个数据
{
	uchar i,k;
	scl=0;
	delay_2();
	sda=1;
	delay_2();
	for(i=0;i<8;i++)
	{
		scl=1;
		delay_2();	
		k=(k<<1)|sda;
		scl=0;
		delay_2();	
	}
	return k;
}
void write_add(uchar address,uchar date)//向iic固定地址写数据
{
	start();
	write_byte(0xa0);
	respons();
	write_byte(address);
	respons();
	write_byte(date);
	respons();
	stop();
}
uchar read_add(uchar addr)//从iic固定地址读数据
{
	uchar date;
	start();
	write_byte(0xa0);
	respons();
	write_byte(addr);
	respons();
	start();
	write_byte(0xa1);
	respons();
	date=read_byte();
	stop();
	return date;
}

⌨️ 快捷键说明

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