高级会员

- 积分
- 801
- 金钱
- 801
- 注册时间
- 2012-6-29
- 在线时间
- 0 小时
|

楼主 |
发表于 2012-11-25 19:59:03
|
显示全部楼层
void IIC_Start(void)
{
SDA_OUT_Init();//SDA线输出配置
IIC_SCL=1;//PortC.12
IIC_SDA=1;//PortC.11
delay_us(5);
IIC_SDA=0;//START:when CLK is high,DATA change from High to Low
delay_us(5);
}
//产生IIC停止信号:SCL=1下,SDA上升沿后,IIC停止工作
void IIC_Stop(void)
{
SDA_OUT_Init();//sda线输出
IIC_SCL=1;
IIC_SDA=0;
delay_us(5);
IIC_SDA=1;//STOP:when CLK is high,DATA change from Low to High
delay_us(5);
}
//产生ACK应答----SDA=0的宽度,要比SCL=1的宽度大即可;
int i;
void IIC_Ack(void)
{
SDA_OUT_Init();
IIC_SDA=0;
// for(i=0;i<100;i++){;}//本语句或可省略--为了严谨,建议保留。看时序图。
IIC_SCL=1;
delay_us(5);
}
//不产生ACK应答----SDA=1的宽度,要比SDL=1的宽度大即可。
void IIC_NAck(void)
{
SDA_OUT_Init();
IIC_SDA=1;
// for(i=0;i<100;i++){;}//本语句或可省略--为了严谨,建议保留。看时序图。
IIC_SCL=1;
delay_us(5);
} |
|