include <REGX52.H>
sbit SCL=P2^1;
sbit SDA=P2^0;
void IC2_Start(void)
{
SCL=1;
SDA=1;
SDA=0;
SCL=0;
}
void IC2_End(void){
SDA=0;
SCL=1;
SDA=1;
}
void I2C_Send(unsigned char Byte){
unsigned char i;
SCL=0;
for(i=0;i<8;i++){
SDA=Byte&(0x80>>i);
SCL=1;
SCL=0;
}
}
unsigned char I2C_Receive(void){
unsigned char Byte,i;
SDA=1;
for(i=0;i<8;i++){
SCL=1;
Byte=SDA|(0x00>>i);
SCL=0;
}
return Byte;
}
void Send_Ack(bit ack){
SDA=1;
SDA=ack;
SCL=1;
SCL=0;
}
bit Receive_Ack(void){
bit ack;
SDA=1;
SCL=1;
ack=SDA;
SCL=0;
return ack;
}
头文件
ifndef I2C_H
define I2C_H
void IC2_Start(void);
void IC2_End(void);
void I2C_Send(unsigned char Byte);
unsigned char I2C_Receive(void);
void Send_Ack(bit ack);
bit Receive_Ack(void);
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升