文档详情

51单片机EEprom的存取.doc

发布:2017-04-03约6.51千字共5页下载文档
文本预览下载声明
/*************************************************************************************************** 工程名称: 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信号来作为收到一个字的应答信号) //*****
显示全部
相似文档