设备算法
。使用pc0作为数据线SDA,pc1作为,注意使用I/O口时要对其进行初始化。先进行
#define SDA _pc0//数据线
#define SCL _pc1//时钟线
#define SDAC _pcc0//数据线控制端
#define SCLC _pcc1//时钟线控制端
#define SDAIn() SDAC=1// pc0用作输入
开关柜无线测温装置#define SCLIn() SCLC=1// pc1输入
#define SDAOut() SDAC=0// pc0作输出
#define SCLOut() SCLC=0// pc1作输出
)
图2 起始信号的模拟
void IIC_Start() //开始信号
{ SDAOut();//数据总线对应的引脚设置为输出
SCLOut();//时钟总线对应的引脚设置为输出
SDA=1; //单片机开始拉高数据线
日盲紫外探测器SCL=1; //单片机开始拉高时钟线
Delay5us(); //5us的延时,满足开始信号大于4.7us的时序要求 滤波装置SDA=0; //下降沿启动信号
植物伟哥Delay5us(); //5us的延时
SCL = 0; //SCL为低电平时,SDA上数据才允许变化(即允许以后的数据传递)
}
(2)停止信号的模拟,如图3所示。
图3 停止信号的模拟
void IIC_Stop() //停止信号
{ SDAOut();//数据总线对应的引脚设置为输出
SCLOut();//时钟总线对应的引脚设置为输出
SDA=0;//数据线拉低
SCL=1;//时钟线拉高
Delay5us();//满足大于等于4.0us的时序要求
SDA=1; //构建上升沿满足停止信号时序要求
Delay5us();//满足大于等于4.7us的时序要求
}
(3)发送应答信号的模拟,如图4
图4 从机应答的模拟
void IIC_Response()//从机接收到单片机发出的信息,从机要应答
{ SCLOut();//数据总线对应的引脚设置为输出
SDAIn();//时钟总线对应的引脚设置为输出
SCL=1; //拉高时钟线
Delay5us();//适当的延时,等待SDA被拉低,表示应答csmate
HDPE多孔加筋缠绕波纹管SCL=0; //拉低时钟线
Delay5us();///满足大于等于4.0us的时序要求
图1 系统结构图