IIC读取一个字节函数

2019-07-20 22:52发布

本帖最后由 XHZSCONGE817 于 2016-4-14 08:56 编辑

#define CT_READ_SDA PFin(11)
u8 CT_IIC_Read_Byte(unsigned char ack)
{
        u8 i,receive=0;
         CT_SDA_IN();
        delay_us(30);
        for(i=0;i<8;i++ )
        {
                CT_IIC_SCL=0;                        
                CT_Delay();
                CT_IIC_SCL=1;         
                receive<<=1;
                if(CT_READ_SDA)receive++;   //这句是否可以改为 receive=GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_11);
        }                                          
        if (!ack)CT_IIC_NAck();
        else CT_IIC_Ack();   
         return receive;
}
求问,接收到的数据是从GPIO输入的值,IIC读取一个字节这个函数,接受的数据为何是receive++;初入嵌入式不懂?求解,是不是可以这样写

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
XHZSCONGE817
1楼-- · 2019-07-21 03:10
gf602 发表于 2016-4-14 08:56
if(CT_READ_SDA)receive++意思应该是:读到了0,receive就是零,如果读到了1,receive就将相应位置1.然后循 ...

感觉就是有点怪,这种写法
jermy_z
2楼-- · 2019-07-21 06:22
 精彩回答 2  元偷偷看……
gf602
3楼-- · 2019-07-21 07:53
if(CT_READ_SDA)receive++意思应该是:读到了0,receive就是零,如果读到了1,receive就将相应位置1.然后循环读下一位。
gf602
4楼-- · 2019-07-21 11:08
 精彩回答 2  元偷偷看……
XHZSCONGE817
5楼-- · 2019-07-21 16:38
gf602 发表于 2016-4-14 09:04
虚心学习吧,编程高手的作品应该是效率高吧

噢,原来是提高编译效率,谢谢解答

一周热门 更多>