#include<reg51.h>
#include<intrins.h>
#define OP_READ 0xa1
#define OP_WRITE 0xa0
sbit SDA=P1^7;
sbit SCL=P1^6;
void delay1ms()
{ int i;
for(i=0;i<330;i++);
}
void delaynms(unsigned int j)
{ int i;
i=j;
for(i=0;i<330;i++)
delay1ms();
}
void start()
{ SDA=1;
SCL=1;
_nop_();
_nop_();
SDA=0;
_nop_();
SCL=0;
}
void stop()
{ SDA=0;
SCL=1;
_nop_();
_nop_();
SDA=1;
_nop_();
SCL=0;
}
char ReadData()
{ int i;
char x ;
for(i=1;i<=8;i++)
{ SCL=1;
x<<=1;
x=(char)x|SDA;
SCL=0;
}
return (x);
}
void WriteCurrent(char W)
{ int i;
for(i=1;i<=8;i++)
{ SDA=(bit)(W&0x80);
_nop_();
SCL=1;
_nop_();
_nop_();
SCL=0;
W<<=1;
}
}
bit TestAck()
{ bit ask_bit;
SDA=1;
_nop_();
SCL=1;
_nop_();
ask_bit=SDA;//-1-0-1-0
SCL=0;
ask_bit=SDA;
return ask_bit;
}
void WriteSet(unsigned char add,char datas)
{ start();
WriteCurrent(OP_WRITE) ;
TestAck();
WriteCurrent(add) ;
TestAck();
WriteCurrent(datas) ;
TestAck();
stop();
delaynms(4);
}
///////////////////////////////
unsigned char ReadCurrent()
{ char x;
start();
WriteCurrent(OP_READ) ;
TestAck();
x= ReadData() ;
stop();
return x;
}
char ReadSet(unsigned char set_addr)
{ char x ;
start();
WriteCurrent(OP_WRITE) ;
TestAck();
WriteCurrent(set_addr) ;
TestAck();
x= ReadCurrent();
return(x);
stop();
}
main()
{ SDA=1;
SCL=1;
WriteSet(0x36,0x0a);
P1= ReadSet(0x36);
while(1);
}
i2c.rar_I2C proteus
版权申诉
155 浏览量
2022-09-24
06:12:29
上传
评论
收藏 74KB RAR 举报
刘良运
- 粉丝: 68
- 资源: 1万+
最新资源
- 下载安装这个软件.apk
- 【数据集详细解释及案例分析】数据集详细解释及案例分析
- 基于SHT71温湿度传感器、STM32F103C8T6、LCD1602温湿度采集显示系统proteus仿真设计
- 基于TH02温湿度传感器、STM32F103C8T6、LCD1602、FREERTOS的温湿度采集系统proteus仿真设计
- 【TCP-IP协议详细解释及案例分析】TCP-IP协议详细解释及案例分析
- 一文搞懂 LSTM(长短期记忆网络).rar
- 【autosar简介及基本案例解析】autosar简介及基本案例解析
- java模拟斗地主洗牌发牌
- springboot+vue登录系统 vue部分
- 常用常见 SQL语句语法
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈