本程序是基于合泰单片机的 ,如果需要移植于其他单片机只需稍微修改即可
模拟IIC(I2C)时序,C语言程序
#include "ht46R65.h"
#define SDA _pa0 //数据线
#define SCL _pa1 //时钟线
#define SDAC _pac0 //数据线控制端
#define SCLC _pac1 //时钟线控制端
#define SDAIn() SDAC=1 //输入
#define SCLIn() SCLC=1
#define SDAOut() SDAC=0 //输出
#define SCLOut() SCLC=0
#define Nop() _delay(1) //一个指令周期(1uS )
#define uint8 unsigned char
uint8 ack; //应答
void StartI2c()
{
SDAOut();
SCLOut();
Nop();
SDA=1; //发送起始条件的数据信号
Nop();
SCL=1;
Nop(); //起始条件建立时间大于4.7us,延时
Nop();
Nop();
Nop();
Nop();
SDA=0; //发送起始信号
Nop(); //起始条件锁定时间大于4μs
Nop();
Nop();
Nop();
Nop();
SCL=0; //钳住I2C总线,准备发送或接收数据