IIC Read 函数,买了原子的板子有不懂的问题

2019-08-19 19:59发布


u8 IIC_Read_Byte(unsigned char ack)
{
        unsigned char i,receive=0;
    for(i=0;i<8;i++ )
                        {
        IIC_SCL=0;
        delay_us(2);
                    IIC_SCL=1;
        receive<<=1;
        if(READ_SDA)
                                {
                                        receive++;
        }                                       
                     delay_us(1);
                        }                                         
                                if (!ack)
                                        IIC_NAck();//·¢&#203;ínACK
                                else
                                        IIC_Ack(); //·¢&#203;íACK   
                                return receive;

}

上面我有两个地方不明白, 第一个 IIC_Read_Byte(unsigned char ack)   这个ack,在这里做形参吗?有什么用。
                                       第二个是return receive   ,这个值是返回给那个函数调用的。有什么用

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
dingdi
2019-08-20 03:19
super910906 发表于 2017-5-4 08:53
如果需要发送应答信号,入参是1,不用应答,入参是0,return receive是你读到的数据。

我在主函数要怎么写
void main(void)
{
     IIC_init();
     delay_init()
     
     IIC_Start()
     IIC_Send_byte(0x18);
     IIC_Wait_akc();
     delay_us(10);
     
     IIC_Send_byte(0x32);
     IIC_Wait_akc();
     delay_us(10);
     
      IIC_Send_byte(0x21);
     IIC_Wait_akc();
     delay_us(10);
  
     下面开始读代码
     IIC_Start()
     IIC_Send_byte(0x19);
     IIC_Wait_akc();
     delay_us(10);
     
     
     IIC_Read_byte();
     IIC_Read_byte();

}

请帮我看看,这部分read 函数对不对。括号里面要写什么吗?

一周热门 更多>