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

📄 i2c.h

📁 VFD荧光显示驱动程序
💻 H
字号:
#ifndef  _I2C_H_
#define  _I2C_H_
#include <REGX51.H>	
#include <intrins.h>
#include "i2c.h" 
#define scl P1_6   //scl
#define sda P1_7     //sda  
#define uint unsigned int
#define uchar unsigned char	 
////////////////延时程序//////////////////
void delay(uint i)
{
 uchar j;
 while(--i)
 {
   for(j=0;j<20;j++)_nop_();
 }											                   
}
/////////I2C///////////////////	 
//////////////////////////////////
 start()
{ 
	
	sda=1;
	scl=1;
	_nop_();
	sda=0;
	_nop_();
	scl=0;
	 
}																    
//////////I2C停止/////////	/
 stop()
 { 
	sda=0;
	_nop_();
	scl=1;
	_nop_();
	sda=1;
 } 
 /////////I2C读一个字节//////////////
  unsigned char rd(void)
{ 
   uchar out;
  uchar i; //有8位数据

	for(i=0;i<8;i++)
	{   sda=1;delay(1); 
	    scl=1;delay(1);
	    out|=sda;delay(1);		    
		scl=0; delay(1);
	 if(i<7) out<<=1;//下一位 
	}
	sda=1;delay(1);
	scl=0; delay(1); 
	return out;
}   

 /////////////////////I2C写一个字节/////////////////////////
void wd(unsigned char dd) //
{ 
    uchar in,i=8;
	in=dd;
	while(i--)
	{
	    sda=(in&0x80);delay(1);
		scl=1; 
		delay(1);
		scl=0;delay(1);
		in<<=1;delay(1);
	}
	sda=1;
	scl=1;
}  
/****************I2C不应答**************
noack()
{
sda=1;
scl=1;
delay(2);
scl=0;
delay(2);
sda=0;

} 
/**********I2C等待器件应答*************/
ack(){
         uchar i=150;
		while (--i) 			  //等待AcK
		{	 
			sda=1; 			  //释放总线
			if (sda==0)break; //跳出
			scl=0; 
		}
		scl=0;		 
		    
	   }
#endif

⌨️ 快捷键说明

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