首页 > 代码库 > 单片机模拟 IIC 总线与 EEPROM(AT24C02)通信
单片机模拟 IIC 总线与 EEPROM(AT24C02)通信
数据有效性:
起始和终止信号时序:
设备地址:
写字节时序:
读数据时序:
函数模拟 IIC 总线 时序:
/**************************************/ /******模拟I2C总线操作函数*************/ /**************************************/ //延时函数 void Delay() { ; ; } //初始化 void I2C_Init() { SDA = 1; SCL = 1; } //起始信号 void I2C_Start() { SDA = 1; Delay(); SCL = 1; Delay(); SDA = 0; Delay(); } //终止信号 void I2C_Stop() { SDA = 0; Delay(); SCL = 1; Delay(); SDA = 1; Delay(); } //应答信号 void I2C_Acknowledge() { unsigned char i; SCL = 1; Delay(); while((SDA == 1) && (i<250)){ //在一定时间内等待应答信号 i++; } SCL = 0; Delay(); } //写一个字节 void I2C_WriteByte(unsigned char Data) { unsigned char i,temp; temp = Data; SCL = 0; Delay(); for(i = 0;i < 8;i++){ temp = temp<<1; SDA = CY; //CY为PSW寄存器的溢出位 Delay(); SCL = 1; Delay(); SCL = 0; Delay(); } SDA = 1; Delay(); } //读一个字节 unsigned char I2C_ReadByte() { unsigned char i,temp,Data; SCL = 0; Delay(); SDA = 1; Delay(); for(i = 0;i < 8;i++){ SCL = 1; Delay(); temp = SDA; Data = http://www.mamicode.com/(Data<<1)|temp;>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。