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

📄 standard_i2c.h

📁 通过AT89S52的I/O口模拟IIC接口,读写控制AT24C256,适用于AT24C64、AT24C256、At24C512
💻 H
字号:
/*--------------------------------------------------------------------------
I2C.H
Design For : I2C 器件
Description: I2C总线的标准通讯模式(12MHz晶振)
Author:xieqin
CopyRight:2004.9.7
--------------------------------------------------------------------------*/
#ifndef __I2C_H__
#define __I2C_H__ 

#include<intrins.h>

sbit SCL=P1^1;  //串行时钟口
sbit SDA=P1^0;  //串行数据口                                 
        
void Start_I2C()  //申请I2C总线函数
{
    SDA=1;  
    SCL=1; 
    _nop_(); _nop_();_nop_(); _nop_();  
    SDA=0;  
    _nop_(); _nop_();_nop_(); _nop_(); 
    SCL=0;    
}

void Stop_I2C()  //释放I2C总线函数
{
    SDA=0;    
    SCL=1; 
    _nop_(); _nop_();_nop_(); _nop_();  
    SDA=1;   
    _nop_(); _nop_(); _nop_(); _nop_();                 
    SCL=0;
}


void AckS_I2C(bit c) //发送应答位函数
{
   if(c)SDA=1;
    else SDA=0;	
    SCL=1;
    _nop_(); _nop_(); _nop_(); _nop_();    
    SCL=0;   
        
}


bit SendByte_I2C(unsigned char val)//发送单字节数据函数
{
  unsigned char x,i;
   bit c;
    for(x=0x80,i=0;i<8;i++,x>>=1)
    {
    	if(val&x)SDA=1; 
     	else SDA=0;     
     	SCL=1;    
     	SCL=0;
    }  
    SDA=1;  
    SCL=1;
    _nop_(); _nop_(); _nop_(); _nop_(); 
    c=SDA;
	SCL=0;  
    return c;
}

unsigned char  ReadByte_I2C() //接收单字节数据函数
{
   unsigned char i,x,val;
   for(SDA=1,i=0,x=0x80,val=0x00;i<8;i++,x>>=1)
   {
        SCL=0;
    	_nop_(); _nop_(); _nop_(); _nop_(); 
    	SCL=1;
    	if(SDA)val|=x;
   }
        SCL=0;	
	return val;
}


#endif
                

⌨️ 快捷键说明

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