51单片机EEprom的存取.doc
文本预览下载声明
/***************************************************************************************************
工程名称: IIC
功能描述: 每按下一次复位键或重新给系统上电,发光二极管表示的数据加1,实现记录开机次数。
硬件连接: 用8位杜邦线将J8与J13连接,2位杜邦线分别将J11_7与J17_SDA、J11_6与J17_SCL连接
维护记录: 2011-8-22
***************************************************************************************************/
#include reg51.h //包含头文件
#includeintrins.h //_nop_();延时函数用
sbit sda=P2^7; //数据线
sbit scl=P2^6; //时钟线
#define uchar unsigned char
#define uint unsigned int
//**************************************************************************************************
//延时
//**************************************************************************************************
delay(uint time) //int型数据为16位,所以最大值为65535
{
uint i,j; //定义变量i,j,用于循环语句
for(i=0;itime;i++) //for循环,循环50*time次
for(j=0;j50;j++); //for循环,循环50次
}
//**************************************************************************************************
//启动(SCL为高,SDA由高变为低是一个开始条件)
//**************************************************************************************************
void start()
{
sda=1; //数据线置高,
_nop_(); //延时
scl=1; //时钟线置高
_nop_(); //延时
sda=0; //数据线置低,由高变低
_nop_(); //延时
scl=0; //时钟线置低,准备发送或接收数据,总线进入忙状态(I2C总线在空闲状态时,SDA与SCL均被置高)
_nop_(); //延时
}
//**************************************************************************************************
//停止(SCL为高,SDA由低变为高是一个结束条件)
//**************************************************************************************************
void stop()
{
sda=0; //数据线置低
_nop_(); //延时
scl=1; //时钟线置高
_nop_(); //延时
sda=1; //数据线置高,由低变高
_nop_(); //延时
}
//**************************************************************************************************
//检测应答(所有的地址和数据字都是以8bit,在第9个时钟周期,从器件发出0信号来作为收到一个字的应答信号)
//*****
显示全部