求高人帮我看看iic的问题,谢谢!

2019-03-24 19:33发布

最近刚接触IIC协议,这是个模拟协议,我在网上看了个程序段,有点不太明白。iic协议说主器件发送 第一个字节后,要等待从器件应答,然后再进行第二个字节数据发送,但是这个程序段里面看不出来, 为什么不查询呢? 。 。 。 /**************************************
接收应答信号
**************************************/
bit AT24C04_RecvACK()
{
    SCL = 1;                    //拉高时钟线
    Delay5us();                 //延时
    CY = SDA;                   //读应答信号                SCL = 0;                    //拉低时钟线
    Delay5us();                 //延时     return CY;                  //此处返回值到cy,可以明白。但是返回的值怎么判别从器件应答了呢?
} /**************************************
向IIC总线发送一个字节数据
**************************************/
void AT24C04_SendByte(BYTE dat)    //dat=0xa0=1010 0000
{
    BYTE i;     for (i=0; i<8; i++)         //8位计数器
    {
        dat <<= 1;              //移出数据的最高位
        SDA = CY;               //送数据口          CY为进位标志,0X0A左移时,产生进位CY=1,不产生进位CY为0
        SCL = 1;                //拉高时钟线
        Delay5us();             //延时
        SCL = 0;                //拉低时钟线
        Delay5us();             //延时
    }
    AT24C04_RecvACK();     
} 。 。 。
  此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
abo6016
2019-03-25 14:55
额。。难道是我的表述有问题??= =
他的问题是“返回的值怎么判别从器件应答了呢?”
我的回答是“数据线被拉低表示正常应答”
我觉得我的表述没有问题啊。。。。

一周热门 更多>