新闻  |   论坛  |   博客  |   在线研讨会
关于IIC总线的时序
liping09003 | 2013-05-28 09:09:30    阅读:7685   发布文章

 1、产生IIC总线数据传输的起始信号

Void IIC_start()

{

  SDA=1;

  SCL=1;

  Delay();

  SDA=0;

  Delay();

 SCL=0;

}

2、产生IIC总线数据传输的停止信号

Void IIC_stop()

{

Sda=0;

Scl=0;

Delay();

Scl=1;

Delay();

Sda=1;

Delay();

}

3、 等待丛集返回一个相应信号ACK

Void IIC_waitack()

{

SCL=0;

SDA=1;

DELAY();

SCL=1;

DELAY();

While(sda);

SDA=0;

SCL=0;

}

4、 向IIC总线发出一个相应的信号ACK

Void IIC_ACK()

{

 SDA=0;

 Delay();

Scl=1;

Delay();

Scl=0;

}

5、 向从机返回一个非响应信号,迫使数据传输过程中断

Void IIC_NOACK()

{

Sda=1;

Scl=0;

Delay();

Scl=1;

Delay();

}

6、 向IIC总线发送一个字节

Void IIC_Sendbyte(uchar bdata senddata)

{

  Uchar count;

 Sbit datah=senddata^7;

For(count=0;count<8;count++)

{

 SCL=0;

 SDA=datah;

Senddata<<=1;

Delay();

Scl=1;

Delay();

}

Scl=0;

}

7、 向IIC总线上接受一个字节的数据

Void IIC_receivebyte()

{

 Uchar i,temp;

Uchar bdata rdata;

Sbit rdatal=rdata^0;

Sda=1;

For(i=0;i<8;i++)

{

Scl=0;

Delay();

Scl=1;

Delay();

Rdatal=sda;

Rdata<<=1;

Sda=1;

}

Iicdata=rdata;

}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
与电共舞,爱电一生
推荐文章
最近访客